DEV Community

Cover image for I built 79 browser tools that never upload your data — here's why client-side matters
Rhein
Rhein

Posted on

I built 79 browser tools that never upload your data — here's why client-side matters

Every developer has hit this: you need to resize an image, decode a JWT, or format a messy JSON blob. So you search "online [thing]", land on some tool, and… it wants to upload your file to a server first.

For a random stock photo, fine. For a customer CSV, a production JWT, or a screenshot of an internal dashboard? You just handed a stranger's server your data.

I got tired of that, so I built SmartTools — 79 small, single-purpose tools that do all the work in your browser. Nothing is uploaded. Ever.

The rule: the data never leaves the tab

Open any tool, open your browser's Network tab, and use it. You'll see no upload request. That's the whole design constraint:

  • Image tools (resize, crop, compress, convert JPG/PNG/WebP, favicon, colour-palette extraction) run on a <canvas>. The file is read with FileReader, drawn, re-encoded, and handed back — the bytes never touch a network.
  • Text & dev tools (JSON formatter, Base64, JWT decode, hash, regex tester, URL encode, cron parser, UUID, number-base) are plain JavaScript on the string you paste.
  • Calculators (finance, health, math) are just arithmetic on your device.

Because there's no server round-trip, the tools also work offline after first load, and there are no accounts, no rate limits, and no "upgrade to process files over 5 MB".

Why this is more than a privacy nicety

A few things fall out of the client-side approach that genuinely surprised me:

  • The JSON formatter uses your browser's own JSON.parse. If it says your document is valid, every runtime built on the same spec parses it too — no lenient validator quietly accepting a trailing comma that breaks in prod.
  • The UUID generator uses crypto.getRandomValues, not Math.random. That distinction matters the moment a UUID becomes a token instead of a row id — predictable randomness is a real breach class.
  • Image conversion strips EXIF/GPS as a side effect of redrawing on a canvas. Handy when you're about to post a phone photo somewhere public.

None of that needs a backend. It's all sitting in the browser already; most "online tools" just don't use it.

The honest trade-offs

Client-side isn't free of limits:

  • Big images hit browser memory/canvas caps (a 50 MP photo is ~200 MB decoded before you even encode).

The honest trade-offs

Client-side isn't free of limits:

  • Big images hit browser memory/canvas caps (a 50 MP photo is ~200 MB decoded before you even encode).
  • There's no server to do heavy lifting like OCR or real video transcoding.
  • You're trusting the page's JavaScript — but that's inspectable, and "no network request" is verifiable in a way "we delete your file after an hour" never is.

Free and multilingual

79 tools, 7 languages (EN/DE/ES/FR/IT/NL/UK), no sign-up. Every calculator's maths is cross-checked against an independent implementation before it ships, because a calculator that's confidently wrong is worse than none.

👉 smart-tools.xyz

I'd genuinely like feedback — especially: which tool would you want next? I pick what to build from real demand, so tell me what you keep googling.

Top comments (0)