September 7, 2026 ยท 8 min read
Why Won't My MP4 Play? How to Read a Video File's Codec
An .mp4 that refuses to play is almost never the file extension โ it is the codec inside. Here is how to find out which one you have, and what to do about it.
An .mp4 that will not play is almost never a problem with the .mp4 part. The extension names the box; what matters is the codec inside it, and a single container can hold half a dozen incompatible ones. The fastest way to settle it is to read the file's header โ which our video file inspector does in your browser, without uploading anything.
Quick answer
| Symptom | Most likely cause |
|---|---|
| Nothing plays at all | Video codec unsupported (usually H.265/HEVC) |
| Sound but no picture | Audio codec supported, video codec is not |
| Plays on iPhone, not on Windows | H.265 โ Apple supports it broadly, others do not |
| Enormous file, plays nowhere | Apple ProRes โ an editing format, not a delivery one |
| Slow to start online, instant from disk | Metadata stored at the end of the file |
Container and codec are not the same thing
This is the confusion behind most of these problems.
The container is .mp4, .mov, .mkv. It is a wrapper that says where the video track is, where the audio track is, how long the whole thing runs.
The codec is how the pictures were compressed โ H.264, H.265, AV1, VP9, ProRes.
Two files can both be .mp4 and share nothing else. One holds H.264 and plays on a decade-old phone; the other holds ProRes 4444 and will not open in any browser on earth. Renaming the file changes nothing, because the extension was never the problem.
Inside the file the codec is recorded as a four-character code:
avc1 โ H.264 / AVC plays everywhere
hvc1 โ H.265 / HEVC Safari yes, others it depends
av01 โ AV1 recent browsers only
vp09 โ VP9 broad, but not in Safari on older systems
apcn โ Apple ProRes 422 no browser plays this
Sound but no picture is a codec mismatch
This one confuses people because the file is clearly working โ you can hear it.
A container holds separate tracks, and your player evaluates them independently. Audio is almost always AAC, which plays essentially everywhere. If the video track is H.265 and your browser lacks support, you get exactly what you would expect: working audio, black screen.
It is not corruption. The file is fine, and another player or another machine will very likely play it.
H.265 is the usual culprit
H.265, also called HEVC, compresses roughly twice as efficiently as H.264. It is what modern iPhones record by default. It is also the format most likely to fail on someone else's computer.
Support depends on hardware decoding and licensing rather than on the browser alone, which is why the same file plays in Safari on a Mac, plays in Chrome on one Windows laptop, and fails in Chrome on another. That inconsistency is the signature of an HEVC problem.
If a video has to play somewhere you do not control โ a client's machine, a web page, an upload form โ H.264 remains the correct choice. It is larger for the same quality, and it works.
Why some videos take forever to start
A different problem with a different cause, and it is worth knowing because it looks like slow internet.
An MP4 stores its metadata in a box called moov, and the actual video in one called mdat. If moov comes after mdat, a player streaming the file has to fetch all the way to the end before it can begin, because until it finds moov it does not know how to interpret anything.
From your own disk this costs nothing โ seeking is instant. Over a network it means downloading the entire file before the first frame appears.
Moving moov to the front is called fast start. It does not re-encode anything, only rewrites the layout, so it takes seconds even on a large file. Our inspector reports whether a file has it, under starts without full download.
Check the bitrate before blaming the connection
If a video plays but stutters, the question is whether its bitrate exceeds what the viewer's connection delivers. Average bitrate is file size divided by duration, and it is the honest measure of how much data per second must arrive.
A 12 Mbps video is unwatchable on a 6 Mbps line no matter how well it was encoded. Compare the figure from the inspector with a real measurement from our speed test โ and note that the number that matters is the viewer's connection, not yours.
What to do about each case
Unsupported codec. Re-encode to H.264. Any modern converter will do it, and the file will grow for the same visual quality โ that is the trade you are making for compatibility.
Sound but no picture. Same fix. The audio was never the problem.
Slow to start online. Re-run it through a tool that enables fast start. No quality is lost because nothing is re-encoded.
Plays nowhere and is enormous. You have an editing format such as ProRes or DNxHD. Convert before sharing; these are meant for editing timelines, not delivery.
Find out which case you have with the video file inspector โ it reads the header in your browser and the file is never uploaded, so a multi-gigabyte video is inspected as quickly as a small one. For the rest of what your setup can handle, see WebGL and GPU details and the connection report.