VIDEOZ

MP4 · HLS · FLV · Media inspector

Check if an MP4 has faststart enabled

An MP4 is faststart (web-optimized) when its moov box comes before mdat, so a player can start playback before the whole file downloads. Drop a file below and the Diagnostics card shows the byte offsets of moov and mdat and whether faststart is on. To fix it, run: ffmpeg -i in.mp4 -c copy -movflags +faststart out.mp4

Drop an MP4 file or click to browse

click or drag & drop

Last updated

Why moov placement matters

A player needs moov before it can decode anything. When moov is at the end, a browser must first request the end of the file with an extra HTTP range request — or, if the server does not support range requests, download the entire file before showing the first frame. On slow connections this shows up as a long delay before playback starts.

Three ways to check

MethodHow
VideoZDrop the file above and read “Web streaming (faststart)” in Diagnostics.
ffprobeffprobe -v trace -i input.mp4 2>&1 | grep -m1 -e "type:'moov'" -e "type:'mdat'" — the first match tells you which comes first.
Remote filecurl -s -r 0-63 https://example.com/video.mp4 | xxd — look at which box type follows ftyp.

How to fix it

Remux with faststart. -c copy copies the streams without re-encoding, so it takes seconds and does not change quality. In HandBrake, tick “Web Optimized”.

ffmpeg -i input.mp4 -c copy -movflags +faststart output.mp4

Frequently asked questions

Does faststart reduce video quality?
No. It only moves the moov box to the front of the file; the audio and video data are copied unchanged.
Do fragmented MP4 files need faststart?
No. Fragmented MP4 (used by HLS and DASH) puts a small moov at the start and carries timing in each fragment, so it can play progressively already.
Does YouTube need faststart?
YouTube’s recommended upload settings list “moov atom at the front of the file (Fast Start)”, so it is good practice for uploads as well as web playback.

Sources

Related