Convert video online, without uploading it
Open a MOV, MKV, WebM, AVI or MP4 and export it as MP4, MKV, MOV or WebM. The conversion is a real re-encode done by FFmpeg inside this browser tab — the file never touches a server, there is no account and nothing is watermarked.
Drop your video here
or click to browse — MP4, MKV, MOV, WebM, AVI and more
Pick a conversion
Each page below has the editor pre-set to the right output and explains what is actually inside that kind of file, what changes on the way out, and when you would be better off not re-encoding at all.
Any other pairing works from the same Output format control — MKV to MOV, WebM to MKV, and so on. These six are simply the ones people ask for.
What "convert" means here
Two things happen, and it is worth separating them. The container changes — the wrapper that the extension names, which holds the streams and indexes them in time. And the streams inside are re-encoded: the video is decoded to raw frames and compressed again, and so is the audio.
For MP4, MKV and MOV output the new encode is H.264 video with AAC audio — the combination that plays on phones, TVs, browsers, editors and every social platform. For WebM output it is VP8 video with Opus audio, because those are the codecs the WebM container is defined around. Three of the four outputs are therefore the same encode in a different wrapper; WebM is the only genuinely different one. The formats page goes through the containers and codecs in detail.
Because the file passes through a filter graph, the same pass can also cut a section out, speed one up, cap the resolution or drop the audio. When you have queued no edits and only changed the format, resolution or mute setting, the apply button reads "Convert video"; with edits on the timeline it reads "Apply All Edits". Either way the video is encoded at most once. If mute is the only change and the output is MP4, MKV or MOV, the editor first tries a lossless stream copy and re-encodes only when the source codec cannot go in that container.
When a converter is the wrong tool
If both containers can hold the codecs your file already uses, you do not need to re-encode anything. MOV and MP4 are both members of the ISO base media family and both carry H.264 and AAC, so an H.264 MOV becomes an MP4 with a lossless remux that copies the streams into the new wrapper:
ffmpeg -i in.mov -c copy out.mp4 That takes seconds, loses nothing, and needs FFmpeg installed on a computer. The same trick works for MKV to MP4 when the MKV holds H.264 and AAC, and for MP4 to MOV almost always. It almost never works for anything involving WebM, whose codec set barely overlaps with MP4's in practice (VP9 and AV1 can technically sit in MP4, but almost nothing that produces a WebM does that), and it rarely helps with AVI, whose codecs are ones nothing modern plays even after rewrapping.
Almost everything this site does is a fresh encode: a cut, a speed change or a
resolution cap runs through a filter graph, and a stream that is being filtered
cannot be stream-copied. The single exception is the one described above — if
mute is the only change you have made and
the output container is MP4, MKV or MOV, the editor tries -c:v copy -an
first. That applies even when the container is changing, so a mute-only MOV to
MP4 really is a lossless remux, and it falls back to the full re-encode only when
the source codec cannot live in the target container.
The FFmpeg guide
has the command-line versions;
this guide
explains the trade in full.
The honest notes
It is a lossy re-encode
Video is written with libx264 at the ultrafast preset and CRF 28 (or VP8 at roughly 1 Mbps for WebM). That is visually transparent on ordinary footage and not lossless. ultrafast spends bits to save time, so the output is sometimes larger than the input.
One engine download
The first conversion fetches the FFmpeg WebAssembly engine, roughly 32 MB. The browser caches it, so later runs start immediately. When SharedArrayBuffer is available the multi-threaded core is used and encodes run across all your CPU cores.
Everything happens in RAM
The input file, the engine and the output all live in the memory of the tab. That is why there is no size cap other than your device, and also why a very large file on a low-memory phone can fail where a desktop is fine.
No upload
The video is never transmitted. The page does load cookie-less analytics that see a page view and never the file — the privacy page states exactly what is recorded.
One video stream, one audio stream
Extra audio languages, subtitle tracks and metadata tracks are not carried through. Keep the original if those matter.
How it works walks through the pipeline and the privacy page for the editor lists what leaves your device and what does not.
Questions about converting video online
Is this a lossless video converter?
Which formats can I convert between?
Is my video uploaded to convert it?
Why is the converted file bigger than the original?
Is there a size or length limit?
Guides on re-encoding and remuxing
Working out why a file will not open in the first place, the command-line remux that avoids a re-encode, why a filtered stream cannot be copied, and what to expect from very large files.
- Why a video will not play, and how to fix itA file that will not open is usually a codec your player cannot decode, not a broken video. How to tell which, and the conversion that fixes most of them.
- FFmpeg: trim a video without re-encodingThe exact -ss, -t and -c copy commands for a lossless trim, why the flag order matters, and how to cut a section out of the middle with the concat demuxer.
- How to trim a video without losing qualityTrimming only loses quality if the video gets re-encoded. Here is when that happens, when it does not, and the trade you are making either way.
- Trimming large video files online: what the real limit isServer-based tools cap file size because your upload costs them money. A browser tool's ceiling is the WebAssembly heap; here is how to work within it.