Video formats, and which one is smallest

You can compress to MP4, MOV, MKV or WebM, and feed in essentially anything FFmpeg can read. This page explains what each container is actually for, so you can pick an output on purpose rather than by habit.

Container versus codec. A format like MP4 is a container — a box. The codec is what compressed the picture inside it: H.264, VP9, HEVC. Two MP4 files can be wildly different sizes at the same resolution because of what is in the box, not the box itself. When people ask which format compresses best, the codec is nearly always the thing they mean.

The container decides which codecs you are offered. MP4 and MOV take H.264 or H.265, MKV takes either of those or VP9, and WebM takes only VP9, because those are the combinations the muxers accept. Audio is AAC everywhere except WebM, which requires Opus. Fast mode substitutes the MPEG-4 encoder when H.264 is selected, and leaves the other two alone. H.265 and VP9 are both slow enough in WebAssembly to be worth thinking about before you pick them.

What is the smallest video format?

The one with the newest codec inside it. At the same visual quality, AV1 makes the smallest files of anything in common use, VP9 and H.265 come next and trade places depending on the footage, and H.264 sits behind them. Older codecs are much further back: the DivX and Xvid inside an old AVI need a good deal more bitrate than H.264 for the same picture, and MJPEG, which stores every frame as a separate JPEG, is larger still. H.266 goes further than AV1 on paper, but almost nothing plays it yet.

The container hardly figures. Put the same H.264 stream in an MP4, an MKV and a MOV and the three files come out within a fraction of a percent of each other. 3GP looks like the answer because 3GP files are tiny, but that is the low resolution and low bitrate of early phone video, not anything the wrapper does.

What that means here: there is no AV1 encoder in this build, so the smallest files it can write are H.265 in MP4, MOV or MKV, or VP9 in WebM or MKV. H.265 lands roughly a third smaller than H.264 at the same quality. Both are several times slower to encode in a browser tab, and neither plays as widely, which is why H.264 in MP4 stays the default.

And the codec is not the biggest lever anyway. Bitrate and resolution decide the size far more: taking 4K footage down to 1080p removes three quarters of the pixels, which usually saves more than moving from H.264 to H.265 ever will. If you have a hard limit, target-size mode hits the same number whichever codec you choose; what the codec changes is how good the video looks at that size.

Quick reference

Format Codecs In Out Best for
.mp4 H.264 or H.265 video / AAC audio Yes Yes Best for sharing
.mov H.264 or H.265 video / AAC audio Yes Yes Best for Apple workflows
.mkv H.264, H.265 or VP9 / AAC audio Yes Yes Best for archiving
.webm VP9 video / Opus audio Yes Yes Best for the web
.avi Various (input only) Yes — Input only
.wmv WMV / WMA (input only) Yes — Input only
.flv H.263 / Sorenson / H.264 (input only) Yes — Input only
.3gp H.263 / AAC (input only) Yes — Input only

MP4

Input & output H.264 or H.265 video / AAC audio

The default answer to "which format should I use?" — and the right output for almost everything.

MP4 is a container: a wrapper that holds a video stream, an audio stream and the timing information that keeps them together. What makes it universal is not the container itself but what is usually inside it — H.264 video and AAC audio, a pairing that every browser, phone, TV, editor and social platform in current use can decode.

Compressing to MP4 here re-encodes the video at a bitrate derived from your quality setting, using H.264 by default. H.265 is offered alongside it and lands roughly a third smaller for the same picture, but it takes several times as long inside a browser tab and drops off the compatibility list that made MP4 worth choosing in the first place. If your source is already H.264 in some other container, and you only need the wrapper changed, use Remux instead — it swaps the container and copies the video stream untouched, so it finishes in seconds with zero quality loss.

Compress MP4 — settings, expected savings and the gotchas

MOV

Input & output H.264 or H.265 video / AAC audio

Apple's QuickTime container. Structurally close to MP4, which is why converting between them is cheap.

MP4 was standardised from the QuickTime file format, so MOV and MP4 are near relatives. That is why a MOV can usually be turned into an MP4 by remuxing rather than re-encoding: the streams inside are frequently already compatible, and only the wrapper needs rewriting.

MOV files off an iPhone are often large for their length — phones favour encoding speed and quality headroom over file size, and newer devices may record HEVC rather than H.264. Re-encoding to H.264 here both shrinks the file and makes it play on hardware that has no HEVC support. You can also keep it as H.265, which the tool tags hvc1 so QuickTime and Safari will open it, and that is the sensible pick when the file is going back onto Apple hardware and nowhere else.

Compress MOV — settings, expected savings and the gotchas

MKV

Input & output H.264, H.265 or VP9 / AAC audio

Matroska: an open container that will hold almost any combination of streams you throw at it.

MKV's strength is flexibility. It can carry multiple audio tracks, multiple subtitle tracks, chapters and attachments in one file, which is why media servers such as Plex and Jellyfin, and most home archives, standardise on it. It is also the only output here that will take any of the three video codecs, so it is where an H.265 or VP9 stream can go without arguing with the container.

Its weakness is browser support: Safari and Chrome will not play an arbitrary MKV natively, so an MKV destined for a web page needs converting. If the video inside is already H.264, Remux to MP4 is the fast route — no re-encoding, no quality loss, seconds rather than minutes.

Compress MKV — settings, expected savings and the gotchas

WebM

Input & output VP9 video / Opus audio

The open, royalty-free container built for browsers, normally carrying VP9 video and Opus audio.

VP9 is a newer codec than H.264 and generally reaches the same perceived quality at a lower bitrate, which makes WebM attractive for video you are embedding on a page and serving repeatedly. Opus, its usual audio partner, is similarly efficient at low bitrates.

A WebM written here is a real VP9 file, encoded with libvpx-vp9, with its audio always converted to Opus because an AAC track has no legal home in the container. Two things to weigh before picking it. VP9 in WebAssembly is markedly slower than H.264, so a long clip will keep the tab busy. And WebM remains a bad choice for a file you are emailing to someone or handing to an unknown device, however efficient it is.

Remux is unavailable for WebM output for the same containment reason: a copied H.264 stream cannot be muxed into it. If you want the streams left alone, remux to MKV instead.

Compress WebM — settings, expected savings and the gotchas

AVI (input only)

Input only Various (input only)

A container from the early 1990s. Accepted as input; convert it to MP4.

AVI predates modern codecs and typically carries older, far less efficient video such as MPEG-4 Part 2 or DivX. That is why AVI files feel enormous for their resolution: the compression inside them is a generation or two behind.

AVI is not offered as an output format, deliberately — there is no situation where writing an AVI is the better choice today. Convert to MP4 and the same footage will usually be dramatically smaller at equal quality.

Compress AVI — settings, expected savings and the gotchas

WMV (input only)

Input only WMV / WMA (input only)

Windows Media Video. Still turns up in old corporate archives and screen recorders.

WMV playback outside the Windows ecosystem is unreliable, and browsers do not support it at all. If you have been handed a WMV, converting it to MP4 is almost always the first step.

Compress to MP4 with the quality slider left near the default. WMV sources are frequently low-bitrate to begin with, so aggressive settings have little room to work before artefacts become obvious.

Compress WMV — settings, expected savings and the gotchas

FLV (input only)

Input only H.263 / Sorenson / H.264 (input only)

Adobe Flash Video. Obsolete as a delivery format, but plenty of archives still hold it.

Flash Video is what much of the web streamed before HTML5 video, so old downloads, course recordings and archived clips are often FLV. Nothing modern plays it without help.

Later FLV files actually contain H.264 video, in which case Remux to MP4 will rescue them instantly with no re-encode. Older ones carry H.263 or Sorenson Spark and need a real conversion — pick MP4 and accept that a low-resolution source will still look low-resolution.

Compress FLV — settings, expected savings and the gotchas

3GP (input only)

Input only H.263 / AAC (input only)

The mobile container from the 3GPP standard, designed for early phone networks.

3GP was built for bandwidth that no longer exists as a constraint: small frames, low bitrates, aggressive audio compression. Files are tiny, and there is usually nothing to gain by compressing them further.

The reason to run a 3GP through here is compatibility rather than size — convert to MP4 so it plays in a browser or a modern editor. Do not expect quality to improve; nothing can add detail that was never captured.

Anything else FFmpeg can read

The eight containers above are the ones you are likely to meet, not the limit. Because the compressor is real FFmpeg running in your browser, it inherits FFmpeg's demuxer list: MPEG-TS, MPG, M4V, OGV, MTS from camcorders, and many more will load and convert even though they are not listed here.

The practical constraint is memory rather than format support. The source and the output both sit in your browser's memory while the encode runs, so a very large file on a device with little RAM is the case that fails — not an unusual extension.

Which output format should you pick?

  • Sending it to a person or a platform: MP4. It is the only answer that never causes a problem.
  • Embedding it on your own web page: either. MP4 is the safe default and encodes fastest; WebM gives you the VP9 file the format is chosen for, at a real cost in encode time. Serving both from one <video> element is the standard answer if you can be bothered.
  • Keeping it in a media library: MKV, for the multiple-track support.
  • Staying inside an Apple editing workflow: MOV.
  • Only the wrapper is wrong: none of the above — use Remux, which changes the container without touching the video.

Format questions

What is the smallest video format?

The smallest files come from the newest codec, not from any particular extension. At the same visual quality AV1 is the most efficient in common use, VP9 and H.265 come next and are roughly level, and H.264 is behind them. The container adds very little either way, so the same H.264 stream is almost exactly the same size in MP4, MKV or MOV. This tool has no AV1 encoder, so the smallest it can make is H.265 in MP4, MOV or MKV, or VP9 in WebM or MKV.

Does converting a video to another format make it smaller?

Only if the video is re-encoded. Remuxing a MOV into an MP4 rewrites the wrapper and copies the stream, so the size stays the same. Re-encoding to MP4 here does make the file smaller, but that is because the bitrate is set below the source, not because MP4 is a smaller format.

Is MKV smaller than MP4?

Not in any way that matters. Put the same video stream in both and the files differ by a fraction of a percent. MKV has a reputation for small files because a lot of MKV content is encoded in H.265, and that saving belongs to the codec. Pick between the two on compatibility and features, not size.

Related guides