☁️BizyAir Joy Caption3
BizyAir Joy Caption3 — ComfyUI Node Guide
- image
- STRING
What it is
JoyCaption is, by a wide margin, the community's go-to model for captioning LoRA training datasets - the KB tracks 133 mentions of it in just the first half of 2026, still the most-referenced captioner in that space. Its selling point over the alternatives is straightforward: it's uncensored (so it won't refuse or sanitize NSFW training images the way many general-purpose VLMs will) and it's specifically tuned to write the kind of natural-language captions modern LLM-encoder models (Flux, Z-Image, Qwen-Image, and similar) actually want. This node is BizyAir's cloud-hosted version of JoyCaption3 - no local GPU or model download needed, just an image in and a caption out.
Reach for it whenever you're building a training dataset and need consistent, detailed captions across dozens or hundreds of images fast, or any time you just want a solid image description without standing up a local VLM.
How it works
Feed it an image and it generates a text description, but unlike a plain "describe this image" node, JoyCaption3 has purpose-built modes and controls aimed specifically at training-data workflows - you can ask for a Danbooru-style tag list, a MidJourney-style prompt, a plain descriptive caption, or several other formats depending on what your training pipeline expects.
Inputs and outputs that matter
image is required. caption_type is the important one for training work - it's a 9-way choice including Descriptive, Descriptive (Informal), Training Prompt (the one purpose-built for LoRA datasets), MidJourney, Booru tag list, Booru-like tag list, Art Critic, Product Listing, and Social Media Post. caption_length controls how long the output should run, from named lengths (very short through very long) to specific word-count targets. do_sample toggles whether the model samples creatively or takes its most likely output each time - turn it off for more consistent, repeatable captions across a batch. temperature (default 0.5) and max_tokens (default 256, up to 512) are the usual generation controls.
extra_options is worth knowing about specifically: it defaults to "If there is a person/character in the image you must refer to them as {name}," and pairs with name_input (default Jack) - a real JoyCaption feature for swapping in a consistent trigger name across a captioned dataset rather than the model inventing or omitting a name inconsistently image to image. custom_prompt lets you override the whole instruction with your own text if none of the built-in caption_type presets fit.
The single output is STRING - the generated caption, ready to save alongside your training image or feed into any text-consuming node.
Installing it
Install via ComfyUI Manager (search "BizyAir") or git clone https://github.com/siliconflow/BizyAir.git into custom_nodes, then restart. A BizyAir API key is required before this or any node in the pack will run - the login prompt on first launch sets you up.
Common issues
If your captions come out too generic for training purposes, caption_type set to Descriptive is often the culprit - switch to Training Prompt, which is specifically shaped for this use case, before assuming the model itself is the problem. If captions are inconsistent across a batch (same subject described differently image to image), turning off do_sample for more deterministic output helps, and setting extra_options with a consistent name_input keeps subject naming stable across the set. And since this runs as a paid API call per image like everything else in the pack, captioning a large dataset one image at a time adds up - budget your BizyAir credits accordingly before you kick off a batch of a few hundred images.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| do_sample | COMBO | 2 options: true, false | |
| temperature | FLOAT | 0.500–2 | — |
| max_tokens | INT | 25616–512 | — |
| caption_type | COMBO | 9 options: Descriptive, Descriptive (Informal), Training Prompt, MidJourney, Booru tag list, Booru-like tag list, +3 | |
| caption_length | COMBO | 31 options: any, very short, short, medium-length, long, very long, +25 | |
| extra_options | STRING | If there is a person/character in the image you must refer to them as {name}. | Extra options for the model |
| name_input | STRING | Jack | Name input is only used if an Extra Option is selected that requires it. |
| custom_prompt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |