Label Image
Caption one image the ComfyUI way — Label Image
- image
- image
Label Image is the atomic unit of this pack: it takes one image and stamps a text caption onto it. That's the whole node, and it's the thing the bigger array nodes are built from. You'll reach for it directly whenever you need to annotate a single render - "seed 42," "FLUX dev, 8 steps," "LoRA v3" - before saving or sharing it. For Reddit and Discord posting it's basically the difference between a lazy comparison and a useful one, and the community keeps asking people to label their stuff. This is the easy version of that ask.
How it works
It processes every frame in your input tensor (so a batch of images works too, each getting the same label), draws a solid-color label panel, and pastes it onto the image. Text is wrapped to fit, centered, and drawn with whatever font you've selected.
The label placement is label_location, and this is where the node is more flexible than it looks:
top/bottom- a horizontal banner the full width of the image. The sensible default.left_vert/right_vert- a vertical strip on the side with rotated text. Saves horizontal space, and the strip matches the image height.left_hor/right_hor- a side strip with normal horizontal text, capped at half the image width, so it's for short captions.
label_style gives you four text-on-background combos: white on black, black on white, white on dark gray, black on light gray. White on black is the default and the safest for readability, especially since it doesn't depend on your image's brightness.
The inputs that matter
image- a single IMAGE tensor (or a batch; every frame gets captioned).label- the caption text, multiline. Use\ninside the text for an actual line break - same convention as the pack's other nodes.label_size- font size in pixels, 1–200. 32 is the default; for a quick reference mark on a big render you'll often want more like 48.font- picks from whatever.ttffiles you've dropped in afontsfolder at your ComfyUI root. No fonts folder? It falls back to Arial (Windows) or a system default.label_input- optional dynamic input. Wire any string output here and it overrides thelabelwidget. This is the part that makes the node programmable: feed it a seed counter, a filename, or a prompt excerpt and the caption updates automatically.
Output is image, the labeled result, same channel structure as the input.
Install
Same pack as the rest of Img Label Tools: ComfyUI Manager → search "Img Label Tools" → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/rjgoif/ComfyUI-Img-Label-Tools
Restart ComfyUI after either. No models, no heavy dependencies.
Gotchas
Two things trip people up. First, label_input silently wins over the label text box - if your caption looks wrong, check whether something is connected to the dynamic input. Second, if your label is empty the node still adds a blank panel, so an empty caption leaves you with an unexplained colored bar; either type text or leave the widget alone entirely.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| label | STRING | — | |
| label_location | COMBO | bottom | 6 options: top, bottom, left_vert, left_hor, right_vert, right_hor |
| label_size | INT | 321–200 | — |
| font | COMBO | arial.ttf | 1 options: arial.ttf |
| label_style | COMBO | white on black | 4 options: black on white, white on black, white on dark gray, black on light gray |
| label_inputopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |