Field notes
The battery died, the card came out, or the body locked up while it was still
recording. There is a MVI_1234.MOV on the card of a believable size and
nothing will open it. Here is what to try, in the order that costs you least.
Do not record anything else on that card. Take it out and copy everything off it before you try anything, this page included. Nothing recovers footage that has been written over.
Canon bodies that record to a FAT32 card cannot write a single file past 4 GB, so a long take is not one file. The camera closes each part and immediately opens the next, which means every part except the one being written when the power went is a complete, properly finished recording.
Look at the whole run of files around the broken one, in order. If your take was long enough to split, most of it is likely to play right now with nothing done to it, and only the final part is damaged. That is the cheapest win available and it is often the whole job.
If the broken file is a sensible size rather than a few kilobytes, the video is almost certainly still inside it. What a camera writes last, when a recording stops cleanly, is the index saying where every frame lives. Lose power before that and you have a complete recording with no map, which every player refuses to touch.
On a Mac, this tells you which case you are in:
ls -l MVI_1345.MOV strings -t d MVI_1345.MOV | grep -m 5 -E 'ftyp|mdat|moov'
ftyp and mdat present but no moov is the good
outcome: the footage is there and only the index is missing.
The detail of what that means. A file of a few
kilobytes means the footage was never written, and card level recovery software is the
only remaining route.
This runs in your browser. The file is not uploaded, and only the first and last megabyte are read, which is where the markers that decide the answer live. Works on any computer, including Windows, even though the app itself is Mac only.
This checker has its own page at cinesalve.honorboxx.workers.dev/check — easier to pass to someone else who needs it.
The index cannot be copied from another clip. It holds the exact byte position and size of every frame in your recording, so it has to be reconstructed by reading the raw footage and working out where each frame begins, using a healthy clip from the same camera to learn how that body writes.
untrunc is free and open source and does exactly this, if you are willing to compile a command line tool and hand it a reference file. Try it before paying anybody. If it will not build on your Mac, these are the errors and what they mean.
No other clip from that camera? Record one now, before the card goes anywhere. A few seconds in the same mode is enough. A damaged Canon file does not state its own codec settings, so they have to be read from a working recording, which is why every tool that can do this asks for one.
A Mac app that does the same job. Drop in the file that will not open plus any clip from the same camera that does, and it rebuilds the index so the file plays again. Nothing is uploaded; it runs entirely on your Mac. $69 once.
It is measured against a real Canon EOS 5D Mark II recording, 1080p at 29.97fps, camera original and cut mid‑take. Every recovered frame is compared against the original by byte position and size:
| Real Canon footage | Frames recovered | Exact |
|---|---|---|
| EOS 5D Mark II, 1080p 29.97fps, cut mid‑take | 208 / 208 | 100% |
Every frame lands at the exact offset and size the camera wrote, and the repaired file decodes end to end without a single error. This camera records uncompressed sound rather than the compressed kind, interleaved between the pictures, and the picture is what is reassembled today — the recovered file is silent. Other Canon bodies have not been through the suite, and a clip from one is genuinely welcome.
A damaged Canon clip is genuinely useful: it goes into the test suite and the fix ships for everyone. cinesalve@proton.me (or the contact form), with the body and the recording mode. You will get an honest answer about whether it can be recovered, including when the answer is no, and there is no pitch attached.