Every time I needed to edit a PDF or convert an image online, the same thing happened. Upload my file to some random server, create an account, hit a paywall after two tries, and wonder who's looking at my documents.
I got tired of it. So I built my own.
Meet ConvertKr
It's a set of 11 free browser-based tools for working with PDFs and images. The catch? There is no catch. No signups, no watermarks, no file limits.
But the part I care about most — your files never leave your device. Everything runs locally in your browser using JavaScript. My server never sees your documents. Not temporarily, not for processing, not at all.
The tools
- PDF Editor — text, images, signatures, highlights, redactions
- Merge PDF and Split PDF
- PDF to Image and Image to PDF
- Image Convert, Compress, Crop and Resize
- Image Watermark
- Background Remover
- QR Code Generator
How is this possible without a server?
Modern browsers are way more powerful than most people give them credit for.
PDF.js handles PDF rendering — the same library Firefox uses internally. pdf-lib generates new PDFs with your edits baked in. The Canvas API handles all image operations — converting formats, compressing, cropping, watermarking. For background removal, an ML model runs directly in the browser.
No frameworks either. Just vanilla JavaScript. Each tool is a standalone page that loads fast and does one thing well.
The hardest part
The PDF editor was by far the most complex. You're essentially building a layer system on top of a rendered PDF page. Every annotation — text, image, signature, drawing — needs to be positioned in CSS pixels on screen, then converted back to PDF coordinate points when generating the final file. Getting that math wrong by even a few pixels means signatures end up in the wrong spot.
I also spent way too long debugging an ArrayBuffer detachment issue. When PDF.js reads your file, it detaches the buffer so pdf-lib can't use it anymore. The fix was simple once I found it — store the data as a Uint8Array immediately and pass copies to both libraries — but finding the cause was painful.
Why I'm sharing this
Two reasons. First, I genuinely think more developers should consider client-side processing for file tools. The browser can handle it, your users get real privacy, and you save on server costs. It's a win all around.
Second, I want feedback. I'm not a designer and I built this mostly alone. If something looks off, feels broken, or could be better — I want to know.
I'm also actively adding more tools. If there's something you wish existed that doesn't upload your files to the cloud, tell me. I might build it next.
Check it out at convertkr.com — would love to hear what you think.
Top comments (0)