About Convifi

A browser-based tool for converting, compressing, and transforming files — without uploading them anywhere.

What I built and why

I got tired of uploading files to random websites just to convert them. You pick a file, it goes to their server, you wait, you download — and somewhere in that process your file is sitting on infrastructure you know nothing about. For a quick MP4 to MP3 that's annoying. For a meeting recording or a financial document, it's worse.

So I built Convifi. Pick a file, it converts in your browser, you download the result. Nothing leaves your device. No account, no waitlist, no file size nag screens.

How it works

The whole thing runs on WebAssembly — a format that lets compiled native code run inside a browser at near-native speed. I'm not shipping JS ports of these tools; I'm shipping the actual tools compiled to WASM so they run on your hardware directly.

The main engines I'm using:

  • FFmpeg WASM — the same FFmpeg that professional video pipelines run everywhere, compiled for the browser. Handles every video and audio conversion on the site.
  • wasm-vips (libvips) — a professional image processing library, faster than ImageMagick for most tasks. Handles all image conversions and compression.
  • Pandoc WASM — the universal document converter. Powers Markdown, HTML, DOCX, EPUB, LaTeX, and a dozen other document formats.
  • @imgly/background-removal — an AI segmentation model that runs locally to remove image backgrounds without sending your photo anywhere.

The privacy part

Most online converters are upload-and-process services. You send your file, their server converts it, you get the result back. Your file sits on their infrastructure the whole time — subject to their retention policy, their security practices, and whatever their privacy policy actually says in the small print.

I didn't want to build that. Every conversion on Convifi runs inside your browser's sandboxed environment. If you open DevTools and watch the Network tab during a conversion, you'll see the WASM engine load once (then it caches), and then nothing — no upload, no POST request with your file, no server involved at any point. The output is generated in your browser's memory and downloaded straight to you.

This matters most for meeting recordings, medical documents, personal photos, ID scans, and financial files — things that shouldn't be sitting on a stranger's server even temporarily.

Honest tradeoffs

Running heavy software in the browser has real limits, and I'd rather be straight about them:

  • Speed: WebAssembly runs at roughly 10-20% of native CLI speed. Video re-encoding is the most noticeable — a 1 GB MKV might take 5–10 minutes where FFmpeg on the command line would take 2–3. For small files the difference is hard to notice.
  • Memory: Very large files (5 GB+) can exhaust browser memory on some systems. For those, HandBrake or the FFmpeg CLI is a better choice.
  • First load: The WASM engines are big — FFmpeg is ~30 MB, libvips is ~16 MB. They download once and cache, so after the first time everything starts immediately. But there's a short wait the very first time you use each tool.

About me

I'm Kundan. I built this as a personal project — partly to scratch my own itch, partly to see how far WebAssembly can actually go for real-world file manipulation. It's free, no ads, and I don't touch your files.

If something's broken or a format you need isn't supported, find me on GitHub.