Debug Text route _O
Spy on a string without cutting the wire
- STRING
Regular Debug Text _O is a dead end: it prints your string and stops there. Debug Text route _O is the same trick with a wire running through it - it prints the value and passes it straight out the other side. You drop it mid-route, look at the console, and the string keeps flowing to wherever it was already going. No re-connecting, no bypassing, no "let me just see what's here for a second."
That distinction sounds trivial until you've got a long pipeline and a value you want to inspect at step four without dismantling steps five through nine. This is the node you reach for when you suspect a string is being mangled somewhere in the middle of a chain - a Concat Text _O inserting the wrong separator, a Replace Text _O matching more (or less) than you expected, a RandomNSP term landing in the wrong slot. Tap the wire, read the console, move on.
How it works
Mechanically it's a print plus a pass-through. The source prints the same QualityOfLifeSuit_Omar92:<prefix>:<text> line to the terminal as its dead-end sibling, then returns the text untouched. Inputs are identical too:
text- the STRING to inspect (and pass through).prefix- default"debug", the label printed before the value so multiple debug nodes don't blur together.
The single output is a STRING carrying the exact same text that went in. That's the whole trick - nothing is modified, no trimming, no formatting. What you see in the console is byte-for-byte what reaches the next node.
One honest caveat: the value only prints when the node actually executes, and since it sits inline in a route it runs in the normal execution order. If it's upstream of a node that gets pruned or skipped, you'll get no line - which, again, is information.
Where it fits
Use the route version when you want to keep the graph intact; use the dead-end version when the string has nowhere else to go anyway. In the pack they live side by side under O/debug/text, and both belong to the modern O/text suite rather than the deprecated STR-typed string nodes. If you're assembling prompts across multiple nodes and the final CLIP encode isn't seeing what you built, this is the cheapest instrument you own - tap the wire right before the encode and see the truth.
Installing it
It's part of the Quality of Life Suit pack (omar92/ComfyUI-QualityOfLifeSuit_Omar92) - install the pack once and every O/ node comes along. Via ComfyUI Manager, search "Quality of Life Suit". Or clone:
cd <ComfyUI>/custom_nodes
git clone https://github.com/omar92/ComfyUI-QualityOfLifeSuit_Omar92.git
Restart ComfyUI (not just a browser refresh). No models, no extra pip packages for this node. Like every node in the pack, it appears in the O/ menu. Note the pack's config.json defaults autoUpdate to true, so it may pull new commits on startup; flip that to false if the folder changing out from under you is a problem.
Common issues
- The line doesn't print. Remember the console is the terminal that launched ComfyUI, not the browser tab. And check that the node isn't inside a bypassed or muted group.
- Text looks fine in the console but wrong in the output. Then the corruption happens after this node - move the debug route further downstream.
- You've left ten of these in a shared workflow. Different prefixes help, but for anything you're exporting to the community, delete them first. Nobody wants your debug noise in their console.
It's a boring node that does exactly one thing - and when a string-based workflow is misbehaving, that one thing tends to be the difference between a two-minute fix and a two-hour teardown.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| prefix | STRING | debug | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |