Booru Taggers for ComfyUI
An improved and extended node of various Booru taggers (WD taggers, Pixai, Camie, etc.)
Nodes (3)
ComfyUI Booru Tagger
A ComfyUI extension that looks at an image and writes booru-style tags for it (1girl, long hair, smile, ...), ready to use in a prompt. It bundles 25 open tagger models from five families — WD, Pixai, Camie, CL Tagger and AnimeTimm — and downloads them for you on first use.
- Many models, one node. Switch taggers from a dropdown; each model's own preprocessing and recommended thresholds are applied for you.
- Batches. Tag a whole image batch in one run and get one tag string per image.
- Separate tag groups. General, character (with copyright and artist) and rating come out as separate outputs.
- Fast on GPU. On CUDA/ROCm, images are prepared on the GPU and passed straight to the model.
Installation
-
Install Booru Tagger from ComfyUI-Manager or the Comfy Registry (
comfy node install booru-tagger). Dependencies are installed automatically.Or clone this repo into
ComfyUI/custom_nodesand runpip install -r requirements.txtin ComfyUI's Python environment. -
Restart ComfyUI.
-
Optional: to use the gated models (CL Tagger v2 and AnimeTimm), see Gated models.
Quick start
- Add Load Booru Tagger and pick a model.
- Add Booru Tagger and connect
tagger_model,tagger_info,thresholdandcharacter_thresholdfrom the loader, plus yourIMAGE. - Send
tagsto a text/preview node or straight into a prompt.
The first run downloads the model into ComfyUI/models/booru_tagger/<model name>/, which can take a while for the large ones. Later runs reuse the files.
Nodes
Load Booru Tagger
Loads a model and its tag list, downloading them if missing.
| Output | Description |
|---|---|
| tagger_model, tagger_info | Connect both to Booru Tagger. |
| threshold, character_threshold | The model's recommended thresholds. Connect them to Booru Tagger to use them. |
Booru Tagger
| Input | Default | Description |
|---|---|---|
| image | | Image or image batch to tag. |
| threshold | 0.35 | Minimum confidence for general tags. Lower gives more tags, higher gives fewer but surer ones. |
| character_threshold | 0.85 | Minimum confidence for character, copyright and artist tags. |
| use_best_threshold | on | Also apply the per-tag thresholds shipped with AnimeTimm and Pixai v1.0. Turn off to rely only on the two thresholds above. Other models ignore it. |
| trailing_comma | off | End every tag with a comma (tag1, tag2, ), useful when concatenating strings. |
| sort_tags | off | Order tags by confidence instead of the model's tag order. |
| exclude_tags | | Comma-separated tags to drop, e.g. simple background, white background. Case, underscores and spaces don't matter. |
| chunk_size | 0 | How many images go through the model at once. 0 = whole batch. Lower it if you run out of VRAM. |
| replace_underscore | on | Write long hair instead of long_hair. |
If threshold and character_threshold are left unconnected at their defaults, the model's recommended values are used instead, with a one-time note in the console.
| Output | Description |
|---|---|
| tags | Character tags followed by general tags. Usually what you want for a prompt. |
| general_tags | Descriptive tags: appearance, clothing, pose, background, composition. |
| character_tags | Character, copyright (series) and artist tags. |
| rating | The single most likely rating. The wording depends on the model, e.g. general / sensitive / questionable / explicit for WD. |
Each output is a list with one string per input image. Parentheses are escaped (star \(symbol\)) so tags can be pasted into a ComfyUI prompt without being read as weights.
Unique Tags
Removes duplicate tags from a comma-separated string, keeping the first occurrence. Handy after joining the output of several taggers.
Choosing a model
Any model works for general use. Some pointers:
- Fast and simple: WD v3 models (
wd-eva02-large-tagger-v3is the largest,wd-vit-tagger-v3andwd-convnext-tagger-v3are lighter). No login needed. - Newest and largest vocabulary: Pixai Tagger v1.0 (30,877 tags) and CL Tagger. Pixai v1.0 runs at 1008×1008, so it is heavy: use the FP16 variant on a GPU, FP32 on CPU, and set
chunk_sizeif VRAM is tight. - Calibrated per-tag thresholds: AnimeTimm models, with
use_best_thresholdon.
| Model | Tags | Input size | License | Login needed |
|---|---|---|---|---|
| WD v3: wd-eva02-large-tagger-v3, wd-vit-large-tagger-v3, wd-vit-tagger-v3, wd-swinv2-tagger-v3, wd-convnext-tagger-v3 | 10,861 | 448² | Apache-2.0 | No |
| WD v1.4 v2: moat, convnextv2, convnext, vit, swinv2 | 9,083 | 448² | Apache-2.0 | No |
| WD v1.4 v1: convnext, vit | 6,549 | 448² | see model page | No |
| Pixai Tagger v0.9 | 13,461 | 448² | Apache-2.0 | No |
| Pixai Tagger v1.0 (FP16 / FP32) | 30,877 | 1008² | Apache-2.0 | No |
| Camie Tagger v2 | 70,527 | 512² | GPL-3.0 | No |
| CL Tagger v1 (1.00 / 1.01 / 1.02) | 42,163 | 448² | Apache-2.0 | No |
| CL Tagger v2 (2.00 / 2.01a) | 106,536 / 108,036 | 384² | Custom | Yes |
| AnimeTimm swinv2_base | 12,476 | 256² | GPL-3.0 | Yes |
| AnimeTimm caformer_b36 | 12,476 | 384² | GPL-3.0 | Yes |
| AnimeTimm eva02_large | 12,476 | 448² | GPL-3.0 | Yes |
| AnimeTimm ConvNeXtV2 Huge | 12,476 | 512² | GPL-3.0 | Yes |
Notes:
- Pixai Tagger v1.0 uses the community ONNX conversion by Mexes. Its artist (called "style" on the model card) and copyright tags go to
character_tags. Withuse_best_thresholdon, each category keeps the model card's threshold: general 0.17, artist 0.15, copyright 0.24, character 0.27. - AnimeTimm ConvNeXtV2 Huge uses the community ONNX conversion by itterative with the official AnimeTimm tag list and preprocessing.
- Recommended AnimeTimm thresholds (general / character): eva02 0.39 / 0.61, caformer 0.39 / 0.47, swinv2 0.41 / 0.59, ConvNeXtV2 Huge 0.38 / 0.51.
Gated models
CL Tagger v2 and the AnimeTimm models require accepting their license on Hugging Face before download:
- Open the model page (linked above), sign in and accept the terms.
- Run
hf auth loginonce in ComfyUI's Python environment, or set theHF_TOKENenvironment variable to your token. - Restart ComfyUI and run the loader again.
Configuration
Defaults live in models.json in the extension folder. Updating the extension may overwrite your edits, so keep a copy.
| Setting | Description |
|---|---|
| settings.model | Model selected by default in the loader. |
| settings.threshold, settings.character_threshold | Global default thresholds. |
| settings.exclude_tags | Default for exclude_tags. |
| settings.ortProviders | ONNX Runtime providers in order of preference. Providers your onnxruntime build lacks are skipped with a warning. |
| settings.preprocess | "tensor" (default) prepares images on the GPU; "pil" uses the CPU/PIL path. Both give the same tags. |
| settings.ortIoBinding | Pass GPU-prepared images to the model without copying them back to the CPU (CUDA/ROCm only). Falls back automatically if unsupported. |
| settings.ortIntraOpThreads | CPU threads for ONNX Runtime. 0 = automatic. |
| settings.HF_ENDPOINT | Hugging Face mirror for downloads. The HF_ENDPOINT environment variable takes priority. |
| threshold, character_threshold | Per-model recommended thresholds, returned by the loader. |
| logging | true prints extra debug messages. |
Troubleshooting
- 401 / authentication error while downloading: the model is gated. See Gated models.
- Downloads fail or are slow: set
HF_ENDPOINTto a Hugging Face mirror, or download the files manually intoComfyUI/models/booru_tagger/<model name>/using the file names inmodels.json(model_path,metadata_path). Your Hugging Face token is only sent to huggingface.co, so gated models still need a direct connection. - Out of memory: lower
chunk_size, or choose a smaller model (or Pixai v1.0 FP16 instead of FP32). - Runs on CPU although you have an NVIDIA GPU: check the
Using ORT providersline in the console. IfCUDAExecutionProvideris missing, the installedonnxruntime-gpudoes not match your CUDA setup. - Too many / too few tags: adjust
thresholdandcharacter_threshold, or toggleuse_best_threshold. - Upgrading from ComfyUI-WD14-Tagger: model files found in
ComfyUI/models/wd14_taggerare moved to the new location automatically.
Credits
Based on pythongosssss/ComfyUI-WD14-Tagger, with ideas from SmilingWolf/wd-v1-4-tags and toriato/stable-diffusion-webui-wd14-tagger.
Models by SmilingWolf (WD), pixai-labs (Pixai), Camais03 (Camie), cella110n (CL Tagger) and DeepGHS / narugo1992 (AnimeTimm).