FFmpeg in your browser

For when a preset isn’t enough. Drop a file, type any FFmpeg flags, get the output back.

+

drop a video here

or click to choose

How this works

Your file is written into FFmpeg's virtual filesystem as INPUT (with your real extension preserved — e.g. input.mov). The flags you type are passed to FFmpeg with -i input.<ext> automatically prepended. The output file you name has to match the actual output filename in your flags.

Examples

H.264 at CRF 28:

-c:v libx264 -preset veryfast -crf 28 -c:a aac -b:a 128k output.mp4

Crop to a square 720×720 centered:

-vf "crop=720:720:(iw-720)/2:(ih-720)/2" -c:a copy output.mp4

Concat two videos (only works with same codec):

Not supported in this single-file textarea — use the Merge page.

Limitations

FAQ

Where does the input file live?

In FFmpeg's MEMFS at input.<ext>. So if you dropped a .mov, it's at input.mov. You can reference it explicitly with -i input.mov, or just type your flags after it — the runner adds -i input.mov automatically if you don't.

What codecs are available?

The single-thread LGPL build of FFmpeg 0.12.6. Run -codecs through it if you're curious about specifics — we don't ship the full -encoders list here.

Does the file get uploaded anywhere?

No. Open this page, turn off your wifi, then try a file — it still works. That's the test.

What's the maximum file size?

Browser memory is the limit. WebAssembly caps at 2–4 GB per file. Most laptops handle 1080p videos under a gigabyte comfortably.

Why is it slow on my phone?

FFmpeg-WASM runs on your CPU, not hardware video encoders. Phones have less CPU, so encoding takes longer.

Can I cancel mid-encode?

Yes. The Cancel button terminates the worker immediately. You'll wait a few seconds the next time you start.