Bring back videos that stopped recording halfway.
A free, open source Windows tool that repairs MP4 and MOV files with a missing index, in batches, without touching the originals.
English · Русский
The battery died, the program crashed, the power went out: the recording is all there, but the player says moov atom not found. MP4 and MOV keep their index at the very end of the file, so an interrupted recording loses it. Max Video Repair rebuilds the index using a healthy video from the same device, and it checks the result by decoding it.
- Whole folders at once. Drop in folders of broken videos and samples. The program sorts them, and each video is handled separately.
- It finds the right sample by itself. It compares names, dates and encoder settings, then proves the choice with a real decoding trial. You can also pick a sample by hand.
- Your originals stay untouched. Results go to a new
Repairedfolder. A finished file gets its final name only after it is safely on disk. - It tells the truth. Each result is checked by decoding its start and its end. If something could not be recovered, the program says so instead of pretending all is well.
- Private by design. Everything happens on your computer. Videos never leave it, and there is no telemetry.
- Portable. No installation, no account, no ads, no watermark, no limits.
- Download
MaxVideoRepair-<version>-win64.zipfrom Releases and unpack it to any folder. - Run
MaxVideoRepair.exe. If Windows warns you, see below. - Drag your broken videos and a healthy video from the same device into the window.
- Press Repair all.
The results appear in a Repaired folder next to each video. You can choose another folder in the settings.
What is a sample? Any video that plays normally and was recorded by the same device or program with the same settings. A short clip is enough. Settings such as resolution and codec profile are stored only in the lost index, so this is where the program learns them.
To remove the program, delete its folder. Your settings are in %APPDATA%\MaxVideoRepair.
- Scoring by description: the file name pattern, the date in the name, the file layout, the x264 settings, and the number of slices per frame.
- Grouping: files with identical settings count as one group and are tried once.
- Trial: a small video is built from the start and the middle of the broken file, then decoded. If there are errors, the next group is tried.
- Repair and check: every frame and audio packet is located by its own structure, a new index is written, and the start and the end of the result are decoded.
If the damage is in the file itself rather than a mismatch with the sample, the program does not throw the result away. It tries the remaining samples, keeps the best result, and warns you about the damaged areas.
While it works, the computer does not go to sleep. Gaps in the audio of constant frame rate recordings are kept as pauses, so sound stays in sync with the picture.
MP4 and MOV without an index, including OBS Hybrid MP4. A healthy sample with the same device and settings is required.
| Formats | How it was tested | |
|---|---|---|
| Video | H.264 | Real recordings: Camo Studio, OBS, Media Foundation; camera originals from GoPro, DJI, Canon, Sony, Blackmagic, iPhone, Samsung and Android phones |
| Video | H.265 (8 and 10 bit, with B-frames), ProRes, DNxHD, DNxHR, Motion JPEG, AV1, VP9 | Recordings made with NVENC, Kvazaar, SVT-AV1, libaom, libvpx and FFmpeg's own encoders; H.265 from iPhones, DJI Air 3S, Xiaomi and dashcams |
| Audio | AAC, PCM, AC-3, E-AC-3, ALAC, FLAC | The same recordings |
| Audio | Opus | The same, but packets of varying size have no length, so splitting them is approximate: about 1–2% of the boundaries are off, and short clicks are possible. The program warns about this |
Each combination was repaired after being cut and after being damaged in the middle, and compared with the original frame by frame. There are 49 such combinations in tests/codec_matrix.py.
In November 2026 the program was run on 70 files that other people published: camera originals from the FFmpeg sample archive and the Internet Archive, and broken recordings attached to bug reports of untrunc, the best-known free tool of this kind. They come from GoPro (2011, 2013, HERO4), DJI drones (2014 to the Air 3S of 2025), Canon EOS 5D and 6D, IXUS and VIXIA, Sony a7S (XAVC S) and XDCAM, Blackmagic HyperDeck, Panasonic, iPhone 4, Samsung Galaxy Note 3, Xiaomi and other Android phones, dashcams, AVCHD camcorders and old 3GP phones.
- Healthy recordings, cut and damaged in the middle, then repaired and compared with the original packet by packet: Max Video Repair restored 45 of 90 cases completely, untrunc 25 (33 with the best of its options) on the same copies. Leaving out the formats that neither program supports (see Limitations) and the deliberately wrong samples, it is 45 of 64 against 21 (29). In 19 cases only Max Video Repair restored the recording, in 7 only untrunc.
- Recordings that really broke (a lost index, a file recovered by PhotoRec, a recording with wiped areas, a 2.5 GB DJI file) were repaired with the healthy file their owner attached: for example 540 frames against untrunc's 69 on an Android phone, 210 against 1 on a Canon camcorder, all 8940 frames of the DJI file without a single decoding error.
- AVCHD camcorders come back by remuxing with nearly all frames byte-exact.
The check found device quirks that the program did not know, and they are handled now: the headers GoPro writes before every frame, the service data of Sony, DJI and GoPro between frames, Canon's time codes and repair blocks, the 4 KB blocks of the HyperDeck, LPCM sound in AVCHD, and phones that stamp frames and sound by their own clock. Every file with its link, checksum and result is listed in tests/public_files.md. If your camera behaves differently, tell us how it went: reports like this are a great help.
MKV, WebM, TS, M2TS, MTS (AVCHD), FLV and AVI are repaired by remuxing and need no sample, as long as FFmpeg can read the codec. Put them into the left list: the file layout does not show whether such a file is broken. The result is an MP4, or an MKV if the stream does not fit into MP4. LPCM sound of camcorders (Canon C100 and others) fits neither, so it is written into MKV as plain PCM of the same depth, without any loss.
- Only the first video and first audio tracks are kept. Other audio tracks, GPS and gyroscope data are lost.
- Opus and PCM audio in a VP9 recording cannot be separated from the frames, so only the video is recovered. The program warns about this.
- Frames from the point of damage up to the next keyframe cannot be recovered. H.264 shows them distorted, while H.265 and AV1 usually skip them.
- Uncompressed audio has no headers, so damage in the middle of such a recording may leave a short burst of noise.
- Camera RAW formats (BRAW, R3D, Canon RAW) are not supported.
- Formats of old phones are not supported in MP4, MOV and 3GP: H.263 and MPEG-4 Part 2 video, AMR and QCELP sound. Neither are MPEG-2 (XDCAM), AVC-Intra and Cinepak. The program says that no sample fits.
- AAC-ELD and AAC-LD sound (some Xiaomi phones) and MP3 inside MP4 cannot be recovered: only the picture is, and the program says so. Recordings without a picture (voice recorders) are not repaired.
- The sample must come from the same camera model with the same settings: a GoPro HERO4 recording is not repaired with a sample from an older GoPro, a Canon 5D one not with a sample from a 6D. With uncompressed sound the frame rate is taken from the sample, so it must be the same.
- After damage in the middle of a short recording with uncompressed sound (Canon EOS, Sony a7S) the program may refuse: its trial decoding falls on the damage. A recording that was only cut is repaired.
- Security recorders such as Hikvision write their own format, not MP4, and are not supported. 3D AVCHD (Sony NX3D) cannot be remuxed.
- Paths longer than 260 characters work only if long paths are turned on in Windows.
- Video data that was never written or was overwritten cannot be recovered by any program.
Max Video Repair is new and is not signed yet, so Windows may stop it:
- SmartScreen ("Windows protected your PC"): choose More info, then Run anyway.
- Smart App Control blocks unsigned programs and has no exception for a single program. Until the builds are signed, the only way is to turn it off in Windows Security, under App & browser control, and Microsoft may not let you turn it back on without resetting Windows. If you are not comfortable with that, please wait for a signed release.
If you would rather not trust a download, the releases are built from this source on GitHub Actions, and you can build the program yourself. Checksums are in SHA256SUMS.txt next to each release.
If only ffmpeg.exe is blocked, Max Video Repair still repairs MP4 and MOV files and tells you that the result could not be checked by decoding. MKV, TS, FLV and AVI cannot be repaired in that case, because they need FFmpeg.
The Updates button checks GitHub for a new version and installs it after you agree. The program never connects to anything by itself. The download is checked against the release checksum, and if anything goes wrong, your installed version is put back. You can also update from the console with maxvideorepair-cli update.
The Report a problem button shows exactly what would be shared, hides your file and folder names, and opens a pre-filled form in your browser. Nothing is sent until you press the button on that page, so you stay in control. It needs a free GitHub account. If you do not have one, the same window can copy the report or save it to a file. After a crash, the program offers this by itself on the next start.
English, Русский, Deutsch, Français, Español, Português, Nederlands, Italiano, Polski, Українська, 简体中文 and 日本語. The program follows the language of Windows, and you can change it in the settings.
The translations were not reviewed by native speakers. If a phrase sounds wrong, or you would like to add a language, it only takes one text file.
maxvideorepair-cli repair <broken file> -o <folder> <sample or folder>...
maxvideorepair-cli match <broken file> <sample or folder>...
maxvideorepair-cli probe <file>...
maxvideorepair-cli update [--check]
Exit codes: 0 repaired, 1 failed, 2 wrong arguments. The MAXVIDEOREPAIR_LANG environment variable selects the language of messages.
Windows and Git are enough: the compiler and tools download into the project folder, with their checksums verified.
powershell -ExecutionPolicy Bypass -File tools\fetch-tools.ps1
build.cmd
See CONTRIBUTING.md for the tests, the project layout and how to translate. Security problems go to SECURITY.md.
Builds are not signed yet. An application for free code signing by SignPath.io, with a certificate by SignPath Foundation, is planned.
Only MaxVideoRepair.exe and maxvideorepair-cli.exe, built from this repository on GitHub Actions, are intended for signing. Each signing request is approved by hand. ffmpeg.exe is a third-party program and is included unsigned.
- Committers and reviewers: Golubev-Tepliashin Maksim
- Approvers: Golubev-Tepliashin Maksim
This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.
- Update check: only when you press the button. It connects to GitHub, which sees an ordinary web request from your computer. See the GitHub privacy statement.
- Problem report: only when you send it yourself, through your browser, to a public GitHub page.
- Videos: never leave your computer.
Max Video Repair is created by Golubev-Tepliashin Maksim and released under the MIT License.
It stands on the work of others. Thanks to FFmpeg (LGPL build, used for checking and remuxing, runs as a separate program), dav1d (BSD 2-Clause, the AV1 decoder inside ffmpeg.exe), and Dear ImGui (MIT, the interface). The AAC code tables in src/core/aac_tables.h come from FFmpeg (LGPL 2.1+). Details are in THIRD-PARTY-NOTICES.md.
Product names are used only to describe compatibility, and this project is not affiliated with their owners.
