← All guides Under the hood

A field guide to image generators and what they leave behind

What the pixel model can estimate, what the file can name, and why a detector that claims to identify the tool behind an image is overreaching.

· 8 min read · Best AI Image Detector

Pixel analysis estimates that something generative was involved. Only the file itself, through a credential or an embedded marker, can name which tool did it. Most files carry neither.

The two lanes

A detector runs two independent checks and they answer different things. Keeping them apart is the single most useful idea on this page.

Pixel analysis

  • Works after screenshots and compression
  • Returns a likelihood, not an identity
  • Generator-agnostic by design
  • Cannot name a tool
  • Degrades against unseen architectures

File evidence

  • Can name the tool exactly
  • Cryptographic when signed
  • Removed by almost every platform
  • Absent from most images
  • Trivially stripped on purpose
The left lane works on almost any image. The right lane works on the small minority that still carry their own record.

What a file can declare

When an image still carries its original structure, several kinds of marker may be present. Each is a claim made by the software that wrote it rather than something derived from the pixels.

  • Content Credentials. A signed manifest naming the tool and what it did. Some major generators now sign their output, which is the strongest form of this.
  • Generation parameters. Several open tools embed the prompt, seed, sampler and model name directly in the file, which is more information than most people expect to find.
  • Software identifiers. A plain metadata field naming the application that last saved the image.
  • Declared AI watermarks. A flag stating that an invisible watermark was applied, which is a declaration rather than the watermark itself.
  • Camera capture assertions. The opposite claim, made by a signing camera, that the file came from a sensor.

All of these disappear the moment an image is uploaded to almost any platform. That is why a file scan is worth running and never worth relying on: when it finds something the finding is strong, and it finds nothing most of the time.

Why naming the generator is hard

It sounds like it should be possible. Different tools produce different aesthetics, and a person who spends time with them can often guess correctly. That intuition does not transfer to a detector for three reasons.

Models share architectures and training data, so their statistical fingerprints overlap heavily. Many tools are fine-tunes of the same base, which makes them close to indistinguishable at the texture level even when their outputs look different to a person.

Outputs also get post-processed. Upscaling, face restoration and editing all happen after generation and rewrite exactly the texture an identification would depend on. By the time an image is published it may carry more of the upscaler than of the generator.

And the target moves constantly. Any identification model is a lookup table of things that already existed, which makes it wrong about anything released since it was trained, in a way that is silent rather than obvious.

What good coverage actually means

The useful question about a detector is not which generators it recognises by name. It is how broad the training was, because breadth is what predicts performance on the model that has not shipped yet.

Two ways to build coverage
ApproachStrengthWeakness
Train on a few major commercial toolsHigh accuracy on those toolsPoor generalisation to anything else
Train across thousands of generatorsGeneralises to unseen modelsLower peak accuracy on any single one
Look for one architecture's artefactVery high while it lastsFails completely when the method changes
Read only file markersExact when presentBlind on the majority of images

The second row is the approach used here, and the trade is deliberate. A detector that is excellent on four products and useless on the fifth is not much use for checking an image somebody sent you.

On product names

Lists of supported generators are a marketing artefact more than a technical one. A pixel model does not have a list; it has a training distribution. Naming products implies a per-tool capability that broad detection does not have and does not need.

Where a name does appear in a result here, it came from the file rather than from the pixels, and the result says so. That distinction is worth insisting on from any tool you use.

How to read a coverage claim

Vendors describe coverage in ways that sound comparable and are not. Three phrasings turn up repeatedly and each means something different.

Detects images from X, Y and Z usually means the benchmark contained those three. It is a statement about testing rather than about capability, and it says nothing about the fourth generator.

Supports over forty generators usually means the training set drew from that many sources. That is more meaningful, because breadth of training is what predicts generalisation, and it is still not a guarantee about any specific tool.

Identifies the source model is the claim to question hardest. Ask whether that identification comes from the file or from the pixels. If it comes from the pixels, ask for the accuracy of the identification separately from the accuracy of the detection, because they are very different numbers.

Questions people ask

Can a detector tell me if an image came from Midjourney specifically?
Only if the file still carries a credential or marker saying so, which is uncommon once an image has been shared anywhere. From pixels alone, no. Models built on shared architectures and training data have overlapping fingerprints, and post-processing blurs what little separates them.
Do AI generators watermark their output?
Some do, using either an invisible pattern in the pixels or a signed credential in the file, and several major tools now do one or both. Coverage is partial, open models generally do not, and any of it can be removed by cropping, re-encoding or uploading to a platform.
Why does a result sometimes name a tool?
Because the file said so. Some generators embed the model name, the prompt and the seed directly in the image metadata. That is a strong finding when present, and it is a declaration made by software rather than something derived from the picture.
Does a longer supported-generators list mean a better detector?
Not really, and it is worth being sceptical of one. A pixel model works on a statistical property shared across generators rather than on a per-product basis. A long list usually describes what was in the test set, which is not the same as what the tool can handle.
What about images from a generator released last week?
Expect reduced accuracy, in the direction of a false negative. Unseen output tends to score low rather than uncertain, which is why an image you doubt for other reasons deserves scepticism even when a check comes back clean.
Is it worth checking the file when metadata is usually stripped?
Yes, because it costs nothing and occasionally settles the question outright. A valid credential declaring AI generation ends the analysis in one step. The scan runs alongside the pixel check either way, so there is nothing to decide.