Show as Text
See any value as text that survives reloads (unlike Preview Text)
- text
- STRING
Show as Text is a display node with one genuinely useful trick: it shows any input as text in the node, and that text survives workflow reloads and tab switches. The pack README is explicit about why it exists - unlike ComfyUI's built-in Preview Text, this node persists what it displayed, so you can switch away, come back, or reload and still see the value you were inspecting. For anyone who's ever debugged a workflow, reopened it, and lost the intermediate value they were hunting, that's the whole pitch.
It's part of ComfyUI-FBnodes, François Beaudry's utility pack - a quiet utility node with no model, no settings, no dependencies beyond what ComfyUI already has.
How it works
The single input is text with type * - the wildcard - so it accepts literally anything: a string, an int, a float, a latent's metadata dict, a conditioning object. Internally it stringifies whatever arrives (JSON-serializing dicts and lists, falling back to str() for the rest) and displays the result in the node body. Because it declares forceInput, you feed it from a wire rather than typing into it.
The persistence trick is the mechanism worth understanding: on each run the node writes the displayed value back into the workflow's node state (via the extra_pnginfo workflow data), so the text is baked into the workflow file itself. That's why it survives a reload when Preview Text doesn't - the value is stored, not just rendered. It also emits the text on a STRING output, so you can branch the displayed value into something else if you want.
The input
text(*) - any value; it gets stringified for display.
Output: STRING (list), the converted text.
Installing it
ComfyUI Manager - search "ComfyUI-FBnodes" - or:
cd ComfyUI/custom_nodes
git clone https://github.com/FranckyB/ComfyUI-FBnodes.git
pip install -r ComfyUI-FBnodes/requirements.txt
Restart ComfyUI. Nothing else needed.
Where you'll use it
The canonical spot is debugging a pipeline: stick one after a node whose output you're not sure about - a filename, a prompt after prompt-engineering, a duration float, a metadata dict - and the value stays on screen while you fiddle with everything upstream. It's also handy for recording what a run actually produced: leave a Show as Text wired to your filename and the workflow you save carries the answer with it. The one honest caveat: because it's an output node, it forces its branch to execute, so don't drop it on a heavy decode path just to inspect a number - put it on the cheap string/number side of the graph instead.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| text | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |