Media Inspector
Find out what a video or audio file actually contains: the container, the codecs inside it, the bitrate, resolution, frame rate, channels, and every metadata tag the file carries. FFmpeg reads the file inside your browser tab, so nothing is uploaded.
- Reads every stream in the file and explains the values that decide whether it plays, imports, or uploads
- Checks the things a field list leaves out, including where the MP4 index sits and whether this browser can decode the audio
Drop a video or audio file here
The file stays on your machine — it is never uploaded
Reads MP4, MOV, MKV, WebM, AVI, WMV, FLV, MPEG-TS, MP3, M4A, WAV, FLAC, and most other formats FFmpeg understands.
No file selected yet
Choose a video or audio file to begin. The engine is only downloaded once you do.
Overview
A file that will not play, will not import, or is ten times the size it should be is holding the answer inside it. This reads that answer out, and then says what it means.
- 01
Every stream, not just the first
Each video, audio, subtitle and data track is listed separately with its codec, profile, bitrate, language, and flags. A download carrying three language tracks and two subtitle streams shows all of them, which is how you find out what a converter is about to throw away.
- 02
The numbers people actually came for
Resolution, frame rate, bitrate, duration, sample rate, channel layout, pixel format, bit depth and chroma subsampling — read out of the file rather than guessed from the extension. Where a container stores no per-track bitrate, the tool says so instead of inventing one.
- 03
Findings, not just fields
A rotation tag, an index written at the end of an MP4, frame-rate readings that do not line up, ten-bit colour an editor may refuse: each one is stated as a sentence with its consequence. That is the difference between reading a file and understanding why it misbehaves.
- 04
Checks the file itself, not only the header
The MP4 and MOV box structure is read directly to find whether the index sits before or after the video data — the usual reason a perfectly valid MP4 stalls on a web page. FFmpeg never reports it, because it is a property of the layout rather than the streams.
- 05
Counts what the header only claims
One optional pass walks every packet without decoding a frame, and returns the actual frame count and the bytes the picture and sound each took. It compares that count with the header’s estimate and gives a video bitrate for containers that store none.
- 06
Local processing, with no upload
FFmpeg is compiled to WebAssembly and runs in the tab. Nothing is uploaded, queued, or tied to an account. Browser memory sets a practical ceiling on file size, while interview footage, client recordings, and captures of internal tools stay on your machine.
How to use
From a file you are unsure about to an answer, in four steps.
- 01
Drop a video or audio file onto the page, or use the file picker. The engine starts downloading at this point — it is about 31 MB and only happens once — and the file is then read where it sits.
- 02
Read the summary. Container, duration, overall bitrate, and one line each for the picture and the sound answer most questions before you look at anything else.
- 03
Read the findings underneath. Each one is a statement about this file with the consequence attached, from a rotation tag to an index in the wrong place.
- 04
Open Streams for the full detail, or switch to Report, JSON, or Log to copy the whole thing somewhere. Count is there when you need a frame total or a bitrate the file never stated.
Details
What the tool reads, and what it does with it.
- Container, duration, overall bitrate, start time, and every file-level metadata tag
- Per-stream codec, profile, codec tag, language, bitrate and disposition flags
- Video resolution, displayed resolution after rotation, aspect ratio, frame rate, base frame rate, pixel format, bit depth and chroma subsampling
- Audio sample rate, channel layout, sample format and bitrate
- Subtitle, data and attachment streams, listed rather than ignored
- Cover art identified as artwork instead of being counted as a video track
- Chapters with their start and end times
- An MP4-family index check for MP4, M4A, M4B, MOV and 3GP, read from the file structure rather than any FFmpeg output
- A browser preview-metadata check, plus whether it claims to decode the audio codec inside the container
- An optional counting pass for the real frame total and the real bitrate of the picture and of the sound
- Four views of the same result: a stream breakdown, a plain-text report, JSON, and the engine's raw log
- Copy or download any view, with the file name carried over
- Everything runs in the browser tab — no upload, no queue, no account
Use cases
The questions that send people looking for a media inspector.
-
A file that will not play, and no obvious reason why
The extension says MP4 and the player still refuses it. Reading the file separates the two possibilities immediately: the container is fine and the codec inside is HEVC, or the file is not what its name claims. Either way the next step becomes obvious rather than a guess.
-
Checking a video really is what it claims
A download labelled 4K can be an upscaled 1080p, and a file described as high bitrate can be far lower. The resolution, bitrate and codec come straight out of the file, so a claim about it either survives contact with the data or does not.
-
An MP4 on a web page that freezes before it starts
Playback that stalls for several seconds and then runs perfectly is almost always an index written after the video data. The check here reads the box order directly and says which one you have, which turns an unexplained delay into a cause you can act on.
-
Footage an editor refuses or plays badly
Ten-bit colour, 4:2:2 chroma, frame-rate readings that need a closer look, an unusual codec in a familiar container — the reasons an import fails are all visible in the file. Seeing which one it is decides whether you need a different export or a conversion first.
-
A phone clip that appears sideways
The frame is stored landscape with a rotation tag, and half the software in the world honours it while the other half does not. This says whether the tag is there and what the file is meant to look like, which explains a video that is upright in one app and lying down in another.
-
Working out why a video is so large
A file far bigger than expected is a bitrate, a resolution, a frame rate, or an editing codec such as ProRes — and knowing which one decides what to change. Reading it first is faster than compressing blindly and hoping the result is acceptable.
-
Checking an audio file before it goes anywhere
Podcast platforms and archives specify a sample rate, a channel layout, and a minimum bitrate. All three are read out of an MP3, M4A, WAV or FLAC here, along with its tags, so a submission is checked before it is rejected rather than after.
-
Material that should not be uploaded
Interview recordings, medical video, client footage, and captures of internal tools all carry things that have no business on an inspection site. Everything here happens in the tab, which you can confirm from the network panel while it runs.
See also
Once you know what is inside a file, changing it is a different job: moving it into a format that plays or imports, often by copying the streams rather than re-encoding them, is what Video Converter does. When the reading here explains why a file is so large and the answer is that it has to be smaller, work backwards from a size limit with Video Compressor. And for photographs rather than recordings, the EXIF, GPS and camera settings inside an image are read by Image Metadata Viewer.
What these values mean
Most of the confusion around media files comes from a handful of fields that look like one thing and describe another. These are the ones worth knowing before reading anything else on this page.
-
Container and codec are separate
MP4, MKV and WebM are containers: boxes holding streams plus the timing that keeps them in sync. H.264, HEVC, AAC and Opus are codecs: how the picture and sound are compressed. A player can support the box and still fail on what is inside it, which is why "my MP4 will not play" is a real problem rather than a contradiction.
-
Bitrate is quality per second, not quality
Bitrate is how many bits each second of the file is allowed to use. Higher usually looks better at the same resolution and codec, but the comparison only holds within one codec: HEVC at 5 Mb/s looks considerably better than MPEG-2 at 5 Mb/s. The overall figure covers every track and the container overhead together.
-
Frame rate has two numbers
The average rate is calculated across the file’s duration. The base rate is a timing rate FFmpeg reports from the stream. They often match, but they answer different questions; a difference is worth checking when an editor or player is behaving oddly, not proof on its own that the file is variable frame rate.
-
Stored size and shown size differ
A phone records in the sensor's landscape orientation and writes a rotation tag beside it. The stored frame is 1920 × 1080; the frame you see is 1080 × 1920. Software that honours the tag shows it upright, software that ignores it shows it on its side, and both are reading the same file.
-
Bit depth and chroma decide compatibility
Ordinary video is 8-bit with 4:2:0 colour, which browsers and phones decode without complaint. Ten-bit and 4:2:2 carry more colour information and are what professional cameras and editing formats produce — and they are also what a browser, a phone, or an older editing suite is most likely to refuse outright.
-
Where the index sits changes playback
An MP4 keeps its sample table in a box called moov: the map a player needs before it can show anything. Written first, the file can start while it downloads. Written last, a browser may need extra range requests to find it, and without range support can wait for most or all of the download. Both play identically from a local disk, which is why the problem only appears once the file is on a website.
Best practices
How to get a useful answer quickly.
- Read the summary before the stream list — container, codecs, resolution and bitrate answer most questions on their own
- Treat the findings as the shortlist: they are the values that have a consequence attached, rather than every field the file happens to carry
- Check the index position before publishing an MP4 to a website: an index at the front avoids extra range requests and long waits on servers without range support
- Run Count when the frame total matters: it gives the actual packet count alongside the header’s rate-based estimate, without decoding the video
- Use Count as well for a video bitrate on MKV and WebM files, because those containers store no per-track bitrate for the tool to read
- Copy the Report view into a support thread rather than describing the file from memory, and the Log view when someone specifically asks for FFmpeg output
- Inspect the original rather than a copy that has already been through a converter, since the values you want may have been rewritten on the way
- Work through large files in a desktop browser, since a phone gives a tab far less memory to hold a file in
Limitations
What this tool does not do, and where it will struggle.
- It reads files and never writes them. Nothing here converts, compresses, trims, or repairs anything — those are separate jobs with separate tools, linked below.
- The whole file is read into memory before it can be inspected, and WebAssembly is 32-bit, so files beyond roughly a quarter of a gigabyte become unreliable.
- The engine is about 31 MB on first use. It is cached afterwards, but the first run in a fresh browser profile carries that download.
- Values are reported as the file states them. A container that stores no per-track bitrate produces none, and the counting pass rather than the header is what fills that gap.
- Counting reads every packet, so it takes time proportional to the length of the file. It decodes nothing, which makes it far quicker than a conversion, but it is not instant on a long recording.
- The preview check only confirms that this browser loaded the file metadata on this machine; it is not a full decode test. Another browser, operating system, or device with different hardware decoders may differ.
- The index check applies to the MP4 family — MP4, M4A, M4B, MOV and 3GP. Matroska, WebM and the rest are laid out differently and have no equivalent property to report.
- Per-frame detail is out of scope: there is no list of keyframe positions, no per-frame timing table, and no quality measurement against a reference.
- Image files are not handled here. A photograph's EXIF, GPS and camera settings belong to the image metadata viewer linked below.
- A file that is genuinely damaged may not be readable at all, and a partially damaged one may report only the streams the engine could still identify.
- A file protected by DRM can usually still be described, since the container and the stream list are not themselves encrypted, but anything that has to reach the media data itself, including the counting pass, may fail on it.
FAQ
Questions that come up when a media file needs explaining.
How do I check what codec a video file uses?
Drop the file onto the page. The summary names the container and the codec of the picture and the sound — H.264, HEVC, VP9, AV1, AAC, Opus and so on — and the stream list adds the profile, the codec tag, and the bitrate for each track separately. Nothing is uploaded: FFmpeg reads the file inside the browser tab, which you can confirm from the network panel while it runs.
How do I check a video's bitrate?
The overall bitrate appears in the summary, and each stream shows its own where the container recorded one. MP4 and MOV usually store per-track bitrates; MKV and WebM store none at all, so those tracks show nothing rather than a figure the tool made up. Pressing Count settles it exactly, by measuring how many bytes the picture and the sound really took.
Is my file uploaded anywhere?
No. The engine is FFmpeg compiled to WebAssembly and it runs inside your browser tab. The file is read from disk into the tab's memory and nothing about it crosses the network. That is the reason to use a local inspector for interview recordings, client footage, or anything captured from an internal system.
What is the difference between a container and a codec?
The container is the file format itself — MP4, MKV, WebM — and it holds the streams plus the timing and index information that keeps them playable. The codec is how the picture and sound inside are compressed, such as H.264 or AAC. A player can support a container and still fail on what is inside it, which is why an MP4 that refuses to open is a normal problem rather than a contradiction, and why this tool reports both separately.
Why does my video play sideways in some apps but not others?
Because the file is not stored the way it is meant to be shown. A phone records in the sensor's landscape orientation and writes a rotation tag alongside, so the correct picture is the stored frame turned by the amount that tag specifies. Software that honours the tag shows it upright, software that ignores it shows it on its side. The findings panel says whether a rotation tag is present and what the file should look like once it is applied.
What is faststart, and why does my MP4 pause before it plays?
An MP4 stores its sample table in a box called moov — the map a player needs before it can show a single frame. Encoders that write files sequentially put it after the video data, so a browser may need extra range requests before playback begins. If the server does not support byte-range requests, it can wait for most or all of the file, which looks like a long freeze. Moving that box to the front is what "faststart" means. This tool reads the box order out of the file directly, because no FFmpeg output reports it.
What do different frame-rate readings mean?
The average and base frame rates describe different timing values, so a difference is a useful warning to inspect rather than a verdict that the file is variable frame rate. Count adds the actual packet total and compares it with the header’s estimate. A mismatch can come from rounded duration or timing fields as well as unusual timestamps; confirming variable frame rate requires a per-frame timestamp analysis, which this inspector does not perform.
Why does my MKV show no bitrate for the video track?
Because Matroska does not store one. Per-track bitrates are an MP4 and MOV convention; MKV and WebM record the streams and leave the arithmetic to whoever needs it. The tool leaves that gap empty rather than filling it with a guess, and pressing Count measures the real figure by totalling the bytes the picture actually occupies.
Can I check audio files here as well, such as MP3 bitrate or sample rate?
Yes. MP3, M4A, AAC, WAV, FLAC, OGG and Opus files are read the same way, and report their bitrate, sample rate, channel layout, duration and tags. Album artwork is identified as artwork rather than counted as a video track, which is the usual reason another tool insists an audio file contains video.
How many frames does my video have?
Length times the average frame rate is only an estimate, because duration and rate fields can be rounded. Pressing Count walks every packet without decoding any of them and returns the actual total. It also compares that total with the header’s estimate, which helps explain unusual timing information without pretending to diagnose it from one number.
What do 10-bit and 4:2:2 mean, and why does my editor refuse the file?
Bit depth is how finely each colour value is recorded, and chroma subsampling is how much colour detail is kept next to the brightness. Ordinary video is 8-bit 4:2:0, which everything decodes. Professional cameras and editing formats produce 10-bit and 4:2:2, which carry more information and are also what browsers, phones, and older editing software are most likely to reject. Both are read from the pixel format and reported here.
How large a file can I inspect?
The whole file is read into the tab's memory before it can be examined, and WebAssembly is 32-bit, so somewhere around a quarter of a gigabyte is the practical ceiling. Reading the header itself is quick at any size within that limit; the counting pass takes time proportional to the length of the file, since it walks every packet, though it decodes none of them.
Related tools
More local, browser-only tools for working with media files.