ScarlotSoft WD14 Tagger
Turn any image into Danbooru tags, right inside the graph
- image
- TAGS
ScarlotSoft WD14 Tagger drops the community-standard WD14 image tagger straight into your workflow: feed it an image, and it returns a comma-separated list of Danbooru-style tags - 1girl, solo, long hair, blue eyes, masterpiece - as a string you can wire anywhere. No external service, no API key, no separate app. If you've ever watched someone caption a dataset and envied the automation, this is that, in a node.
Why you'd reach for it: WD14 is the standard for tag-based captioning of anime-style training data (see the KB's LoRA-training doc - for Illustrious/Pony/NoobAI bases, which were trained on Danbooru tags, this is the correct tool, not a natural-language captioner). You can also use it in the loop for img2img - pull tags off a reference image, route them into a prompt builder, and restyle. The README advertises it as built-in and self-contained, which is accurate: everything runs locally via ONNX.
The mechanism is worth knowing because it explains the settings. It uses the SmilingWolf model family (the wd-* ONNX models on HuggingFace) - the same models every tagger uses. On first run with a given model it downloads model.onnx + selected_tags.csv from HuggingFace into ComfyUI/models/scarlotsoft/wd14/ and runs ONNX inference at 448×448. The CSV's tag categories are what the two thresholds control: threshold (0.35 default) applies to general tags, while character_threshold (0.85 default) is deliberately stricter for named characters so you don't get spurious character tags on every image. exclude_tags (default blur, blurry, text, watermark) strips junk before the string is emitted. Note it analyzes image[0] - the first image of whatever batch you feed it, so a batch of four means four runs, one tag string each.
The inputs: image, model (nine SmilingWolf variants, default wd-eva02-large-tagger-v3), threshold, character_threshold, exclude_tags. The single output TAGS is a STRING - and it's an output node, so the result also shows in a read-only text box on the node for easy copy-paste.
Install
Same pack, same steps. ComfyUI Manager → search "ScarlotSoft" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/scarlotsoft/ComfyUI_ScarlotSoft
Restart. Then two first-run realities: the model download (the v3 models are large - give the first run time), and onnxruntime. There's no requirements.txt in this pack; the node tries to pip install onnxruntime itself on first import. On the Windows portable build, that auto-pip can target the wrong Python - if you hit an ImportError: No module named onnxruntime, install it manually into ComfyUI's own environment (for portable, that's python_embeded\python.exe -m pip install onnxruntime).
The honest take
This is a solid, faithful wrapper around the SmilingWolf models - the same inference every WD14 node does, self-hosted and cleanly integrated. The default of wd-eva02-large-tagger-v3 is a sensible accuracy-first choice; if you're captioning thousands of images for training, dropping to a smaller variant like wd-vit-tagger-v3 trades a little accuracy for a much faster dataset pass. Its quirks are the download-on-first-run surprise and the auto-pip dependency install - both manageable once you know about them. If you're building a captioning pipeline for anime models, this does the job without leaving ComfyUI.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| model | COMBO | wd-eva02-large-tagger-v3 | 9 options: wd-eva02-large-tagger-v3, wd-vit-tagger-v3, wd-swinv2-tagger-v3, wd-convnext-tagger-v3, wd-v1-4-moat-tagger-v2, wd-v1-4-convnextv2-tagger-v2, +3 |
| threshold | FLOAT | 0.350–1 | — |
| character_threshold | FLOAT | 0.850–1 | — |
| exclude_tags | STRING | blur, blurry, text, watermark | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| TAGS | STRING | — |