the short version
There is no server.
FFmpeg is compiled to WebAssembly and shipped to your browser as a file. It runs in a worker thread on your machine, reading and writing to a virtual filesystem that only exists in the tab.
What happens when you press Run
- The browser downloads
ffmpeg-core.wasm, about 32 MB, and caches it. This happens once, the first time you run anything. - Your file is read into memory with the standard File API, the same mechanism any page uses to let you attach something, except nothing is attached to a request.
- The bytes are written into an in-memory filesystem inside the WebAssembly module.
- FFmpeg runs with the arguments shown in the command panel, on a worker thread, using your CPU.
- The output file is read back out and turned into a blob URL, which is what the download button points at.
Open your browser's network tab while a job runs. After the first load of the WebAssembly file, there is nothing there.
How to verify it yourself
- Load any tool page, then disconnect from the network and run a conversion. It works.
- Watch the network panel in developer tools during a run. No requests are made.
- Read the page source. The whole site is static files and two scripts, neither minified.
The honest tradeoffs
| What you give up | Why |
|---|---|
| Speed | Your laptop is slower than a rented encoder, and this build runs on a single thread. h.264 is quick; VP9 and h.265 are not. |
| Very large files | Input and output both live in the tab's memory. Multi-gigabyte files can exhaust it, particularly on phones. |
| A 32 MB first load | That is FFmpeg itself. It is cached afterwards, and it is why the tools keep working offline. |
| Some codecs | This build reads h.264, h.265, VP8, VP9, Theora, MPEG-4, MP3, AAC, Opus, Vorbis and FLAC. It writes all of those except VP9, whose encoder is not stable in WebAssembly, so WebM output uses VP8. There is no HEIC, no AV1 and no hardware acceleration. |
The caption tools
Automatic captions add a second engine alongside FFmpeg: OpenAI's Whisper speech recognition model, converted to ONNX and executed by Transformers.js on the same CPU. The sequence is FFmpeg pulling the audio out of your file as 16 kHz mono, Whisper turning that into words with a start and end time for each one, the page assembling those into a subtitle file, and FFmpeg burning it back into the picture. Only the second step is new; the rest is machinery the site already had.
The model weights are 145 MB for the fast model and 278 MB for the accurate one. They are fetched with an ordinary request and kept in the browser's cache, so nothing lands in your downloads folder and you are never asked to save a file. Every run after the first starts immediately.
Why the command is always visible
Every tool here is a form that writes an FFmpeg command. Showing that command means you can see exactly what is about to happen to your file, copy it into a terminal to run the same job on a thousand files, and learn the flags by watching them change as you move the controls. There is nothing to hide behind the buttons.
Does anything get collected?
No file data, ever. It cannot be, because there is no upload. See privacy for the rest.