AI image detector

Stable Diffusion detector

Local Stable Diffusion tools write the whole recipe — prompt, negative prompt, sampler, seed, model — into the image file. Drop a PNG and GPTTrace will show it to you, or fall back to a pixel check if it has been stripped.

Free · no sign-up · your file never leaves your device

Drop a Stable Diffusion PNG or JPEG, click to choose, or paste

JPEG · PNG · WebP · AVIF · HEIC (Safari) — checked on your device

The most self-documenting AI images

Stable Diffusion is open source, so it is run in many front-ends — AUTOMATIC1111, Forge, ComfyUI, InvokeAI, Fooocus, SD.Next — and almost all of them save the generation settings into the PNG by default. Hobbyists rely on this: dropping a PNG back into the tool restores the exact recipe. For a detector, it means a typical Stable Diffusion PNG straight from someone’s computer contains a signed confession.

GPTTrace parses every PNG text chunk, inflates compressed ones, and checks whether the content looks like diffusion settings: a “Steps:” and “Sampler:” line, a seed, a CFG scale, a model hash, or a ComfyUI node graph with class_type entries. A match is reported as proof and the raw text is shown so you can read the prompt yourself.

When the settings are gone

Images that reach you through social media, image boards or a “save as JPEG” lose those chunks. Three signals remain.

Latent-grid dimensions

Stable Diffusion works in a compressed latent space eight times smaller than the image, and most workflows use sizes that are multiples of 64: 512×512 for SD 1.5, 1024×1024 and buckets like 832×1216 or 1216×832 for SDXL. A crop or an upscale hides this, but untouched outputs often keep it.

Decoder fingerprints

The VAE decoder that turns latents into pixels leaves a faint periodic structure. In the Spectrum view it can appear as a regular pattern of bright points — the “lattice” GPTTrace measures. Upscalers and JPEG compression weaken it.

The classifier

The neural model was trained on thousands of generators, including a large range of Stable Diffusion checkpoints and fine-tunes. It is the main signal for stripped images and the one most affected by heavy editing.

A note for people who make SD art

If you post Stable Diffusion work and want to avoid being accused of passing it off as photography or hand-made art, leaving the parameters chunk in your PNGs is the simplest form of disclosure. If you sell prints or entries to contests that require human-made work, check the rules: many competitions now ask for the generation metadata as part of the submission.

What Stable Diffusion and NovelAI leave in a file

These are the traces GPTTrace checks for. “Some files only” means the trace is often missing — a re-save, screenshot or social-media upload removes metadata — so its absence proves nothing.

GeneratorWhereWhat to look forHow reliable
Stable DiffusionPNG tEXt “parameters”Prompt, negative prompt, Steps, Sampler, CFG scale, Seed and Model hash (AUTOMATIC1111, Forge, SD.Next)Documented by the vendor
Stable DiffusionPNG tEXt “prompt” / “workflow”The full node graph as JSON (ComfyUI)Documented by the vendor
Stable DiffusionPNG tEXt “invokeai_metadata”Generation settings (InvokeAI)Documented by the vendor
Stable DiffusionPixelsSizes that are multiples of 64, e.g. 512×512, 768×768, 1024×1024, 832×1216Commonly seen
NovelAIPNG tEXtSoftware = NovelAI and a Comment JSON with the generation settingsCommonly seen
NovelAIAlpha channelA “stealth pnginfo” copy of the settings hidden in the alpha channel’s low bitsCommonly seen

How accurate is it? Our measured numbers

We test GPTTrace on labelled image samples and publish the results, including where it does badly. It is tuned to keep false accusations rare, so it misses some AI content rather than flag real work.

image check: AUC 0.938 (cross-validated)

679 labelled samples (399 AI, 280 human), run 2026-10-08. At the “Likely AI” line it caught 64% of AI samples and wrongly flagged 5% of human ones.

SourceTruthSamplesResult at “Likely AI”
sdxlAI40100% caught
fullsize-photosHuman4010% wrongly flagged
open-images-photosHuman405% wrongly flagged
lfw-facesHuman400% wrongly flagged
caltech-objectsHuman403% wrongly flagged
coco-photosHuman400% wrongly flagged
ffhq-facesHuman400% wrongly flagged
celeba-facesHuman4018% wrongly flagged

Data sources and method: methodology & accuracy.

Frequently asked questions

Where does Stable Diffusion store the prompt?
In PNG text chunks. AUTOMATIC1111 and Forge write one chunk called “parameters” with the prompt followed by a line such as “Steps: 30, Sampler: DPM++ 2M, CFG scale: 7, Seed: 12345, Model: …”. ComfyUI writes two JSON chunks, “prompt” and “workflow”, containing the whole node graph. InvokeAI writes “invokeai_metadata”. GPTTrace reads all of them, including compressed chunks.
Can I see the model or LoRA that made an image?
If the parameters survived, yes: the model name and hash, and any LoRA tags in the prompt, appear in the PNG text chunks listed under your result. Model hashes can be looked up on model-sharing sites.
What if the image was converted to JPEG?
Converting usually drops the PNG text chunks, though some tools copy the parameters into the EXIF UserComment field, which GPTTrace also checks. Without either, the neural classifier and dimension checks remain.
What is NovelAI’s “stealth” metadata?
NovelAI stores a copy of its generation settings in the least significant bits of the image’s alpha channel, so it survives tools that strip text chunks. GPTTrace decodes the start of that hidden message and reports it as proof when it finds the signature.
Do fine-tuned SDXL models fool the detector?
Photorealistic fine-tunes are the hardest case for any pixel classifier, because they are trained specifically to look like camera photos. Metadata catches them reliably; pixels alone catch most but not all.