
Contents
NSFW checks have become one of the most-used tools on Sightova. Marketplaces, dating apps and communities run uploads through them before anything goes live. Catching explicit images is the job everyone expects. What decides whether moderation works in practice is the other side: leaving everything else alone.
The false-alarm problem
Early moderation filters looked for skin. They flagged beach holidays, gym selfies, swimming galas and wedding photos, and every one of those flags was a real person whose photo disappeared for no reason. A wrongly removed profile picture or product photo costs a support ticket at best and a user at worst, and a filter that cries wolf teaches moderators to ignore it.
So the question we care about is not only "does it catch explicit images?" but also "what does it do with a bikini, a sports top or a strapless dress?"
Five everyday photos, five scores
We made five ordinary photos with plenty of visible skin and nothing explicit: adults playing beach volleyball in swimwear, a yoga class, a bride in a strapless gown, a swimmer climbing out of a pool, and a baker in a sleeveless top. We generated them with Google's Nano Banana models so that no real person's photo is involved, then ran each one through Sightova's production NSFW model.
| Photo | What's in it | NSFW probability |
|---|---|---|
| Beach volleyball | Four adults in swimwear | 0.12% |
| Yoga class | Sports top and leggings | 0.11% |
| Wedding dance | Strapless gown | 0.12% |
| Swimmer | Bare chest, swim trunks | 0.09% |
| Baker | Sleeveless top | 0.01% |
By default an image is flagged at 50%. The highest score here, 0.12%, is more than 400 times below that line. None of them came close.
How the score works
Sightova's NSFW model answers one question: how likely is it that this image is explicit? It returns a single probability between 0 and 1, plus a yes or no at the default 50% line. It doesn't split content into dozens of sub-categories; it gives you one number your own policy can act on.
Alongside the score, the dashboard reads the file's content credentials and camera metadata, which helps when you also need to know where an image came from.
Set your policy in bands
A single probability is easy to turn into policy. Most teams use three bands:
- Publish below a low threshold. Everyday photos like the five above land here.
- Hold for review in the middle band: blur the image or queue it for a moderator.
- Remove above a high threshold.
Where you draw the lines depends on your platform. A children's learning app will want a cautious review band; an art marketplace may accept more. The simplest way to pick the lines is to run a week of your own uploads through the API and look at what lands in the middle.
Check at upload, not after reports
Moderation works best at the door. With report-based moderation, someone has already seen the image by the time you act. Checking at upload takes one API call per image:
POST /api/v1/detect/nsfw
{
"nsfw": {
"nsfw_probability": 0.0012,
"is_nsfw": false
}
}That is the response for the volleyball photo above, trimmed to the NSFW block. The full format is in the API docs.
NSFW and AI detection answer different questions
An NSFW score tells you what an image shows. It doesn't tell you whether the image is real. Synthetic explicit images, including deepfake nudes of real people, are a growing part of what moderation teams see, and they need a second check: was this image generated or edited by AI? Sightova runs that as a separate scan with its own endpoint. See deepfake detection and how we test our AI image detector.
Where teams use it
- Dating apps check profile photos before they reach search and matching: dating platform fraud detection.
- Social platforms and communities check posts and chat images: social media and content moderation.
- Marketplaces check listing photos before they go live: e-commerce.
- Any upload form can use the same check: NSFW image detection and image content moderation.


