Show Text (FeiMao-326)
Actually see what a string contains without hunting through logs
- STRING
Here's a ComfyUI ritual everyone knows: a node produces a string, and you want to see what it actually contains. So you stick a note on the graph and copy-paste, or you open the console and squint at print statements. This node fixes that - it displays whatever text you feed it directly on the node's face, right there in the canvas, so you can watch your LLM's output (or any intermediate string) as it flows through.
How it works
One input, text, which is force-input - meaning it can't be a widget you type into; it must be wired from something. When the graph runs, the node receives the text, renders it into a read-only multiline display widget on the node body, and also passes it through its output. Because it's an output node, it sits at the end of a branch as a terminal - the same way Show Image does for pictures.
A couple of implementation details that actually matter in daily use:
- It handles lists. The node is list-aware (
INPUT_IS_LIST), so if you wire a list output (like the Text Iterator's) into it, the display joins the items with newlines instead of showing something unusable like['a', 'b']. - The display is read-only and scrollable. You can scroll long text inside the widget without it hijacking the canvas zoom. And the displayed value deliberately isn't serialized into the workflow JSON - so saving the workflow won't embed whatever was on screen last, keeping your PNG metadata clean.
The output is a STRING that passes the input through, so you can tap it into the middle of a graph and keep flowing while getting a live look. That's the node's real superpower: it's a debugger you leave permanently attached, not something you add and delete.
Where it fits
Debugging is the whole point. In LLM-driven workflows (this pack's General API Node), you want to see what the model actually returned before you trust it downstream - especially with force_json_format on, where a stray "Sure!" breaks the parser. Put a Show Text after the API node and you'll catch exactly where the pipeline diverges from your intent.
It's also the natural endpoint for any text branch you care about: the rendered template, the cleaned prompt, the extracted JSON. Wire one in and you get permanent visibility into what the graph is thinking, which is worth more than the five seconds it takes to add.
Honest caveat: it's a debug aid, not a data source. The displayed text is ephemeral - nothing is saved to disk, and the output passthrough is just the input echoing back. If you need persistence, the pack's Save Text is the node that writes to disk. And if you only want a hand-editable constant string, Simple Text (also in this pack) is the input-side complement.
Inputs and outputs
text(STRING, force-input, list-aware) - the text to display.STRING(output, list) - passthrough of the input.
Installing
It's one of the sixteen nodes in the FeiMao-326 pack. ComfyUI Manager (search "Comfyui-General-API-Node") or:
cd ComfyUI/custom_nodes
git clone https://github.com/FeiMao-326/Comfyui-General-API-Node.git
cd Comfyui-General-API-Node
pip install -r requirements.txt
Restart ComfyUI, then Add Node → FeiMao-326 → Show Text. The display logic lives in the pack's js/ frontend, so make sure that folder survived the install. Dependencies are just openai, numpy, Pillow, requests.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |