How to check if a video is AI-generated
Video models have improved to the point where watching closely is no longer a dependable test. The more defensible route is to keep the original MP4 or MOV and read it in layers: C2PA/JUMBF content credentials first, then the container fields — ftyp, the box tree, udta/meta/ilst, encoder, tool, software — then SEI markers in the bitstream, and only if none of that lands, sampled frames checked for known watermark patterns.
Short answer: work down three layers — container, bitstream, frames
A valid C2PA manifest declaring trainedAlgorithmicMedia, or a generative claim generator, is the strongest explainable evidence. MP4 tool fields, AIGC labels and SEI markers are supporting signals that survive some processing but not re-encoding. Frame watermark checks are a fallback for when metadata is gone. No hits at any layer still does not prove the video was filmed by a person.
Real video samples and observed results
| Google Veo original MP4 | A user-supplied sample loadable on this site. It carries a valid Google Generative AI C2PA manifest, digitalSourceType = trainedAlgorithmicMedia, and an MP4 encoding tool field of Google. The certificate is not in the current trust list, so it reads valid. |
|---|---|
| SynthID described inside the C2PA | The manifest records an invisible SynthID watermark. That is a provenance claim inside the credential — not a sign that AICheck365 independently verified SynthID from the pixels. |
| Browser processing path | C2PA and the MP4 container are scanned first through Rust/WASM. ffmpeg.wasm is lazy-loaded to extract frames at several timestamps only when the frame fallback is actually needed. |
Signals to Check
| C2PA / JUMBF | Signature state, digitalSourceType, claim generator and generative actions are checked separately. A valid signature declaring an AI source is the easiest evidence to verify and explain. |
|---|---|
| MP4/MOV container metadata | ftyp brand, box tree, udta/meta/ilst, encoder, tool, software, ©too, AIGC strings and platform names are read where present. |
| SEI markers | Known tool strings inside the video bitstream. These can survive a remux but usually disappear on re-encoding, making them a mid-to-weak supporting clue. |
| Sampled frame watermarks | When the container yields nothing, frames from several timestamps are checked against known visible corner marks and invisible patterns. This is not a general-purpose AI classifier. |
Why watching the footage stopped being a reliable test
Sora, Kling, Runway and Veo have largely eliminated the artefacts people learned to look for: impossible hands, flickering edges, unreadable signage. Meanwhile heavily compressed genuine footage smears detail in ways that read as synthetic. Perception now belongs at the bottom of the evidence stack; what holds up is what the file itself records.
Reading video metadata online without uploading the file
Video files are large and often sensitive, which makes "upload it to our server" a poor trade. AICheck365 parses the container in your browser instead, so the file never leaves your device. In practice the check is three steps:
- 1. Secure the original — the file as downloaded from the generating platform or received from its creator, not a social-media re-download or a screen recording.
- 2. Drop it into the MP4/MOV metadata inspector, or the full detector if you also want the frame fallback.
- 3. Read the result layer by layer: C2PA state first, then container fields with the box path each hit came from, then SEI and frames if needed.
What survives sharing, and what does not
Every transcode is a chance for evidence to disappear. YouTube, Instagram, Facebook and messaging apps re-encode uploads, which typically removes C2PA, container tool fields and SEI markers together. Editing software that re-exports the timeline does the same, and a screen recording keeps none of the original container at all. This is why an empty result is genuinely uninformative rather than exculpatory, and why tracking down the first published copy is usually worth more than any amount of frame-by-frame squinting.
Checking a video step by step
- Get the original video — Prefer the MP4/MOV downloaded straight from the generating platform over a social-media copy, a screen recording or a re-exported edit.
- Inspect the MP4/MOV container first — Use the metadata inspector to read box paths, encoding tool, software, AIGC labels, platform strings and where any C2PA data sits.
- Read the C2PA content and its state — Check whether the signature is valid, whether tampering errors appear, and whether the manifest actually declares AI generation via digitalSourceType or the claim generator.
- Fall back to SEI and sampled frames — Only when the container yields nothing, run the full detection pass to scan SEI markers and sample frames for known watermark patterns.
- Record the transcode history — Note the original source, the acquisition date, whether the file was edited or transcoded, and the result — so that "no signals" is never misread as proof of human filming.
Limits
- Transcoding by YouTube, Facebook, Instagram and messaging apps, along with re-exports and screen recordings, can remove C2PA, container fields and SEI markers.
- A manifest mentioning an invisible watermark is not the same as a third-party tool verifying that proprietary watermark from the frames.
- Frame analysis only matches currently known patterns and cannot replace source verification, keeping originals, or professional forensics.
- Extracting frames from large videos costs time and memory; some browsers or codecs may not complete the pass.
Start with the lightweight MP4/MOV metadata inspector, then open the full local detector when you need the frame watermark fallback.
FAQ
Is there a free AI video detector?
Yes. AICheck365 checks videos for free with no account. Container parsing runs in your browser, so the file is never uploaded, and each hit is reported with the box path or field it came from.
Can you check a video without uploading it?
That is the default here. The MP4/MOV container is parsed locally through Rust compiled to WebAssembly, and frame extraction, when needed, also runs on your machine via ffmpeg.wasm.
Does a video downloaded from social media still work?
Sometimes a file name or a stray field survives, but platforms usually re-encode uploads and strip the metadata. A result with no hits cannot rule out AI generation.
Does C2PA mentioning SynthID mean the watermark was verified?
No. That text is a claim recorded inside the manifest. AICheck365 reports it as such and does not present it as independent pixel-level verification of Google SynthID.
Why is frame analysis slower than the metadata check?
Because it decodes actual video frames in your browser rather than reading a few header bytes. It runs only as a fallback, after the container and bitstream layers come back empty.
Sources and verification records
- AICheck365 public sample records — Provenance of the Veo MP4, test dates, observed C2PA/MP4 signals and known limits.
- C2PA Technical Specification 2.2 — Includes BMFF content credentials and signature verification requirements.
- ISO/IEC 14496-12 (ISO base media file format) — The standard behind the MP4/MOV box structure this parser walks.
- AICheck365 methodology — How the video evidence layers, confidence tiers and limits are defined.