Most "free" online tools work the same way: you upload your file to someone's server, wait, and then hit a signup wall or a watermark after the second use. For things like CNIC/passport photos, CVs and scanned documents, uploading to a random server also isn't great for privacy.
So I built 14FreeTools — a set of 14 small tools where the processing happens inside your browser. Your images and documents are never sent to my server.
The tools
Image
- AI Background Remover — transparent PNG or plain white background
- Image Compressor — plus exact-size targets like compress to 20KB and 50KB for job and admission forms
- Image Resizer
- Image to PDF — JPG, PNG, WebP, TIFF and iPhone HEIC
Text & other
- Translator (50+ languages), Word Counter, Case Converter, Password Generator, Age Calculator
How it works (no backend for files)
The whole site is static HTML/CSS/JS. Each tool loads the library it needs from a CDN and does the work on the user's device:
- PDF rendering (PDF → JPG):
pdf.jsrenders each page to a canvas, then the canvas is exported as JPG. - Merge / split PDF:
pdf-libcopies pages between documents entirely in memory. - Image → PDF:
jsPDF, withheic2anyfor iPhone HEIC andUTIFfor TIFF files. - Word ↔ PDF:
mammothconverts .docx to HTML, thenhtml2pdf.jsturns it into a PDF; the reverse direction uses thedocxpackage. - Compress to an exact size: a binary search over JPEG quality (and dimensions if needed) using
canvas.toBlob()until the file is just under the target, e.g. 20 KB. - Background removal:
transformers.jsruns a segmentation model (ORMBG, Apache-2.0) with ONNX Runtime on WebAssembly. The model downloads once and is cached by the browser.
The one exception is the translator: translating text needs a translation service, so the text you type is sent to the MyMemory API. Files are never uploaded.
Lessons learned
- WebGPU isn't always ready. My first version of the background remover used WebGPU and crashed on some machines with an unsupported
ceil()in a MaxPool shape. Forcing the WASM backend was slower but worked everywhere. - Load scripts in the right order. Inline tool scripts were running before my shared helper file loaded. Moving the helper into the
<head>fixed it. - One page per search intent. People don't search "image compressor", they search "compress image to 20kb for PPSC form". Separate landing pages for those exact needs made the site much more useful.
- Mobile performance matters. Removing heavy hero animations and using
font-display: optionalfixed most of my mobile Lighthouse issues.
Try it and tell me what's broken
It's free, there's no account, and there's no watermark: https://14freetools.com
I'd love feedback from other devs — what tool would you add next, and does anything break on your browser or phone?