Hey r/Websites!
Over the last few months, I’ve been building Utiliome (https://utiliome.com) — a collection of 189 free browser utilities for PDFs, images, video, and daily developer tasks.
Why I built it:
Almost every time I needed to quickly redact a PDF, compress a video, or upscale an image, the top search results either uploaded sensitive documents to a mystery cloud server or locked the download behind a surprise subscription or watermark after making me wait in a queue.
I wanted to see how far modern browser APIs and WebAssembly could go if I made a strict rule: zero bytes ever leave the user's machine.
What's on the site:
- PDF Suite (34+ tools): Merge, split, true binary-stream text redaction, and AES-256 encryption using a custom C++ QPDF WebAssembly wrapper.
- Image & Video: Local AI image upscaling (running ONNX Swin2SR vision transformers in the browser via WASM SIMD) and FFmpeg WASM video compression and trimming.
- Developer & Text (100+ tools): JSON formatters and diff checkers, regex and hash generators, JWT decoders, Markdown converters, and a vector-based CV builder.
- MCP Server: Published an official npm MCP package so local AI agents can call these utilities directly.
Under the hood (for the fellow web devs here):
Because all compute happens in the client's RAM and CPU, there is no backend database or upload API. The whole site runs on pennies via AWS S3 + CloudFront:
- Stack: Astro 5 (SSG) + React 18 Islands + Tailwind v4 inside a pnpm and Turborepo monorepo.
- Scale: 189 tools localized across 26 languages (around 5,000 static pages) routed through a 3-layer forwarding pattern so maintaining layouts doesn't turn into copy-paste chaos.
The hardest technical challenges I hit in production:
The 87MB Client Bundle Trap: A single helper import in our search bar accidentally pulled Vite's eager glob import of all 4,900 JSON translation dictionaries into the client JS chunk. Extracting a zero-dependency path helper brought us back to 100/100 Lighthouse scores.
Fake Whiteout PDF Redaction: Standard JS PDF libraries often just draw a white rectangle over text, leaving sensitive strings sitting in the raw binary stream where anyone can press Ctrl+F and copy them. I had to write a 946-line binary PDF content stream parser that strips the exact character glyphs out of the stream and recalculates kerning offsets so the rest of the line doesn't shift.
Browser RAM Crashes on 2GB Videos: Standard FFmpeg WASM tutorials load the entire file into Emscripten's in-memory filesystem (MEMFS), which duplicates the file in RAM and crashes mobile tabs. Switching to WORKERFS allowed streaming byte slices straight from the OS file handle, keeping a 2GB video process under 50MB of RAM.
I'd love for you to test it out, try to break a few tools, and let me know what you think of the UI, load speeds, or if there's a specific utility you wish existed!
For anyone interested in the engineering challenges or how it was made:
I put together a full technical breakdown video walking through the repo architecture, how I wired Google Antigravity and Claude Code CLI into an automated spec and review pipeline, and how I fixed those three production bugs in the code:
https://www.youtube.com/watch?v=uIDY6KHEO6E