A drag-and-drop tool that checks video files for structural corruption before you trust them in your archive or wipe the source media.
Works on Windows and macOS. One-click installer handles all dependencies.
You copy footage from a camera card using a verified transfer tool like Offshoot. Checksums match. Green lights everywhere. You wipe the card. Two weeks later in post, one of your files won't open. The MP4 is structurally broken — the camera or recording software crashed mid-write, and the file was already corrupted before it ever left the card.
Your transfer tool did exactly what it was supposed to: it copied the file bit-for-bit and confirmed the copy was perfect. The problem is that a perfect copy of a broken file is still a broken file.
Footage Validator catches what transfer tools can't. It runs ffprobe on every video file in a folder to verify the container is structurally valid — that the moov atom exists, the video stream is parseable, codec parameters are readable, and the file will actually play. If a recording was truncated, crashed, or written incorrectly by the capture device, this tool flags it immediately — while you're still on location and can reshoot.
Transfer verification tools (Offshoot, Hedge, Silverstack, Shotput Pro) and Footage Validator cover different failure modes:
| Failure type | Transfer tool catches it | Footage Validator catches it |
|---|---|---|
| Bit corruption during copy | ✅ | ❌ |
| Drive disconnected mid-transfer | ✅ | ❌ |
| Files missing after copy | ✅ | ❌ |
| Bit rot on archive over time | ✅ (via MHL re-verify) | ❌ |
| Camera wrote a broken file | ❌ | ✅ |
| Recording crashed, missing moov atom | ❌ | ✅ |
| Zero-byte or stub file on card | ❌ | ✅ |
| File exists but has no video stream | ❌ | ✅ |
Recommended workflow at wrap:
- Copy card → destination using Offshoot (Source Verification mode for critical shoots)
- Run Footage Validator on the destination folder
- Both green → safe to wipe the card
Neither tool alone covers every failure mode. Together they do.
- Missing or corrupted MP4/MOV moov atoms
- Truncated recordings (camera or software crashed mid-write)
- Zero-byte or stub files
- Files with no readable video stream
- Containers that
ffprobecannot parse
MP4, MOV, MXF, AVI, MKV, M4V — scanned recursively through all subfolders.
Requirements: Windows 10 (1809+) or Windows 11 with winget available.
- Download the latest Windows release zip
- Unzip it
- Right-click
Install Footage Validator.bat→ Run as administrator - The installer handles everything:
- FFmpeg (via winget)
- PowerShell 7 (via winget)
- Validation script installed to
%LOCALAPPDATA%\FootageValidator\ - Validate Footage shortcut placed on your Desktop
- Drag any folder onto the Desktop icon to validate
Requirements: macOS 10.13 or newer.
- Download the latest macOS release zip
- Unzip it
- Double-click
Install Footage Validator.command- First time: macOS may block it → right-click → Open → confirm
- Enter your password when Homebrew asks for sudo
- The installer handles everything:
- Homebrew (if missing)
- FFmpeg (via Homebrew)
- Validation script installed to
/usr/local/bin/validate_footage - Validate Footage.app placed on your Desktop
- Drag any folder onto the Desktop app to validate
Drag a folder onto the Validate Footage icon on your Desktop. A terminal window opens showing live results:
===================================================================
FOOTAGE VALIDATION
Folder: /Volumes/SHOOT_A/Footage
Started: 2026-05-10 14:30:22
Threads: 16
===================================================================
[ OK ] A001_05101430_C001.mp4 h264 3840x2160 23.98fps 00:12:44
[ OK ] A001_05101430_C002.mp4 h264 3840x2160 23.98fps 00:08:31
[ FAIL ] A001_05101430_C003.mp4
moov atom not found
[ OK ] A001_05101430_C004.mp4 h264 3840x2160 23.98fps 00:15:02
===================================================================
SUMMARY
Total scanned: 4
Passed: 3
Failed: 1
Elapsed: 00:03
Report: /Volumes/SHOOT_A/Footage/validation_report_2026-05-10_1430.txt
===================================================================
A timestamped report is saved in the scanned folder as validation_report_YYYY-MM-DD_HHMM.txt.
Windows (PowerShell 7):
pwsh -ExecutionPolicy Bypass -File "$env:LOCALAPPDATA\FootageValidator\validate_footage.ps1" -Path "D:\Shoot\CardA"
# Custom thread count
pwsh -ExecutionPolicy Bypass -File "$env:LOCALAPPDATA\FootageValidator\validate_footage.ps1" -Path "D:\Shoot" -Throttle 16macOS / Linux:
validate_footage /path/to/folder
# Custom thread count
validate_footage /path/to/folder 16The validation runs multiple ffprobe instances in parallel (default: 8 threads, configurable). On a fast SSD with typical production footage:
- ~100 files in under 10 seconds
- ~1000 files in under 2 minutes
Adjust the thread count based on your storage speed. Use higher values (16) for fast NVMe/SSD, lower values (4) for USB card readers or network drives.
This tool was built after a corrupted Varjo XR4 capture file — a missing moov atom on a client shoot — was discovered only after the source media had been wiped. The file had transferred and verified cleanly through Offshoot because the corruption existed at the source. Hours of debugging with FFmpeg, untrunc, and various recovery tools followed. The file was eventually recovered using Stellar Repair for Video with a reference clip from the same session, but the experience made clear that a structural validation step was missing from the ingest workflow.
Footage Validator exists so that never happens again.
Under the hood, the tool runs ffprobe (part of the FFmpeg project) on each file with flags that check:
- Whether the container can be opened and parsed
- Whether at least one video stream exists
- Whether codec parameters (codec name, resolution, frame rate, duration) are readable
This is a lightweight read operation — it does not decode or re-encode any video data. It reads just enough of the container structure to confirm the file is valid.
The scripts are plain text and easy to modify:
- Supported extensions — add or remove formats in the extensions list at the top of the script
- Thread count — change the default parallel worker count
- Report format — adjust what metadata gets logged per file
Windows:
- Delete
%LOCALAPPDATA%\FootageValidator\ - Delete
Validate Footage.batfrom the Desktop - (Optional)
winget uninstall Gyan.FFmpegandwinget uninstall Microsoft.PowerShell
macOS:
sudo rm /usr/local/bin/validate_footage
rm -rf "$HOME/Desktop/Validate Footage.app"FFmpeg and Homebrew are left installed.
MIT — use it however you want.