Image safety detection

Check an image for NSFW content

Drag & drop, paste, or pick an image — get an NSFW probability and a suggested decision in seconds. Free, no login; your image is analyzed in memory and never stored.

Drag & drop an image here, or click to select

JPEG / PNG / WebP / BMP / TIFF / GIF · up to 50 MB

No login requiredThree languagesSingle image ≤ 50 MBImages never stored

What it does

Probability + suggested decision

Every check returns an NSFW probability plus a suggested decision — allow, review or block — so you can act without guessing.

Explainable thresholds

The result shows the allow and block thresholds next to the score. You see exactly why a decision was suggested — and you own the final policy.

Web, API and Agent Skill

Drag & drop on this site, call the REST API from your backend, or let your coding agent self-install the Skill. One quota, three channels.

Private by design

Images are analyzed in memory and never stored — no copies, no fingerprints, no training. Anonymous calls leave only a salted daily IP hash.

Free quotas

Daily quotas reset at 00:00 UTC.

Anonymous

10/min · 30/day per IP

No account needed. Just drop an image.

Free account

10/min · 100/day

Sign in free — quota follows your account, not your IP.

Sign up / Log in

Pro

30/min · 10000/day

Invite-only during beta. See pricing for details.

Upgrade to Pro

Agent Skill access

Let your AI coding agent check images by itself: a one-shot install prompt sets the Skill up in its own platform, and it stays up to date from this site.

One-shot install (recommended)

Paste the prompt below into your AI assistant — it fetches the install guide, installs the skill into its own platform's skills directory, and verifies the result by itself.

Install the LiteNsfwDetector skill for me: fetch /docs/skill.md and follow its install steps to install the skill into your platform's skills directory, then verify the installation. Afterwards, briefly tell me what you can now do for me (score an image for NSFW content with an allow / review / block suggestion).

More about the Skill

API access

One POST per image: send a file, get scores and a suggested decision as JSON. HTTP status is the failure class, so integration stays boring.

Request

curl -sS -X POST /api/open/detect \
  -H "Authorization: Bearer $NSFW_API_KEY" \
  -F "file=@/path/to/image.jpg"

Response

{
  "code": 0,
  "message": "ok",
  "data": {
    "decision": "allow",
    "scores": {
      "nsfw": 0.0421,
      "sfw": 0.9579
    },
    "thresholds": {
      "allow": 0.2,
      "block": 0.8
    },
    "image": {
      "sha256": "9f2c…",
      "format": "jpeg",
      "width": 1024,
      "height": 768,
      "bytes": 184320,
      "frames": 1
    },
    "timing_ms": 213
  }
}

Account, quota and keys

Your usage, your API keys and your plan live in one place.

Open account

Free to start, upgrade when you need more

Anonymous checks are free forever. Sign in for 100 images/day; Pro raises it to 10,000/day.

See pricing & limits

FAQ

What do the thresholds mean?

Scores below the allow threshold are considered safe, scores at or above the block threshold are considered NSFW, and everything in between lands in review — the gray zone where a human should decide.

Do you store my images?

No. Images are analyzed in memory and discarded when the response is delivered. Nothing is written to disk, and nothing is used for training.

How do quotas and API keys work?

Anonymous web calls share a per-IP quota (30/day). A free account raises it to 100/day across all your keys; Pro raises it to 10,000/day. Quotas reset at 00:00 UTC.

Which formats and sizes are supported?

JPEG, PNG, WebP, BMP, TIFF and GIF up to 50 MB per image. Animated images are scored per frame.

How accurate is it? Should a human still review?

The model returns a probability, not a verdict — that's why every result carries a suggested decision. For gray-zone scores (review), a human should make the final call.