Describe Image
Turn Any Image Into a Text Prompt With Claude's Eyes
- image
- description
Describe Image is the vision half of the ComfyUI Claude pack: an image goes in, a text description comes out, and the actual "seeing" happens on Anthropic's servers via Claude's vision API. No local vision model, no VRAM, no weights to download. The name tells you everything - this is a cloud round trip wearing a ComfyUI node's clothes.
Where you'd actually reach for it: you generated something you like and want to know what it "is" in prompt terms, you want a caption for an image you're about to feed to an img2img pass, or you're putting together alt-text for a batch you're about to share. The natural-language descriptions it produces are a good match for LLM-encoded checkpoints, which reward a rich sentence over a handful of tags. If your plan is LoRA training captions, note the caveat below first.
How it works
The mechanism is short and worth knowing because it explains the node's quirks. Your image arrives as a ComfyUI tensor, gets squeezed down to a single image, scaled from 0–1 float back to 0–255, converted to a PIL image, and saved as JPEG. That JPEG is base64-encoded and sent to Anthropic alongside your prompt, with a fixed 1024-token budget for the reply. Notice there's no downscaling step - a 4K render goes up in full, so big images mean slower uploads and more vision tokens billed. It's built for one image at a time; feed it a batch and it'll throw in the console and return an empty string.
Inputs and outputs that matter
- image - the IMAGE input. Wire it from a sampler output, a LoadImage node, or a video-frame node.
- model - nine Claude aliases, default
claude-opus-4-6. Vision calls cost more per token than plain text, so for description workclaude-haiku-4-5is usually the sensible pick; the flagship is overkill for "describe this picture." - api_key - your Anthropic key, typed into the node. It ships in the workflow JSON, so scrub it before sharing.
- prompt - optional, defaults to "Describe this image in detail." This is the one place the pack's default prompt actually makes sense, but you can point it anywhere: "list the composition and lighting," "extract the character's outfit as tags."
- system_prompt - optional, your "act as a professional captioner" box.
The output is description, a plain STRING. It wires into any string input - a CLIP Text Encode, a text node, or back into the pack's Transform Text for a second polish pass.
How to install
ComfyUI Manager: search for "ComfyUI Claude" and install. Or clone it yourself:
cd ComfyUI/custom_nodes
git clone https://github.com/tkreuziger/comfyui-claude.git
pip install -r comfyui-claude/requirements.txt
Restart ComfyUI. The dependency list is small - anthropic, pillow, comfyui-types - and there are no model files to fetch. You need an Anthropic API key from their console, which is a one-time signup; the README's "fill in the nodes" instruction is literal.
Common issues
- Empty description. The node swallows errors and returns
'', so when you get nothing back, the real cause - bad key, rate limit, model name rejected - is a logged exception in the ComfyUI console. Read there first. - Privacy. The image and your key both leave your machine for Anthropic's servers. That's the whole design, so don't use this node on anything you wouldn't upload elsewhere.
- The LoRA-caption trap. If your goal is training captions, the community's dedicated tools (JoyCaption, Florence-2, WD14 taggers) do this job better and stay local. Claude's vision gives you a rich, readable caption - great for human use and natural-language training - but it's a general model, not a captioning specialist, and you're paying per call.
That's the honest trade: one node, no local hardware, real money per use, and a genuinely useful plain-English description on the other side. For the occasional "what would I even call this image?" it's hard to beat. For volume work, set up a local captioner.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| model | COMBO | claude-opus-4-6 | 9 options: claude-opus-4-6, claude-sonnet-4-5, claude-opus-4-5, claude-opus-4-1, claude-sonnet-4-0, claude-opus-4-0, +3 |
| api_key | STRING | — | |
| system_promptopt | STRING | — | |
| promptopt | STRING | Describe this image in detail. | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| description | STRING | — |