Stop Paying Subscriptions for Your Own Resume 📄
Source: Dev.to
We’ve all been there. You spend an hour meticulously crafting your resume on a “free” online builder, only to hit a massive “Pay $19.99 to download PDF” button at the very end.
Worse yet, many of these platforms are moving toward subscription models. Why do I need a monthly subscription for a document I update once or twice a year? Is the goal to keep me perpetually job‑hunting?
I decided I’d had enough. I wanted a resume that was truly free, private, and lived in my own version control.
The Problem with “Free” Resume Builders
- Paywalled Features: “Free” often means a one‑page limit or only the boring templates.
- The Download Trap: Viewing your resume is free; owning the PDF is not.
- Privacy: Your professional data is stored on a centralized server you don’t control.
- Tooling Overkill: Even great open‑source projects often require
npm, CLIs, or complex build steps just to see a preview.
My Solution: The “Really Free” Resume
I built a simple, zero‑tooling web resume template that follows a Data‑Driven, No‑Build philosophy:
- Separation of Concerns: All your data lives in a single
resume.jsonfile. - Vanilla Everything: No React, no Tailwind, no Webpack. Just pure HTML5, CSS3, and vanilla JavaScript.
- Print‑First Design: The CSS is optimized specifically for the “Print to PDF” feature built into every modern browser.
- Version Controlled: Since it’s just code and JSON, you can host it on GitHub Pages for free and keep your history in Git.
How it Works
The logic is intentionally dead‑simple. When you load the page, a small script fetches your resume.json, parses the data, and injects it into the DOM.
1. The Data (resume.json)
You don’t touch the HTML structure for updates. You just edit a JSON object:
{
"personalInfo": {
"name": "Jawahar Vignesh",
"title": "Senior Software Engineer"
},
"experience": [
/* ... */
]
}
2. The Delivery
Because modern browsers enforce strict CORS policies, you can’t just double‑click index.html to load the JSON. A simple one‑liner serves the project locally:
# Python
python3 -m http.server 8000
# Node.js
npx serve
3. The “Export”
Forget proprietary PDF generators. Open your browser, hit Ctrl + P, and “Save as PDF.” The CSS media queries handle margins, fonts, and page breaks so the output looks professional and clean.

Why You Should Care
- Your data is portable. Easily transform
resume.jsonfor other tools later. - You own the source. No one can ever charge you to “unlock” your own work experience.
- It’s a portfolio piece. Shows you understand clean code, data structures, and the power of the platform.
Check It Out
I’ve open‑sourced the template on GitHub. Feel free to fork it, swap in your details, and never pay for a resume builder again.
Pro Tip: Since this is a zero‑tooling, plain HTML/CSS project, it’s incredibly easy to tweak using AI IDEs or tools (like Cursor, Windsurf, or Copilot). Want to change the color scheme, add a new section, or adjust the layout? Just ask the AI to modify style.css or index.html—the logic isn’t buried under layers of frameworks.
What’s your take? Do you prefer using established tools like JSON Resume, or do you like the “Zero‑Tooling” approach of plain HTML/CSS? Let me know in the comments!