The Problem
Every time you use a typical online video converter, your file gets uploaded to a remote server. For most people that is mildly concerning. For anyone working in healthcare, law, or finance it can be a compliance violation. HIPAA, GDPR, and internal data policies all have something to say about sending sensitive media to a third party.
I wanted a converter that was truly private — one where the file never leaves the user's machine.
The Solution: FFmpeg + WebAssembly
FFmpeg is the gold standard for media processing. Thanks to Emscripten, it can be compiled to WebAssembly and run inside a browser tab. That means:
- Zero server uploads. The file stays on your device from start to finish.
- Full FFmpeg power. 30+ video and audio formats, codec control, bitrate tuning.
- Works offline once the WASM binary is cached.
How It Works Under the Hood
- The user drops a file onto the page. A
Fileobject is created — no network request. - The file bytes are written into an in-memory virtual filesystem that FFmpeg WASM exposes.
- FFmpeg runs the conversion entirely in a Web Worker, keeping the UI responsive.
- The output file is read from the virtual FS and offered as a Blob download.
At no point does any byte leave the browser. You can verify this yourself by opening DevTools → Network and watching the requests during a conversion — there are none.
Challenges
- WASM binary size. The FFmpeg WASM core is ~30 MB. Lazy-loading and caching with a service worker keeps repeat visits fast.
- Memory limits. Browsers cap WASM memory. Very large files (multi-GB) can hit this ceiling, so I surface a clear error instead of crashing silently.
-
SharedArrayBuffer. Some FFmpeg WASM builds require cross-origin isolation headers (
COOP/COEP), which can conflict with third-party scripts.
Try It Out
The tool is live at getconvertfree.com. It is completely free — no account, no limits, no ads.
If you handle sensitive media and need a conversion tool you can trust, give it a spin. Feedback and feature requests are welcome.
Happy converting.
Top comments (0)