Repair a corrupted Android video

An Android clip that won't open is usually an .mp4 that was never finalized — the recording app was killed, the phone ran out of memory, or storage filled up before the file could be closed. The frames are still on the device; only the index that closes the file is missing, and rebuilding it doesn't require uploading anything.

Your file never leaves your device — repair runs in your browser. 0 bytes uploaded.

Your data is the big block — usually intact. What breaks is the small index. Repair rebuilds it.

Drop a file here or browseTap to choose a file

ZIP · Office · PDF · video · JPG · PNG · RAR/7z · SQLite — repaired right here in your browser. Nothing is uploaded

0 bytes uploadedFree: 3 repairs/day — up to 500 MB video, 100 MB docs & archives, 50 MB photos. Free download. Single repair €5.90. No account required.

Fix it now

  1. Drop the file
  2. Repair runs locally
  3. Download the result

Android phones — Pixel, Samsung, Xiaomi, OnePlus and the rest — record video through the platform's MediaRecorder and MediaMuxer APIs, which write a standard .mp4 in the ISO base-media container. The picture and sound stream into an mdat box as you film, but the moov atom — the index that maps every frame — is written only when the app calls MediaMuxer.stop() at the end. If the app never reaches that call, you get a file full of valid HEVC or H.264 data with no index, and every player refuses it. Drop the file above and the tool checks for exactly that, in your browser, and rebuilds the container when the footage is recoverable.

Why Android leaves an .mp4 unfinalized

The Android media stack is explicit about when a recording becomes playable. During capture, MediaRecorder (or a camera app using MediaCodec + MediaMuxer directly) appends encoded samples to the mdat. The moov atom — sample sizes, chunk offsets, timing tables and the codec's parameter sets — is assembled in memory and flushed to the end of the file only when stop() and release() run. Miss that step and the bytes on disk are a headless MP4: real frames, no map.

Three interruptions cause it. The Camera app crashed or was killed. A bug, or Android's low-memory killer reclaiming a background/foreground app under memory pressure, ends the process before stop() — so nothing writes the index. Storage filled up mid-record. 4K HEVC writes fast; when internal storage or the SD card hits zero free bytes, the muxer's write fails partway and the file is truncated with no moov. The phone powered off. A dead battery or forced restart during capture skips finalization the same way.

The codec inside is either HEVC/H.265 (the default for high-resolution modes on most modern Androids, chosen for its efficiency) or H.264/AVC (the compatibility fallback). The container behaviour is identical for both, which is why the repair path is the same regardless of codec.

What can be rebuilt — and what can't

Because the frame data survives in the mdat, the fix is to reconstruct the index that MediaMuxer.stop() never wrote. The tool scans the surviving stream, recovers each frame's boundaries and timing, and rebuilds the sample tables so a player can decode from the start — turning a headless file back into a normal, seekable MP4. Where the file was also truncated by a full disk, it salvages the frames that were completely written before the cut and closes a playable container around them, so a clip that captured 80% of a take gives back that 80% instead of failing whole. All of this runs in your browser as the file is read from storage.

The honest limit is that frames written after the interruption don't exist — a full disk stops the write, a crash stops the encoder, and no tool can invent bytes that were never stored. When only the truncated copy remains, salvage is the right move; if the original file is still on the phone and can simply be re-copied cleanly, do that first, because a good copy beats any repair.

Why a clip from the same phone and app helps

Rebuilding the index is most reliable when the tool knows the exact codec configuration the broken file omitted. A healthy clip from the same phone, recorded by the same app in the same mode, supplies precisely that — the HEVC parameter sets (VPS/SPS/PPS) or the H.264 SPS/PPS, plus the resolution and frame rate — so the reconstruction reproduces the original instead of approximating it.

Practically: record a few throwaway seconds with the same camera app and the same quality settings, and keep it handy. Match the codec (HEVC reference for an HEVC clip, H.264 for H.264), and you'll only be asked for it if the repair needs it. A sample from a different phone or a different app usually won't match, because the parameter sets differ.

What this can and can't fix

Can fix

  • A recording the Camera app or a video app never finalized because it crashed or was killed before MediaMuxer.stop() (missing moov)
  • Clips cut short when internal storage or the SD card filled up mid-record
  • Recordings interrupted by a dead battery or forced restart during capture
  • HEVC and H.264 .mp4 files that won't open in Google Photos, Gallery, VLC or an editor despite holding real frames

Can't fix

  • Footage from after the interruption — those frames were never written to storage
  • A file that reads as 0 bytes or mostly zeros after a failed copy or a failing SD card
  • DRM-protected or encrypted content
  • A broken HEVC clip with no matching HEVC reference from the same phone and app

If a repair fails, we tell you why (missing data versus broken structure), and you are never charged for a failed repair.

FAQ

My camera app crashed and the video won't play. What happened?

The app was killed before it could call MediaMuxer.stop(), which is what writes the MP4's moov index. The frames it captured are on the phone, but with no index a player sees a broken file. Rebuilding the container re-indexes those frames so the clip plays.

Storage filled up while I was recording and now the clip is dead. Recoverable?

Often yes, in part. A full disk truncates the file mid-write, leaving valid frames up to the cut with no index. The tool salvages the frames that were fully written and rebuilds a playable container around them — you get everything captured before storage ran out.

Does it matter which brand of Android phone I have?

No. Pixel, Samsung, Xiaomi, OnePlus, Motorola and others all record standard ISO base-media .mp4 files through the same Android media stack, so the same missing-index repair applies. It only helps to know whether the codec is HEVC or H.264 when choosing a reference clip.

Is my video uploaded to be repaired?

No. The file is read from your device and rebuilt in your browser tab; nothing is transmitted. You can open the Network tab and confirm 0 bytes of the video leave your machine.

Related: Repair MP4 (any source) · "moov atom not found" · Repair a Samsung Galaxy video · Verify the zero-upload claim