You ran ffmpeg, a player, or an editor on a video and got
moov atom not found (often followed by "Invalid data
found when processing input"). This is one of the few error messages
in video that is precise about what's wrong — and the right fix
depends entirely on why the moov is missing. There are three
causes. This page tells them apart.
An MP4/MOV file is a sequence of "atoms" (boxes), each starting with an 8-byte header: 4 bytes of size, 4 bytes of type. A healthy file from a camera typically looks like this:
offset size type
0x00000000 32 B ftyp (file type: mp4/mov brand)
0x00000020 1.4 GB mdat (the compressed frames)
0x59A2C020 6 MB moov (the index: tracks, timestamps,
sample tables, codec setup)
The moov is the index: which byte ranges are frames, in what order, at what timestamps, decoded with which parameters. Players read it first and seek from it. "Moov atom not found" means the parser walked every atom in the file and no index exists — so nothing else about the file can even be interpreted.
Most cameras write mdat continuously and write the moov once, at stop-record. Battery death, overheating shutdown, or a crash means the moov was never written at all. Tell-tale signs: the file came straight off a camera/recorder, and it's large (the frames are all there).
The fix: the index must be rebuilt from the raw frames — this is real recovery, not remuxing. See the full camera-died-mid-recording explainer; DIY-wise, untrunc handles the classic camera cases if you have a matching reference clip.
In a standard (non-faststart) file the moov lives at the end. Interrupt a download, a copy from a network drive, or a cloud sync at 95% and you get a file missing exactly its tail — where the index was. Tell-tale signs: the file came from a transfer, and it's noticeably smaller than the original.
The fix is honest and boring: transfer the file again, completely. No repair tool is the right answer while the original still exists at the source. Recovery only makes sense when the source is gone — then the truncated copy is treated like an interrupted recording (cause 1), and everything up to the cut is potentially rebuildable.
Files carved back by undelete software can come out with the moov missing, incomplete, or detached from its real payload. This is its own world of failure modes — some very fixable, some (TRIM'd flash) genuinely gone — covered in recovered video won't play.
ffmpeg -i broken.mp4 -c copy fixed.mp4 — ffmpeg
reads the moov to copy streams. No moov, nothing to copy.
Full honesty page: can
ffmpeg fix a corrupted MP4?The analysis reads the file's actual atom structure and tells you which cause you have — and whether the frames behind the missing index survived — before any payment.
MP4/MOV files are made of tagged blocks called atoms, and the moov atom is the index that maps every frame: byte positions, timestamps, tracks and codec parameters. The error means the parser scanned the file and no index exists — the frames may all be present, but nothing can locate or interpret them without it.
The frames (mdat) are written continuously during recording and make up nearly all of the file's size; the index is small and written last. A full-size file with no moov means recording was interrupted before the index was written — which is the good case for recovery, since the footage itself survived.
No. ffmpeg's stream copy and VLC's repair prompts both work from an existing index. When the moov was never written, the index has to be rebuilt by analyzing the raw frames — a different kind of operation that neither tool performs.
The error is the same but the fix isn't: in most files the index sits at the end, so an interrupted transfer slices it off. If the original file still exists at the source, re-transferring it is the whole fix — only if the source is gone does the truncated copy become a recovery case.
Analysis and diagnosis are free. You pay only if the repair succeeds — meaning we hand back a file verified to actually play, not just one that opens.