Building a tool that people actually use is one of the best feelings for a developer. I recently set out to solve a problem that annoys almost everyone: "Free" CV and resume builders that hide your download behind a paywall after you've spent an hour typing. I decided to build makefreecv.com using a completely "client-side only" code. No databases, no hidden costs, and no "pro" subscriptions. Just pure JavaScript, CSS, and the power of the browser.
The Challenge of Going Full Client-Side
The biggest hurdle in building a CV maker without a backend is handling the document generation. Most services send your data to a server, generate a PDF using something like Puppeteer, and send it back. To keep my tool 100% free forever, I had to eliminate server costs. By using native JavaScript, jspdf, and html2canvas, the user’s browser does all the heavy lifting. This means your private data never even leaves your computer, which is a massive win for privacy.
Cracking the Font Problem with Base64
One of the trickiest parts of using jspdf is handling custom fonts. If you want your CV templates to look professional, think Roboto, Playfair Display, or Montserrat, you can't just link a Google Font and hope for the best. To make sure the PDF export matched the on-screen design perfectly, I encoded my font files into Base64 strings and stored them within a dedicated JavaScript configuration file.
This approach allows jspdf to "embed" the fonts directly into the PDF structure instantly. Here is a quick look at how I registered those fonts:
import { montserratBase64 } from './fonts/montserrat.js';
const doc = new jsPDF('p', 'mm', 'a4');
// Adding the custom font to the VFS (Virtual File System)
doc.addFileToVFS('Montserrat-Regular.ttf', montserratBase64);
doc.addFont('Montserrat-Regular.ttf', 'Montserrat', 'normal');
// Now you can use it!
doc.setFont('Montserrat');
doc.text("Your Professional Experience", 10, 10);
Flexibility: Resizing, Theming, and Multi-page Support
I wanted the tool to feel like a desktop publishing app but in a browser tab. By leveraging CSS Variables (Custom Properties), I made it possible for users to change theme colors on the fly. When a user picks a new color, I simply update the --primary-color variable at the root level, and the entire template—from borders to headings—transforms instantly.
Handling multiple pages was another puzzle. I built a logic where users can dynamically add or remove "page containers." When it’s time to export, the script loops through each active container, captures it with html2canvas, and adds a new page to the jspdf instance. This gives the user total control over the length of their CV without breaking the layout.
Making it ATS-Friendly
A common myth is that "designed" CVs aren't ATS-friendly. Because I used standard HTML structures for the templates, the text remains selectable and parsable. By focusing on clean, semantic layouts rather than complex graphics, I ensured that the exported PDFs can be easily read by Applicant Tracking Systems while still looking great to human recruiters.
From Side Project to Daily Traffic
The most rewarding part of this journey hasn't just been the code, but seeing the numbers grow. Because the tool is truly free and doesn't require a login, it has gained a life of its own. I’m now seeing a steady stream of visitors every single day. People are tired of being "nickel and dimed" for basic career tools, and word-of-mouth has been my biggest growth engine.
When you build something that genuinely solves a pain point without any barriers to entry, the community notices. It’s a great reminder that you don’t always need a massive marketing budget or a complex backend to create something that provides real value and attracts consistent traffic.
Why This Matters
By sticking to native JavaScript and CSS, the site is incredibly fast and works on almost any modern browser. There’s no login required, no "credits" to buy, and no annoying emails. It’s just a developer-to-user gift to help people get jobs without the headache of subscription traps.
If you are looking to build your next resume or just want to see how the templates handle different layouts, feel free to try out the free CV maker and let me know what you think of the export quality!

Top comments (1)
Also don't forget to checkout the collection of templates used for this tool - Free Resume Templates