Debug Text _O
The lazy way to see what your strings actually contain
You've got a prompt-assembly chain, a string split, or some LLM node, and the final image is telling you the text going in isn't what you think it is. Debug Text _O is the three-second fix: wire any string into it, hit queue, and the exact value shows up in the console. No re-wiring, no temporary "show text" node, no guesswork about where the pipeline went sideways.
It's the debug node from omar92's Quality of Life Suit pack, and it's about as simple as a node gets. There are no outputs - it's a dead end on purpose. You drop it on a wire, look at the terminal, then delete it (or bypass it) once you've confirmed the value. If you're deep in a workflow and following the golden rule of debugging - change one variable at a time on a fixed seed - this is the tool that tells you what the variable actually was.
How it works
Under the hood it's a bare print() to stdout. The source prints QualityOfLifeSuit_Omar92:<prefix>:<text>, and stdout in ComfyUI means the terminal window where you launched it - not the browser UI. That trips people up constantly, so worth saying once: the message never appears in the web interface. You need the console open on whatever machine actually runs ComfyUI.
The two inputs are the whole story:
text- any STRING. Wire up whatever you want to inspect: aText _Ooutput, a concatenated prompt, a filename, a float converted to text.prefix- defaults to"debug". This is the tag printed before your text so you can tell multiple debug nodes apart. If you're watching five strings at once, fiveDebug Text _Onodes with different prefixes are far easier to read than five identicaldebug:lines.
Because it's marked as an output node, ComfyUI will keep running it even if nothing downstream depends on it - which is exactly what you want. A plain in-line node with no consumers can get pruned; this one won't.
Where it fits
The pack's deprecated string suite (String _O, Debug String _O) uses an old custom STR type that only wires to its own nodes, and Debug String _O is the one you should skip in favour of this. If you're using the modern O/text nodes - Text _O, Concat Text _O, Replace Text _O - this is the matching debug sink, right there in the O/debug/text menu. Pair it with the route version of the same node when you want to inspect a value and keep it flowing.
Installing it
This ships inside the Quality of Life Suit pack (omar92/ComfyUI-QualityOfLifeSuit_Omar92), which installs all its nodes under the O/ category. Easiest is ComfyUI Manager: search "Quality of Life Suit" and install. Or clone:
cd <ComfyUI>/custom_nodes
git clone https://github.com/omar92/ComfyUI-QualityOfLifeSuit_Omar92.git
Then restart ComfyUI properly - a browser reload won't register new nodes. No model downloads, no dependencies for this node specifically. One quirk to know about: the pack defaults to autoUpdate: true in its config.json, so it can pull new commits from GitHub every startup. If that ever makes ComfyUI behave differently from one launch to the next, set autoUpdate to false.
Common issues
- "I don't see anything." You're looking in the browser. Check the terminal that's running ComfyUI.
- Nothing prints at all. Confirm the node actually ran - with an empty or unconnected string input it still prints the prefix, so if you get
debug:with nothing after it, the upstream value really is empty, which is itself a useful finding. - Wrong text in the image but right text in the console. The debug node is telling the truth; the break is between the string and whatever encodes it. Look at the CLIP encode / conditioning step next.
Keep one around for when a workflow you downloaded isn't producing what its screenshots promised - it's usually the fastest way to find out why.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| prefix | STRING | debug | — |
Outputs (0)
No outputs