Big video collections hide broken files. A copy to a NAS was interrupted, an old external drive developed bad sectors, a camera card was pulled out too early, or an export crashed halfway. The file still shows up in File Explorer with a normal size, so nothing looks wrong until you double-click it and the player shows an error, freezes or stops partway through.
Checking files one by one isn't practical when you have thousands. This guide shows a free way to scan a whole folder tree with FFmpeg and PowerShell, how to read the results, and how SceneSort Pro does the same check from a menu.
moov atom) is commonly written at the end. A typical error is "moov atom not found".FFmpeg is free and includes ffprobe, which reads a file's header and reports problems in a fraction of a second. Install FFmpeg (the Windows builds linked from the official site are fine) and make sure ffprobe -version works in a terminal.
Then open PowerShell in the folder you want to check and run:
Get-ChildItem -Recurse -File -Include *.mp4,*.mkv,*.mov,*.avi,*.m4v,*.wmv |
ForEach-Object {
$err = & ffprobe -v error -show_entries format=duration -of csv=p=0 "$($_.FullName)" 2>&1
if ($LASTEXITCODE -ne 0 -or $err -match 'error|invalid|not found') {
[pscustomobject]@{ File = $_.FullName; Problem = ($err | Out-String).Trim() }
}
} | Export-Csv broken-videos.csv -NoTypeInformation
Open broken-videos.csv in Excel. Every row is a file that ffprobe couldn't read cleanly, with the reason. This pass is fast, but it only checks that the file opens. It won't catch damage in the middle of a file whose header is fine.
To be thorough, have FFmpeg decode every frame without writing any output. Any decoding error is printed:
ffmpeg -v error -i "D:\Video\example.mp4" -f null -
No output means the file decoded cleanly. To run it over a folder and log only the problem files:
Get-ChildItem -Recurse -File -Include *.mp4,*.mkv,*.mov |
ForEach-Object {
$log = & ffmpeg -v error -i "$($_.FullName)" -f null - 2>&1
if ($log) { "$($_.FullName)`n$($log | Out-String)" | Add-Content decode-errors.txt }
}
Be aware that this decodes every second of every video, so it takes roughly as long as your CPU needs to process the footage. For a large library, run it overnight on one folder at a time. Add -hwaccel auto before -i to use your graphics card if FFmpeg supports it on your system.
| Message (typical) | Likely cause | What to try |
|---|---|---|
moov atom not found | Truncated MP4 or MOV, often an interrupted copy | Look for another copy on an older drive or backup. Repair tools exist but need a healthy reference file from the same camera. |
Invalid data found when processing input | Not really a video, wrong extension, or badly damaged | Check the file size; try opening it in VLC; look for the original. |
| Errors partway through a decode | Damage in the middle of the file | Often still playable up to that point. Re-copy from the source if you have it. |
| Zero-byte file | Failed copy or sync placeholder | Safe to delete once you've confirmed a good copy exists elsewhere. |
Don't delete in a hurry. A file that fails in one player sometimes plays in another, and a partly damaged home video may still be worth keeping. Move problem files to a separate folder first and decide later.
The free edition of SceneSort Pro has every feature and works on your first 500 files, with no time limit. Pro: unlimited files, US$29 one-time.
If you'd rather not run scripts, SceneSort Pro has a Corrupt File Scan built in. It's part of the same app you'd use to organise a big, messy media library, so it works on everything you've already added, including external drives and NAS shares. FFprobe is bundled, so there's nothing to install.
While you're there, it's worth running the duplicate finder too. A broken file often has a healthy copy somewhere else in your collection, and the duplicate view is how you'll find it.
/V switch reports skipped files, and tools like TeraCopy can verify each file after copying.The free edition includes the Corrupt File Scan, duplicate finder and name clean-up for up to 500 files. No account, no upload.
Try it free on 500 filesFree from the Microsoft Store. Pro: unlimited files, US$29 one-time · other install options
Optional: get 20% off the full version
We never sell your email. See our privacy policy.