MP4 Faststart Checker

Unverified experiment

Check whether an MP4 is arranged for progressive web playback. Your file stays on this device.

What faststart changes

Faststart moves the moov metadata box ahead of the first mdat media-data box. That order lets a conventional web player read essential timing and track metadata without waiting for the end of a large file. It does not change the encoded audio or video streams.

Before
ftypmdatmoov
After
ftypmoovmdat

What this checker proves

  • The declared order and byte offsets of top-level ISO BMFF boxes.
  • Whether the first complete moov appears before the first mdat.
  • Whether a top-level moof signals a fragmented MP4 structure.
  • That the result was calculated by this page without uploading the file.

What it cannot prove

  • That a browser supports every codec, profile, color space, or audio format inside the file.
  • That a malformed nested box, damaged sample table, or incomplete download will decode.
  • That your web server supports byte-range requests or sends the correct media type.
  • That the suggested ffmpeg command will preserve application-specific metadata.

How the parser stays local

The checker uses the browser File and Blob APIs. It reads only the small header range needed at each top-level offset, then jumps over the declared payload. It never sends the selected file, its name, its box list, its size, or the result to the event endpoint.

  1. Choose locally. The browser gives this tab temporary access to the selected file.
  2. Read headers. Up to 16 header bytes are sliced at each top-level offset.
  3. Apply hard limits. Files over 10 GiB, over 256 boxes, invalid sizes, cancellation, and deadline overruns stop safely.
  4. Render locally. Offsets and status stay in page memory and disappear when the tab closes.

Reading an MP4 faststart result

PASS — moov before mdat

The first movie metadata box is available before the first media-data box. This is the usual arrangement for progressive playback of a non-fragmented MP4. A pass is a byte-order observation, not a codec or playback guarantee. Test the actual file in every player you support.

NEEDS FASTSTART — mdat before moov

The first media-data box comes before movie metadata. A player may need to fetch much more of the file before it knows tracks, durations, and sample tables. The displayed ffmpeg command creates a new output and asks ffmpeg to relocate metadata without re-encoding streams. Keep the source until you verify the output.

FRAGMENTED INFO — moof detected

A moof box means the file uses movie fragments. Fragmented MP4 has different delivery patterns, so classic “moov before mdat” advice is incomplete. This checker reports the structure but does not certify DASH, HLS, MSE, CMAF, or streaming conformance.

INVALID / UNVERIFIED

The checker uses this state when a required pair is absent, a size is unsafe, a header is truncated, a box reaches beyond the file, the deadline expires, or you cancel. It deliberately avoids guessing. A file may still be valid in a format or edge case that this small top-level parser does not understand.

Frequently asked questions

Does this tool modify my MP4?

No. The checker only reads byte ranges. The ffmpeg command is shown as text for you to run separately, and it writes to a new output path.

Why not read the whole file?

Top-level boxes declare their sizes. The parser can read a header, validate the declared range, and jump to the next header. That keeps memory use small even when the media payload is large.

Why is this labeled an unverified experiment?

The exact search demand and business value have not been validated. The tool is usable, but it is not a standards validator, a playback laboratory, or a promise that a given file will work everywhere.

What analytics are collected?

Only four coarse events may be counted: tool opened, file selected, analysis completed, and command copied. The endpoint rejects extra fields and separates production from preview traffic. No file-derived value is included.