Nodes/ComfyUI_ScarlotSoft/ScarlotSoft WD14 Tagger
ComfyUI Node

ScarlotSoft WD14 Tagger

Turn any image into Danbooru tags, right inside the graph

By scarlotsoft·Created 2 months ago·Updated about a month ago· 0
ScarlotSoft WD14 Tagger
  • image
  • TAGS
modelwd-eva02-large-tagger-v3
threshold0.35
character_threshold0.85
exclude_tagsblur, blurry, text, watermark

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.

CategoryScarlotSoft/Image/Analysis

Inputs (5)

NameTypeDefaultDescription
imageIMAGE
modelCOMBOwd-eva02-large-tagger-v39 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
thresholdFLOAT0.350–1
character_thresholdFLOAT0.850–1
exclude_tagsSTRINGblur, blurry, text, watermark

Outputs (1)

NameTypeDescription
TAGSSTRING