Try this: search "compress image to 20kb" or "merge pdf" and open the first few results.
You'll find the same pattern almost every time. Pick a file, wait for the upload, wait for a "processing" bar, then hit a signup wall, a watermark, or a "free limit reached" message. And the whole time, your file (a passport scan, a signed contract, a payslip) is sitting on somebody else's server. Most of these sites promise to delete it after an hour. You can't check.
That's the gap I wanted to fill: tools that do the job on your own device, so there is nothing to upload, nothing to sign up for and nothing to wait for. So I built K4Converter, a set of about two dozen free tools that run entirely in the browser.
What's in it
- PDF: merge, sign, and turn photos into one PDF
-
Images: HEIC, PNG, JPG, WebP, SVG and JFIF conversions, plus a multi-size
.icomaker for favicons - Resizer with a size target: "make this under 20 KB" instead of guessing pixels
- Everyday calculators: tip, discount, military time, Roman numerals, °C/°F, each with the exact-answer tables people actually search for
None of it needs an account, and none of it uses a backend for the conversion. You can turn your Wi-Fi off after the page loads and most tools keep working. That's also a good test for any converter you use: if it still works offline, your file never left your machine.
The parts that were harder than I expected
1. Getting under a file-size limit without wrecking the photo. Forms say "photo must be under 50 KB". Shrinking the pixels alone turns your photo into a thumbnail, so the resizer first searches for the JPEG quality that fits, and only scales the pixels if quality alone can't get there. A 374 KB photo came out at 19.6 KB at its full 1600×1200 size.
// binary-search JPEG quality between 0.35 and 0.92
for (let k = 0; k < 6; k++) {
const mid = (lo + hi) / 2, b = await toBlob(canvas, "image/jpeg", mid);
if (b.size <= target) { lo = mid; best = b; } else hi = mid;
}
// still too big at 0.35? scale pixels by ~sqrt(target / size) and retry
2. A PDF is just text. Merging photos into a PDF sounds like it needs a library. It doesn't: for JPEGs, each page is three small objects, and the photo goes in with /Filter /DCTDecode, so the original bytes are embedded untouched. I wrote the whole writer by hand (about 30 lines) and checked the output with qpdf --check.
3. Real .ico files. Renaming logo.png to logo.ico doesn't work. An ICO is a small header plus one directory entry per size, and since Windows Vista each entry can hold a PNG. So the tool draws your logo at 16, 32, 48 and 256 px and packs them into one file.
4. A "converter" that shouldn't convert. A .jfif file is just a JPEG with another extension. Re-encoding it would only lose quality, so the tool checks the first three bytes (FF D8 FF) and, if it really is a JPEG, relabels the original bytes as .jpg. The output is byte-for-byte identical.
A mistake that taught me to test by hand
My "Copy link" button looked perfect and silently did nothing on desktop. Every automated check passed. I only found out by actually pasting the result. Since then I test the boring things by hand.
What I'm still figuring out
Honestly, the hard part isn't building tools, it's getting anyone to find them. The big converter sites have years of head start, so I'm focusing on the specific questions they answer badly: exact answers like "180 °C in Fahrenheit" or "30% off $35", and "resize to under 20 KB".
If you try it, tell me what breaks, or which format you wish worked in the browser. I read every comment.
Top comments (0)