PassRealPricingApp

What Sightengine measures when it scores an image

Sightengine is a moderation API that returns a probability score for AI generation alongside its other classifiers. It is rarely used directly by a person; it sits inside an upload pipeline, and whoever integrated it chose the threshold above which a file is held. That threshold, not the model, usually decides what happens to a given image.

Naturalization before and after on a generated image, full frame and two enlargements of the highest-texture area
Source: ai-sdxlt-02.png, 1024×1024. After: JPEG, Google Pixel 8 Pro EXIF, Google (mesurée) quantization table. SSIM 0.8816, PSNR 32.7 dB. Full image on both sides, then the same detail at 100 % zoom and 200 % zoom.

A score, not a verdict

The first thing worth understanding about Sightengine is that it does not decide anything. It returns numbers. A generated-image model produces a probability, the same way its nudity and violence models do, and the platform that bought the API decides where the line falls.

This matters more than any property of the model. Two marketplaces can run the identical version of the identical classifier and treat the same file differently, because one holds everything above a middling score for review and the other publishes anything under a high one. When people report wildly different experiences with "the same detector", threshold choice explains most of it.

It also means the useful question is not whether a file scores zero. It is whether it lands under whatever line the platform drew, which is not published and which changes when a platform gets burned.

What the pixel model separates on

Classifiers of this kind learn the statistical differences between camera output and model output, and those differences are consistent enough to be learnable.

A photograph has a noise floor. Every sensor produces read noise and shot noise, varying with ISO, and that noise is present in flat regions where there is nothing else to see. Generated images have flat regions that are genuinely flat.

A photograph has an optical falloff. Lenses resolve less at the edges than at the centre, and refract colour channels differently as light strikes the sensor at increasing angles. Generated images are uniformly sharp corner to corner and have perfectly registered channels.

A photograph has been through exactly one lossy encode, usually in-camera. Generated images arrive either as lossless PNG or as a JPEG encoded by a library with default tables.

What processing changes, in the same terms

The sensor stage restores a noise floor at intensity 0.018 and applies lateral chromatic aberration that reaches 1.25 px at the corners and vanishes at the centre. Both are cheap for a classifier to notice by absence and awkward for it to dismiss when present.

The frequency stage attenuates the periodic upsampling residue at 0.88 of Nyquist. This is the trace that gives away a decode step regardless of what the picture shows.

The final encode writes real camera EXIF and the quantization table of the make it declares, which addresses the metadata inspection running beside the model rather than the model itself.

Testing against it yourself

Published figures from any vendor, including this one, describe someone else's images on someone else's day. Your own numbers cost an afternoon.

Twenty files is enough to see a direction and not enough to be confident about its size. That is usually the right amount of certainty for deciding whether a tool is worth paying for.

The part worth saying plainly

Detectors are retrained, and a pipeline tuned against last year's version of a classifier is tuned against something that no longer exists. Any published pass rate is a measurement of one model version, on one image set, on one day.

Which is why this page carries none. Score your own files, before and after, on the free tier, and decide from your own numbers.

What is checkedValue
Accepted formatsPNG, JPEG, WebP
Maximum size20 MB
Maximum dimension8192 px on the longest side
Sensor grain intensity0.018
Lateral chromatic aberration1.25 px at the corners, none at the centre
Frequency cutoff0.88 of Nyquist

Questions

Does Sightengine give a yes or no answer?

No. It returns a number between zero and one for each model it runs, and the integrator decides what to do with it. A file scoring in the middle may be published on one site and queued for review on another, using identical scores from identical software.

Where do I encounter it?

Inside someone else's upload flow. It is sold as an API for user-generated content moderation, so it typically runs on a marketplace, a community platform or a dating service, alongside checks for nudity, violence and offensive text.

Does it read metadata?

The generated-image model works on pixels. Whoever integrated it may also inspect metadata separately in the same pipeline, and that inspection is usually the cheaper of the two checks, so it often runs first and settles the matter before any model is called.

What kind of images does it score highest?

Clean, high-contrast subjects with smooth gradients and no noise floor: product renders, portraits on plain backgrounds, stylised illustration. Busy natural texture scores lower, because the statistics it separates on are less distinguishable there.

Can I test my own file against it?

Sightengine offers a public demo and a free API tier, so a single file can be scored without an integration. Do this before and after processing on your own images rather than relying on anyone's published figures, including ours.

Limits

Naturalization operates on the pixels and on the file, not on the content of the image. A subject that is implausible - six fingers, inconsistent reflections, text that does not read - stays implausible after processing, and a human reviewer will notice it. PassReal changes what a statistical classifier measures, not what a person sees.

Results vary by generator, by subject and by detector, and detectors are retrained. No pass rate is published on this page because none has been measured in a way that would still hold next month.

Process three images free

Three images, no card, no expiry.