Inpaint Canvas Text Out
The node that mails a string back into your canvas editor
Every node in this pack ends with data going out to the graph. Inpaint Canvas Text Out is the odd one that sends text back in - into the Inpaint Canvas editor, not out to another node. It has zero outputs. You feed it a STRING, and that string appears in the editor, usually dropped into the prompt field.
Its real job is the tail end of prompt upsampling. Type a short, sloppy request into the editor ("roten Badeanzug machen"), hit Ctrl+U, and a helper chain runs ahead of your generation: the canvas image and the selection go to a vision-language model - Qwen3-VL locally, or Gemini through ComfyUI's API node - which writes a proper English prompt for the chosen use case (fill, add, remove, edit, outpaint, or auto). That rewritten prompt is a plain string on a wire, which means it needs a way to cross back into the editor that asked for it. Text Out is that way: same delivery trick as its sibling Mask Out, but for text.
The inputs
text- the STRING to hand back. It's marked as a forced input, so it has to be wired, not typed - you'll feed it from a text-generation node.canvas_node- the id of the Inpaint Canvas node that asked for the text. The editor's generated helper graphs fill this in; it's the address that routes the string to the right canvas when more than one is in the workflow.purpose- what the editor does with it,upsampleby default (fill the prompt field). The mechanism is generic, so other purposes ride on the same node.
There's a small but telling detail in the source: before the string is sent, the node strips wrapping quotes and a leading "Prompt:" prefix. Small vision-language models love to answer "here's your prompt: …", and this cleanup is what keeps the editor's field clean without you editing by hand.
Installing it
It ships with the pack, free with Inpaint Canvas:
cd ComfyUI/custom_nodes
git clone https://github.com/DenRakEiw/ComfyUI-InpaintCanvas
Restart ComfyUI. The node itself has no dependencies. The actual upsampling only works once you install one of the language-model backends the editor recognises - a Qwen3-VL pack like ComfyUI-QwenVL (the 2B model downloads on first use; the 4B is an extra ~8 GB and handles translation better), or ComfyUI's Gemini API node.
Common issues
- The prompt never arrives. Same story as the other Out helpers: if
canvas_nodeis empty or mismatched, there's no editor to deliver to. Leave it as the helper graph set it. - Empty text comes back. Small models occasionally return nothing or just the quote cleanup leaves an empty string. Re-run the upsample; if it's chronic, the Qwen3-VL 2B model is more reliable on short English requests - German ones occasionally lose a word, so read what came back.
- The graph doesn't run your chain. By design. Helper prompts queue at the front with only the model nodes they need, so your sampler never fires just to write a prompt. That's a feature, not a bug - if the editor feels like it's "doing nothing", that's the helper running, and the result is waiting in the prompt field.
You'll probably never add a Text Out node by hand. But if you ever build your own helper chain - a custom LLM step that feeds the editor - this is the return valve, and it's embarrassingly easy to use.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| canvas_node | STRING | Id of the Inpaint Canvas node that asked for the text. | |
| purpose | STRING | upsample | — |
Outputs (0)
No outputs