Scanner queue
Add sites here and a background worker scans them in order. Each item runs
DNS badwords → DNS liveness → full scan, so an
obviously adult hostname (e.g. pornhub.com) is rated 10 from
its name alone — no page fetch and no ONNX models. Dead/parked domains are
dropped before any scan. A rating-10 result is written back to
known_domains with source=self and the scan type
that decided it (text / image / website / dns-badwords).
Add a site
Do we know this file?
A sha256 of a file you have. We look the bytes up in our database — nothing is downloaded, nothing is scanned.
Want to report a scan you ran yourself? Log in — a free account is enough, no API key needed.
Background worker
The queue is processed by the Python worker, not by the page request. Activate it once (it keeps running):
run.bat scan-worker
or schedule one batch (Windows Task Scheduler):
schtasks /Create /SC MINUTE /MO 5 /TN "Modesty scan worker" /TR "\"%CD%\run.bat\" scan-worker"
Linux/macOS cron:
*/5 * * * * cd /path/to/NSFW && ./run.sh scan-once --limit 50
Running batches from the page requires admin; use
run.bat scan-once instead.
Scanning files & videos from the command line
The media scanner lives in the library and the CLI — a local file never goes through the website (that is also why the website only accepts a sha256, never a path).
# a local video: frames sampled at 1 fps + the subtitles nsfw-scan "D:\Videos\My Clip.mp4" --details # every frame - for hunting hidden messages nsfw-scan clip.mp4 --every-frame --max-frames 5000 # denser sampling, or a local image nsfw-scan clip.mp4 --fps 0.5 nsfw-scan photo.jpg --details # match first, scan only what we do not know yet nsfw-scan clip.mp4 --db packages/nsfw-db/data/nsfw.sqlite # local DB (free) nsfw-scan clip.mp4 --hash-list hashes.txt # offline list (free) nsfw-scan example.com --api-url https://api.example --api-key nsfw_live_... # paid nsfw-scan example.com --ignore-db # ignore everything # or through the queue: the worker does the work run.bat scan-add --kind media "D:\Videos\My Clip.mp4" run.bat scan-once --limit 5
A video scan needs ffmpeg and ffprobe on
PATH (or NSFW_FFMPEG / NSFW_FFPROBE); without
them the scanner says so instead of guessing. The answer holds the
problems: the frame, the subtitle line and the second
where it was found.
Queue (latest 200)
| # | Target | Mode | Queue | Verdict | Source / type | Added (UTC) | Status |
|---|---|---|---|---|---|---|---|
| 0 | — | — | — | not checked |