Rating Checker (GantMan)
The Old-School NSFW Classifier That Still Does the Job
- images
- labels
You don't need to know how NSFW an image is. Sometimes you just need a yes/no - or better, "is this a photo or an illustration?" That's the whole job of the Rating Checker (GantMan) node, and it does it with a model old enough to have opinions about TensorFlow.js.
What it actually is
This is the GantMan nsfw_model - the same weights that powered nsfwjs back when people were using it to filter chat apps - converted to ONNX and wrapped in a ComfyUI node. It sorts every image into exactly one of five buckets:
drawings- illustrationshentai- anime or manga-style contentneutral- general-purpose imagesporn- real-world explicit contentsexy- a sexual vibe without explicit content
Five labels, no threshold, no score, no boxes. That's the whole feature set, and that simplicity is the appeal.
How it works
The first time the node loads, it downloads nsfw_detect.onnx from a GitHub release into the pack's models/ folder and opens an onnxruntime session. Each image gets resized to 299x299, normalized into the [-1, 1] range the model expects, and pushed through; the class with the highest probability wins. One image in, one label out.
Under the hood it's a small mobile-class network. It's fast, it runs fine on CPU, and it doesn't sweat fine detail - which is exactly why it works as a coarse gate rather than a detective.
Inputs and outputs
The interface is almost insultingly simple:
- images - an IMAGE batch, the only input.
- labels - a STRING list, one label per image in the batch.
Because the output is a list, it plays well with any text-comparison node. Wire labels into a Show Text node to eyeball what's coming through, or run it into a conditional/switch and branch the graph: if the label is hentai or porn, route the image to a blur or a censor pass; otherwise let it ride.
Installing it
ComfyUI Manager: search for "ComfyUI Rating Checker". Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/tighug/comfyui-rating-checker
Then restart ComfyUI. The model downloads on first use, so that first run needs internet; after that everything's local.
Where it bites
This model was trained mostly on real photos, and it shows. Anime-style images tend to collapse into hentai or drawings no matter what's actually in frame, so don't treat it as a moderation-grade filter - it's a rough media-type check. It also always answers with a single label and no confidence floor: a 34%-vs-33% coin flip still gets a confident-looking verdict. And like the rest of this pack, its requirements.txt pins torch to 2.6.0, which can clash with a ComfyUI install already running a newer build - if you see torch errors after installing, that pin is the first suspect.
Use it for what it's good at: sorting generations into "real vs. drawn" and flagging the obviously explicit ones. For actual R15/R18 calls, the NudeNet node in this same pack is the one you want.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| labels | STRING | — |