Formats
What opens, and what it costs you
The container decides which path your file takes: returned untouched, repackaged in half a second, or re-encoded at full cost. This is the honest matrix.
The matrix
| Container | Reads? | If it already fits | Notes |
|---|---|---|---|
| MP4 (H.264 + AAC) | Yes | Returned untouched, original name | The common case: no work at all |
| MOV (H.264 + AAC) | Yes | Repackaged to MP4, streams copied | Under a second; quality untouched |
| M4V | Yes | Same as MP4 | MP4 with an Apple extension |
| MKV (H.264 + AAC) | Yes | Repackaged to MP4, streams copied | Measured: 7.96 MB in 0.5 s |
| WEBM (VP9 or VP8) | Yes | Re-encoded, not copied | MP4 cannot carry VP9 in the target profile |
| AVI | No | — | The page says so up front instead of failing halfway |
Output is always the same: H.264 video with AAC audio inside MP4, which is what Discord embeds and plays on desktop, web and mobile.
Two different costs hiding in one button
A file that already fits never enters the encoder. MP4 comes back byte-identical under its own name; MKV or MOV gets its compressed streams copied into a new MP4 wrapper, which is a packaging exercise, not a quality decision. Measured on the live page: 0.5 seconds for a 7.96 MB MKV, versus tens of seconds for the same file re-encoded.
Everything else is a real encode: decode every frame, re-compress at a bitrate derived from your target size, and mux. That is where the seconds go, and where quality is decided.
Why AVI is refused
The browser stack this page relies on (WebCodecs plus a JavaScript demuxer) has no AVI container parser. Rather than accept the file and fail minutes later, the page rejects it at intake and names the containers that do work. If you need AVI, convert the container first — the video inside is often H.264 already, and a remux will be lossless and fast.
iPhone and iPad: it runs, but it is slow
iOS 16.4 and later expose WebCodecs to Safari, so the tool does run on a phone. The problem is throughput: a phone encoder is several times slower than a laptop's, the device heats up and throttles, and Safari will kill a tab that holds too much memory. For anything longer than a minute or two, use a computer. On iOS older than 16.4 the encoder API is missing entirely and the page says so at load instead of failing halfway.
What the target size does to the picture
Two levers move together: the bitrate budget that follows from the target size, and the resolution ladder. The page keeps the largest resolution whose bits-per-pixel stays above a floor, so a small cap lowers the resolution rather than turning the frame into mush. If a result looks worse than you expected, raise the cap before you blame the codec.