Fake Detector

AI image, video & text analysis for newsrooms

Drop an image or video here or click to browse

JPEG PNG WebP max 20 MB MP4 MOV WebM max 200 MB
Starting…0%
Analysing text…

Fake Detector combines independent forensic signals to assess whether an image, video, or piece of text was created by an AI. No single signal is conclusive — the tool weighs all available evidence and reports one of five clear verdicts. The result should be treated as forensic input, not a final verdict. Editorial judgement is always required.

Our promise

We'd rather miss a fake, than falsely accuse a real photo.

Every signal here is held to one standard: it must not flag genuine news photography as AI. We measure this against a fixed benchmark of real press photographs, and the target is zero false positives, meaning not one real photo wrongly called AI. When a check cannot meet that bar, because it also lights up on compressed or edited real images, we drop it from the verdict, even when it would have caught more fakes. Several well-known forensic methods were rejected for exactly this reason (see What we tested and left out below).

The trade-off is deliberate, and it has a limit worth stating plainly. A very clean, sophisticated fake can still slip through as inconclusive or clean. We accept that, because a detector that cries wolf gets ignored, and a tool you have learned to ignore catches nothing: keeping false accusations near zero is what makes a real warning worth acting on.

But read a clean result correctly. This tool detects signs of AI; it does not certify that a photo is genuine. "No signs of AI" means our checks did not fire, not that the image is safe to publish. Treat it as a pass on the automated checks, then apply your normal verification: where it came from, whether it has appeared before, whether the source and the scene hold up. For the rare fake good enough to beat every detector, that verification is the real safeguard, not a stricter setting here.

Detection pipeline — how an image is analysed
1
Content Credentials check (C2PA) FAST EXIT
The very first check. C2PA (Coalition for Content Provenance and Authenticity) is an open standard supported by Adobe, Google, Microsoft, Sony, and others. Cameras, phones, and AI generators that support C2PA embed a cryptographically signed record directly into the file — stating who created it, with what device or software, and when.

If the file contains a valid C2PA signature that confirms AI generation (e.g. from OpenAI Sora, Adobe Firefly, Google Imagen), the pipeline stops immediately and reports AI-generated with high confidence. If the signature confirms camera capture or a verified human creator, it reports Real. If there is no C2PA signature — which is the case for most files today — the pipeline continues to Stage 2.

This check runs on both images (JPEG, PNG, WebP) and videos (MP4, MOV, WebM). OpenAI's Sora, for example, embeds C2PA credentials in every video it generates — allowing instant, cryptographic identification without running any ML models.
2
Reading all the signals together
When no C2PA signature is present, all the forensic detectors run. Their readings and flags are then handed to Claude (the same model that writes the plain-language analysis), which weighs the whole picture and decides one of the five verdicts. It leans on the strongest signals, the two AI image classifiers, the file metadata and the image noise, and treats the weaker advisory checks (camera-noise consistency, watermark heuristics, shadow direction, composite/ELA) with caution, because benchmarking showed they misfire on real photojournalism. See What we tested and left out below.

Two deterministic guarantees sit around that judgement. Definitive checks always win: a C2PA signature or a match in the known-fakes database decides the verdict outright. And a guardrail forbids an "AI-generated" or "Likely AI" verdict unless a strong signal actually supports it, which is what holds the false-positive rate at zero (see Our promise).

This approach was benchmarked against the older method of simply averaging the signals into a weighted score, and matched its zero false positives while catching more fakes. That weighting still exists as a fallback for the rare case where the AI reader is unavailable: the classifier (70%), file metadata (16%) and image noise (14%).
Fallback weighting
AI image classifier
70%
File Metadata (EXIF)
16%
Image noise pattern
14%
Camera-noise, SynthID, shadow, composite Advisory input to the AI reader; no weight in the fallback score
Invisible Watermark Detected or not — instant flag, no score
Known Fakes Database Match or no match — instant flag, no score
3
Web presence check
Runs in parallel with the forensic pipeline. The image is sent to Google Cloud Vision Web Detection, which searches Google's index for exact and partial matches. This answers a key journalistic question: has this image appeared anywhere before?

A real news photograph will typically have prior web presence — published on agency sites, news outlets, or official pages. An AI-generated image designed to deceive will often have no web presence at all, because it was created specifically for this disinformation campaign. The Löfven Sora image, for example, returned zero matches — a meaningful red flag for a supposed official portrait of a former head of government.

Results show the number of matches found and the URLs of pages where the image appears.
4
AI-assisted analysis & reporting
This is the same Claude Sonnet (Anthropic) call that decides the verdict in Stage 2. Along with the category, Claude Vision examines the image and returns a structured scene description — WHO, WHAT, WHERE, WHEN, WHY — using the same five journalistic questions that form the basis of verification work. Sonnet can identify recognisable public figures, landmarks, and contexts, and it writes a plain-language explanation of why it reached that verdict, referencing the specific signals that fired. Deciding and explaining in one step keeps the verdict and the reasoning in agreement.

Claude Vision also performs a visual check: it looks for the classic giveaways that AI generators still get wrong, such as malformed hands and fingers, garbled text on signs, distorted jewellery, teeth and eyes, and reflections or shadows that do not match the scene. Anything it finds is listed as specific, checkable observations so a journalist can confirm each one by eye. This layer is advisory only: it helps you look in the right places, but it does not change the forensic verdict, and on a clean photo it stays silent rather than inventing doubts.

A location check runs on the same pass: Claude estimates where the photo was actually taken from visible evidence such as landmarks, architecture, the language on signs, vegetation and vehicles. If you add an optional caption saying what the image is claimed to show, or where and when, it compares the two and flags whether the scene is consistent with, or contradicts, that claim. This catches a common disinformation pattern: a real photo passed off with a false where or when. It is advisory and separate from the web presence check in Stage 3, which instead asks whether the image has appeared online before.

When the verdict is AI-generated or Likely AI, an editorial disclaimer is automatically added: "Do not publish without disclosure." The full report — including scene context, verdict, signals, and flags — can be exported as a PDF for documentation and editorial sign-off.

Only the image and anonymised detection results are sent to the Claude API. No identifying user information is transmitted.
All file types
🔐 Content Credentials (C2PA) Reads any cryptographic provenance signature. If present, the answer is instant. Fast exit
Checked first on every file — image or video — before any ML processing. C2PA (Coalition for Content Provenance and Authenticity) is an open standard supported by Adobe, Google, Microsoft, Sony, and others. Cameras, phones, and AI generators that support C2PA embed a cryptographically signed record directly into the file — naming the tool, the action (e.g. created via text-to-image), and the signing certificate. If found, the pipeline stops immediately — no further analysis needed.
Supported formats: JPEG, PNG, WebP, MP4, MOV, WebM. Instant result when credentials are present.
Image detectors
🧠 AI Classifier Models An ensemble of two classifiers, a precise ViT plus a Flux-trained SigLIP2/DINOv2 model, the heaviest single signal. Primary
The heaviest signal is an ensemble of two independent AI-image classifiers, scored 50/50:

Vision Transformer (haywoodsloan): 100% precision and a 0% false-positive rate on our 217-image test set. It never flags a real photograph as AI, which makes it the trustworthy anchor of the pair. Its limitation is age: it scores near 0% on generators released after its training data, not because the image is real, but because it has never seen that visual style.

SigLIP2 + DINOv2 (Bombek1): a newer dual-encoder model trained on the OpenFake dataset (25+ generators, including Flux). It was added specifically to catch the modern generators the ViT misses.

Blending the two lifts recall from 84% to 90% (fewer AI images slip through) while keeping the false-positive rate at 0%. Frequency and metadata signals still provide supporting evidence when both classifiers are uncertain.

Generator ViT + Bombek1
Stable Diffusion 1.x / 2.x / XL
Midjourney v1–v5
DALL-E 2
StyleGAN / GAN-based
Midjourney v6 / DALL-E 3⚠️
Flux 1.x (Black Forest Labs)
Sora (OpenAI), still frames⚠️
GPT Image / Gemini / Imagen 3⚠️
Kling / VEO / Runway (video)
✅ trained on  ·  ⚠️ partial / uncertain  ·  ❌ not covered (other signals carry these)
Carries 46% of the image ensemble weight. As a 50/50 blend it holds a 0% false-positive rate at 90% recall on the benchmark; Bombek1 extends coverage to Flux and other recent generators. Frequency, metadata and web-presence signals cover what the classifiers still miss.
📊 Frequency & Noise Patterns Reads the spectral fingerprint AI generators leave in high-frequency noise. Primary
Analyses the DCT/FFT frequency spectrum of the image. AI generators produce characteristic patterns in high-frequency noise — a kind of spectral fingerprint — that differs systematically from the organic noise produced by a camera sensor. This signal is difficult to remove without visibly degrading image quality.
Weight: 19%. Especially effective after JPEG compression.
📷 Camera Noise Fingerprint Looks for the unique sensor-noise pattern (PRNU) every real camera leaves behind. Supporting
Photo Response Non-Uniformity (PRNU): every camera sensor has a unique, repeatable noise pattern caused by microscopic manufacturing differences. Real photos retain this fingerprint; AI-generated images do not — they have random or synthetic noise with no consistent sensor signature.
Weight: 11%. Most reliable when a reference camera is known.
🗂️ File Metadata (EXIF / IPTC) Checks embedded metadata for AI software tags, generator-default dimensions, or camera and press-agency fields. Supporting
Reads embedded metadata. Strong evidence of AI generation: software tags naming an AI tool (Stable Diffusion, Midjourney, Firefly, etc.), or exact pixel dimensions that match AI generator defaults (1024×1024, 1024×1792, etc.) combined with no camera data. Strong evidence of real photo: presence of camera make, model, lens, aperture, ISO, and shutter speed fields.

Also reads IPTC press/agency fields (credit line, copyright, byline) embedded by photo agencies and government photo offices. When a press credit is detected — e.g. "The White House", "AFP", "Getty Images" — the score is adjusted downward and missing camera EXIF fields are treated as normal (press photos are routinely stripped of sensor data by distribution systems).
Weight: 10%. Conclusive only when AI software tag is present.
🌊 Spectral Watermark (SynthID) Detects Google DeepMind's imperceptible SynthID watermark in Imagen and Gemini images. Tie-break
Google DeepMind's SynthID embeds an imperceptible watermark into the frequency domain of images generated by Imagen and Gemini. This detector looks for SynthID-compatible patterns that survive resizing and moderate compression.
Weight: 5%. Specific to Google AI tools; low false-positive rate.
🔖 Invisible Watermark Looks for other low-amplitude watermarks some generators embed. Tie-break
Checks for other invisible watermark patterns embedded by AI generators. Several platforms (e.g. Stable Diffusion XL, Midjourney) optionally embed low-amplitude watermarks that are detectable even after moderate image editing.
Acts as a tie-breaker; not weighted in the main score.
🗄️ Known Fakes Database Matches the image against a daily-updated database of already-debunked fakes. Tie-break
Compares the image against a local database of previously identified AI-generated and manipulated images using perceptual hashing (pHash). A match — even after cropping, resizing, or re-compression — returns an immediate positive result with a link to the original fact-check. The database is updated daily from Google Fact Check Tools, AFP, Snopes, PolitiFact, and the Database for Known Fakes (DBKF) by Ontotext — which aggregates 22,000+ ClaimReviews from 35+ fact-checkers worldwide.
Effective only for images already in the database. Coverage grows with each daily update.
🤝 Community Database Instantly returns a stored verdict for an image analysed here before. Automatic
Every image analysed with sufficient confidence is automatically added to the local community database. A perceptual hash of the image — not the image itself — is stored alongside the verdict. Future uploads of the same image (even after cropping or re-compression) will instantly return the stored verdict without re-running the full pipeline. No images or personal data are stored or shared.
Grows automatically over time as more images are analysed.
💡 Shadow & Light Consistency Flags physically impossible lighting, shadows and highlights that disagree across the scene. Tie-break
Divides the image into a grid of regions and estimates the dominant light source direction in each region using luminance gradients. In a real photograph, light comes from one source — shadows and highlights are consistent across the scene. AI generators, and composite images that paste subjects from different photos, frequently produce lighting that is physically impossible: shadows pointing in different directions, or highlights inconsistent with shadow placement.

Measures the angular spread and circular variance of gradient directions across regions. A spread above 70° between regions flags inconsistent lighting.
Weight: 5%. Most effective on images with clear shadows or directional lighting. Skipped on flat/low-contrast images.
🔀 Composite Detection Spots images that stitch AI and real regions together, a common disinformation trick. Tie-break
Detects images that mix AI-generated and real-photo regions — for example, a real person's face pasted onto an AI-generated background, or an AI object inserted into a real photograph. This is one of the most common manipulation techniques in disinformation.

Divides the image into a 3×3 grid and computes three forensic signals per region: Error Level Analysis (ELA) — how a region responds to re-compression; noise variance — the texture randomness of the region; and frequency energy ratio — the high-to-low frequency balance. When these signals vary sharply between adjacent regions, the image is likely a composite.
Weight: 4%. When composite and shadow signals fire together, the ensemble raises the overall score to at least Likely AI.
🌐 Web Presence (Google Vision) Asks whether the image has appeared online before. Context, not a score. Context
Searches Google's image index for prior appearances of the uploaded image. Runs in parallel with the forensic pipeline so it adds no extra waiting time.

Only exact matches are treated as meaningful — these mean the same image (or a crop/resize of it) has been published somewhere before. A real news photograph will typically have exact matches on agency sites, news outlets, or official pages.

An AI-generated image created for disinformation often has zero exact matches — it was made specifically for this campaign and never published before. Zero matches for a supposed official portrait of a public figure is a significant red flag.

Visually similar images (other photos with similar content — e.g. other politicians in suits in front of EU flags) are shown separately as context, not as matches. They do not indicate the image has been published before.
Does not contribute to the AI score — provides editorial context. Requires Google Cloud Vision API.
Video detectors
🎞️ Frame-by-frame AI Classification Runs the image classifier on sampled frames and aggregates the scores. Primary
Samples frames at regular intervals and runs the same AI classifier models used for still images on each frame. The per-frame scores are aggregated into an overall video score and displayed on the timeline.
Temporal Flicker Measures the frame-to-frame flicker AI video generators tend to produce. Supporting
Measures frame-to-frame consistency. AI video generators (Sora, Runway, Pika) often produce subtle flickering in textures, hair, and background detail because each frame is generated semi-independently. Real camera footage is optically consistent between adjacent frames.
📡 PRNU Consistency Checks whether the camera sensor fingerprint stays stable across frames. Supporting
Checks whether the camera sensor noise fingerprint (PRNU) remains stable across frames. In a real recording from one camera, the sensor fingerprint is constant. In AI video, each frame lacks a consistent fingerprint.
📋 Video File Metadata Reads container headers for AI-tool tags and missing camera data. Tie-break
Reads container metadata (MP4/MOV/WebM headers). Checks for software tags from AI video tools, missing camera sensor data, and codec configurations typical of AI-generated video exports.
Text detectors

The text analyser helps journalists assess whether a reader letter, press release, tip, or document was written by an AI. Accepts pasted text or a PDF upload. Two independent signals are combined into a single verdict.

🧠 Claude Sonnet — Qualitative Analysis Claude reads for the human signals AI writing misses and the patterns it adds. Primary · 70%
The text is sent to Claude Sonnet (Anthropic) with a forensic linguistics prompt. It looks for signals that human writers naturally produce but AI models tend to lack: emotional register, personal anecdotes, specific names and places, inconsistent grammar, and idiosyncratic phrasing. It also flags AI-typical patterns: formulaic transitions ("Furthermore", "It is important to note"), uniform paragraph structure, impersonal stance on personal topics, and suspiciously comprehensive yet generic recommendations.
Returns a score, up to 5 flags, a plain-language explanation, and highlights the most suspicious phrases in the text.
📊 Statistical Signals Local metrics, sentence-length variation, vocabulary richness, average length, no API call. Supporting · 30%
Three lightweight signals computed locally without any API call:

Burstiness — measures sentence-length variation. Human writers naturally alternate between short punchy sentences and long complex ones. AI text is suspiciously uniform: sentence lengths cluster tightly around the mean.

Type-token ratio — unique words divided by total words. AI text tends to repeat vocabulary more than human writing of equivalent length.

Average sentence length — AI models gravitate toward 18–28 words per sentence. Very short or very long sentences skew toward human.
Runs instantly, no API cost. Most reliable on texts of 100+ words.
  • Text detection is less reliable than image analysis. A skilled human writer can score high; a careless AI user can score low.
  • Short texts (under 100 words) produce unreliable statistical signals — Claude's qualitative analysis still runs, but confidence will be lower.
  • AI writing patterns evolve. Models are improving at mimicking human style. This tool reflects patterns as of early 2026.
  • PDFs are extracted as plain text. Scanned PDFs (images of paper) cannot be read — the text must be machine-readable.
  • Use the result as one signal alongside editorial judgement, not as proof of AI authorship.
What each verdict means
🤖 AI-generated Multiple strong signals agree. Treat as AI: do not publish without disclosure.
⚠️ Likely AI Probable AI origin. Verify independently before publishing.
🔎 Inconclusive Signals conflict or are weak. We cannot tell. Verify by other means before using the image.
Little sign of AI No significant signs of AI. Consistent with a real photo. Apply your normal editorial checks.
📷 No signs of AI Nothing points to AI generation, or provenance is cryptographically verified. This is the strongest clean result, but it is not proof that a photo is authentic.

These are levels of evidence for AI generation, not a real-versus-fake score. We detect signs of AI; the absence of those signs is not proof a photo is authentic. There is no percentage on purpose: the underlying signals are not calibrated probabilities, so a number like "86%" would imply a precision the tool does not have. We report a clear category and a recommended action instead. See Our promise at the top for why we tune this way.

What we tested and left out

Every signal in this tool had to clear one rule: it must not wrongly flag a real photograph as AI. In a newsroom, falsely calling a genuine photo "fake" is more damaging than occasionally missing a fake, so any check that could not hold that line was left out, however advanced it sounded. Here is what we tried, what the numbers said, and why some things are not in the tool.

🧪 "Universal" open classifiers (dima806, Ateeqq, prithivMLmods) Tested and rejected: 39–56% false positives on real news photos. Rejected
Several widely used open detectors advertise 99% accuracy. On our 217-image test set of real and AI images, they collapsed. Ateeqq (a SigLIP model) flagged 39% of genuine photographs as AI; prithivMLmods flagged 56%; dima806 failed to identify any AI images at all. Those headline numbers come from a lab; we test on messy, real-world news photography. We kept the one model that held a 0% false-positive rate (haywoodsloan) and added a second, Flux-trained model (Bombek1) only after it beat every alternative at that same 0% bar, which is how the classifier reached its current 90% recall.
🔬 DIRE (diffusion reconstruction error) Built, benchmarked, removed: flagged 84% of real photos as AI. Removed
DIRE is a well-regarded academic method that flags images a diffusion model can reconstruct too perfectly. We built it, wired it into the pipeline, and benchmarked it. It flagged 109 of our 130 real photographs as AI (an 84% false-positive rate), including archival press photos and campaign portraits, most at maximum confidence. It also hung for 45 to 60 seconds per image on our CPU server. For journalism that failure mode is disqualifying, so we removed it. A properly calibrated reconstruction detector (AEROBLADE-style) might work, but that is a research effort we have not judged worthwhile while the classifier ensemble already covers modern generators.
🧩 TruFor (splice / manipulation localization) Tested and rejected: 19% false positives on real news photos, including genuine campaign portraits. Rejected
TruFor is the best-regarded academic model for spotting spliced or locally manipulated images (a real photo with an AI element pasted in), the capability our old camera-noise and composite checks did badly. We set it up and ran it over our 130 real photographs: it flagged 19% of them as manipulated at the standard threshold (48% at a stricter one), including genuine Obama and Hillary Clinton campaign photos, a Berlusconi portrait, and an Afghanistan mother-and-child, some at 90% confidence. The reason is a domain gap: it was trained on clean laboratory splices and has never seen the heavy compression, cropping, and agency processing that every real wire photo carries, which it misreads as tampering. It also scored fully-AI images lower than real ones, because it hunts local splicing rather than full synthesis. It fails our no-false-accusations rule, so it is out. FakeShield, a newer model that reasons about manipulation rather than sniffing noise, is the only different approach left to try.
🌊 AI watermark detection (SynthID) Only an approximation today: the real detectors are gated or self-watermark-only. Approximation
Our SynthID check is a home-grown approximation, not Google's real detector, and we do not lean on it. The honest 2026 picture: SynthID for text is open source but only detects text you watermarked yourself, not third-party output like Gemini or ChatGPT. SynthID for images can only be verified with Google's private keys, through their hosted portal or partners, not a downloadable model. A community model that learns to recognise the watermark pattern exists, and we may benchmark it. In practice, images that OpenAI stamps with SynthID also carry C2PA Content Credentials, which our very first check already catches.
⚖️ Classic forensic heuristics (ELA, noise consistency, shadows) Now advisory: weighed with caution because they misfire on real photos. Advisory
A few classic forensic signals, Error Level Analysis for compositing, camera-noise consistency, and shadow-direction analysis, are known to produce false positives on ordinary editing, JPEG compression, and blurred backgrounds. When we benchmarked them on 201 images they scored real and AI photos almost identically. In the old averaged score their low readings actually dragged genuine AI images below the threshold, so we dropped them from that average (which lifted recall from 82% to 90% with no change to the 0% false-positive rate). Now that the AI reader weighs the evidence rather than averaging it, these checks are handed back in as advisory input: it is told they are unreliable and weighs them lightly, so they can add colour without dragging the verdict around. They are marked "advisory" in the evidence list and their raw notes stay under Technical details.

We would rather be corrected than wrong. If you have one of these methods working reliably, or think we have mis-configured a signal, tell us and we will re-benchmark it. Get in touch via larsanderson.com.

Limitations & honest caveats
  • No detector is perfect. This tool is a forensic aid — it raises or lowers suspicion, it does not deliver legal proof.
  • Heavily compressed, downscaled, or screenshot images reduce accuracy significantly. EXIF and watermark signals are usually destroyed by screenshots.
  • AI generators evolve rapidly. Models trained on older generators (StyleGAN, early SD) may not detect the latest ones (Sora, GPT-4o image gen, Flux).
  • The absence of EXIF data alone is not suspicious — most images shared on social media have EXIF stripped by the platform.
  • A real photo that has been digitally manipulated (deepfake face swap, inpainting) may score lower than a fully AI-generated image.
  • Some generators deliberately remove watermarks or mimic camera metadata. Adversarial techniques can fool individual signals.
  • C2PA adoption is still growing. Most images today have no C2PA signature regardless of origin.
  • Sora (OpenAI) reliably embeds C2PA credentials in generated videos, but still images exported from Sora currently carry no C2PA data. The ML pipeline handles these, but scores may be lower than for video.