Building a Privacy-First File Converter That Runs 100% in Your Browser

Published: (February 17, 2026 at 02:57 PM EST)
2 min read
Source: Dev.to

Source: Dev.to

Most online file converters upload your files to a server. But what if you could convert files without them ever leaving your device?

That is exactly what OmniConvert does — 94 file conversions and 118 unit conversions, all running client‑side in your browser using WebAssembly.

The Tech Stack

  • Astro – static site generation (4,000+ pages, 8 languages)
  • FFmpeg.wasm – audio/video conversions (single‑thread mode, no SharedArrayBuffer needed)
  • Canvas API – image format conversions
  • pdf-lib – PDF operations
  • SheetJS – spreadsheet conversions
  • Tailwind CSS – dark‑mode‑only UI

Why Client‑Side?

  • Privacy – Files never leave your device. No server, no upload, no data retention.
  • Speed – No upload/download overhead. Convert a 50 MB video instantly.
  • Cost – Zero server costs. Runs on Cloudflare Pages (free tier).
  • Offline – Works offline once loaded (PWA).

The Hard Parts

FFmpeg.wasm Initialization

FFmpeg.wasm is ~25 MB. We lazy‑load it only when a user actually needs audio/video conversion, and cache it in a singleton.

Cross‑Origin Workers

FFmpeg.wasm needs Web Workers, which have strict cross‑origin requirements on Cloudflare Pages. We solved this with a custom classic Blob Worker bridge.

iOS Safari Downloads

Safari does not honor the download attribute on tags for blob URLs. We use a programmatic click on a dynamically created element instead.

Results

  • 94 file conversions (image, audio, video, document, spreadsheet)
  • 118 unit conversions across 13 categories
  • 8 languages (en, zh, ja, es, ko, pt, fr, de)
  • Lighthouse: SEO 100, Best Practices 100
  • Zero server costs

Try it at tools.sagasu.art — feedback welcome!

0 views
Back to Blog

Related posts

Read more »