Convert a video
Change the container and codec of any video without sending the file anywhere.
Your file
Drop a file here, or click to choose
It stays on this device. Nothing is sent anywhere.
Settings
Which format should you pick?
| Format | Codecs | Use it for |
|---|---|---|
| MP4 | h.264 + AAC | The safe default. Plays on every phone, TV, browser and editor. |
| WebM | VP8 + Opus | Web pages and chat apps that prefer an open format. Plays in every current browser. |
| MKV | h.264 + AAC | Archiving. Holds multiple audio and subtitle tracks. |
| MOV | h.264 + AAC | Final Cut and older Apple workflows. |
| AVI | MPEG-4 + MP3 | Legacy players and some TV boxes that predate h.264. |
| OGV | Theora + Vorbis | Fully patent-free delivery. Rarely needed now. |
Notes on speed
Everything runs on your own CPU, in one thread, so a long file takes real time. h.264 (MP4, MKV, MOV) is the fastest encoder here by a wide margin. WebM and OGV are slower. If you are converting something over ten minutes, start by dropping the resolution.
Why WebM here is VP8, not VP9
VP9 would produce smaller files, but the VP9 encoder in this WebAssembly build of FFmpeg crashes a frame or two into an encode, a known limitation of running libvpx without threads. Rather than hand you a tool that fails halfway through, WebM output uses VP8, which is stable and considerably faster. Reading VP9 files works perfectly, so WebM to MP4 handles anything you throw at it.
Container and codec, which is the usual confusion
The container is the wrapper the extension names: MP4, MKV, MOV, WebM, AVI. The codec is how the pictures are actually stored inside it, usually h.264, h.265 or VP9. Software can support a container and refuse what is in it, which is why an .mp4 straight off a recent phone sometimes opens as sound with a black picture. That is h.265 inside a container the player understands, and it is a codec problem wearing a container's name.
Getting this right saves time. Media info reads both out of any file in a second, and once you can see them the fix is usually obvious rather than a matter of trying formats until one works.
Converting does not improve anything
Every conversion here decodes the video and encodes it again, which means a generation of loss however careful you are. Nothing can add detail the original encoder discarded, so converting an old, soft, low-bitrate file to a modern format gives you a modern file containing exactly the same soft picture. What conversion buys is compatibility, and usually a smaller file, because newer codecs are more efficient. It never buys quality.
The practical rule that follows: convert once, at the end, from the best source you have. Do the trimming, cropping and grading first, then encode. A chain of conversions compounds the loss at every step, and none of it is recoverable.
Choosing quality
The slider is -crf. 18 is visually lossless and produces large files. 23 is the h.264 default and is right for almost everything. Past 30 the picture starts to soften noticeably, and past 34 it is visible on any screen. If the file is going into an editor and will be encoded again afterwards, use 18 to 20, because the next pass builds on whatever you hand it. If the file is finished and simply needs to be smaller, compress video is the tool with the size-targeting advice.
Common questions
Is there a file size limit?
No hard limit, but your browser has to hold the input and output in memory. Files under about 2 GB are comfortable on a desktop; phones run out of room much sooner.
Does the video get watermarked?
No. This is plain FFmpeg with no post-processing, so the output has nothing added to it.
What does the quality slider actually do?
It sets the constant rate factor (-crf). Lower numbers keep more detail and produce bigger files. 18 is visually lossless, 23 is the h.264 default, and anything past 30 starts to look soft.
Why is WebM slower and larger than MP4?
WebM output uses VP8, which is less efficient than h.264 and than VP9. VP9 encoding is not available because it crashes this WebAssembly build. Use MP4 unless you specifically need an open format.