Quick background: I'm Meet Shah, a solo developer who builds practical tools.
I just launched ZeroServer.tools — 342 free developer utilities that run 100% in your browser.
The one constraint I designed around: nothing you type or upload ever leaves your device. No backend, no logs, no third-party requests.
Most "online tools" work by sending your data to their server, processing it, and returning the result.
That's fine for most things — but I was regularly pasting:
- JWT tokens (which contain auth claims and sometimes PII)
- Hashes of passwords (to verify my hash generators were correct)
- Internal JSON from our API (which contained customer data structure patterns)
- Private encryption keys (to test key formatting tools)
None of that should leave my machine. But I was doing it casually.
ZeroServer.tools is the fix I built for myself.
Formatters: JSON, XML, SQL, YAML, Markdown, HTML, CSS
Converters: JSON↔CSV, JSON↔YAML, image formats, Markdown→HTML, Base64, UUID conversions
Encoders/Decoders: Base64, URL encode/decode, JWT (decode only — client-side), Morse code, Binary↔Text
Cryptography: SHA-1/256/512, HMAC, AES-256, PBKDF2, file hash (drag a file → instant SHA-256 without uploading it), bcrypt, TOTP
Generators: UUID (v1/v4/v5), Lorem ipsum, Password, QR code, Fake data
Text: Sorter, replacer, case converter, TOC generator, markdown renderer
Developer utilities: Regex tester, JSONPath tester, UUID validator, IP subnet calculator, cron expression builder
Calculators: Date difference, scientific, BMI, mortgage, calories burned, fuel cost
The tech that makes it possible
Web Crypto API handles all hashing and encryption:
const hash = await crypto.subtle.digest("SHA-256", buffer);
No external libraries for crypto. It's built into every modern browser.
FileReader + Canvas handle image operations (compression, resize, format conversion) — files stay local.
pdf-lib (WebAssembly) handles PDF merge/split/rotate — compiles to WASM, runs entirely in-browser.
Next.js static export — the whole site is plain HTML + JS files on Cloudflare's edge. There's no server to send data to, literally.
The constraint that kept biting me
Next.js prerenders your components in Node.js at build time. So any code that uses window, document, FileReader, Date.now(), or Math.random() crashes the build.
The rule I followed strictly:
- Pure transforms (format JSON, encode string) →
useMemo — deterministic, SSR-safe
- File reads, canvas, browser APIs →
useEffect — client-only
- "Random" seeded output → deterministic PRNG using
Math.sin(seed) — same result in Node and browser, no hydration mismatch
This discipline means every single tool prerenders correctly and loads instantly.
Check it out
zeroserver.tools — 342 tools, 100% free, 100% client-side.
Open the browser Network tab while using any tool — you'll see zero requests. That's the whole point.
What tool would you reach for if it guaranteed no data uploads?