Show Text (Debug)
See what your prompt actually is before you waste a generation
- text
Every ComfyUI user has hit the moment where the output makes no sense and you realize you never actually saw what string your prompt chain was producing. M_ShowText is the node you stick between your prompt plumbing and the CLIP Text Encode to catch that. It's a live text viewer that shows the exact string flowing through your graph - and, in its second mode, a text box you can edit by hand mid-flow. From ComfyUI-M-Nodes (oMo.Studio), it's the debugger the pack's other nodes exist to feed: random selector spitting out variations, Multi Note combining blocks - this is where you see the result.
How it works
The node has a required multiline text_display box, a mode dropdown, and an optional text_input socket. The behavior pivots entirely on mode:
- 🔄 Always Update - the node listens to the
text_inputwire, shows whatever arrives in the box, and passes it downstream. This is the "live conduit" mode for automated generation. - 🔒 Lock & Edit - it ignores the wire completely and passes exactly what's typed in the box. Upstream randomizers can't overwrite your edits until you flip back.
On the front end, a small JS extension does the polish: after each execution it updates the text_display widget with the incoming string and grows the node's height to fit, so long prompts don't force you to scroll a tiny box. And the text area is a real, selectable widget - Ctrl+A, Ctrl+C, grab the whole prompt for backup.
Inputs and outputs
text_display(multiline STRING) - what you see; in Lock mode, what gets sent.mode- the two-way switch above.text_input(optional STRING) - plug your upstream prompt chain in here.
One output: text (STRING), the resolved prompt, ready to feed a CLIP Text Encode. The node is marked as an output node, so it also surfaces its state in the UI every run even if nothing downstream needs the wire.
Where you'd actually use it
- After a Random Prompt Selector. The classic pairing in this pack - you can't tell what
{A|B|C}resolved to just by looking at the graph, so put a Show Text in between and read the actual prompt before you burn a generation on it. - After a Multi Note. Confirm the blocks really combined the way you think - this catches the "one block was off so my prompt silently lost the style" failure in seconds.
- Lock & Edit as a one-off tweak. See a variation you like but want one keyword changed? Flip to Lock, edit, and the fixed version goes downstream while the randomizer keeps running upstream.
Honestly, once you've debugged a broken prompt chain once with one of these, it's hard to build complex prompt workflows without it. It's the closest thing this pack has to an oscilloscope.
Installing it
Same pack, same install. ComfyUI Manager: search "ComfyUI-M-Nodes". Or:
cd ComfyUI/custom_nodes
git clone https://github.com/oMoStudio/ComfyUI-M-Nodes
Restart after. No requirements.txt, no model downloads - it's a pure text-debugging utility, MIT licensed, and about the lightest thing you can add to a ComfyUI install.
Where people get burned
- Lock mode is sticky and quiet. If your variations "mysteriously stopped updating," check the mode - you're probably in Lock & Edit with a stale box. It does exactly what it says, and it won't tell you.
- Always Update with no wire keeps whatever's in the box rather than blanking it, which is handy but can fool you into thinking upstream is connected when it isn't. The wire is the source of truth; the box is just the mirror.
- It's a passthrough, not a store. In Always Update it forwards live text and holds no history - if you want a permanent record, wire it into a save node with
save_prompton, or copy the text out manually.
For the price of one small node in your chain, you stop guessing what your prompt chain is doing. That's a trade every debugging session will thank you for.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| text_display | STRING | — | |
| mode | COMBO | 🔄 Always Update | 2 options: 🔄 Always Update, 🔒 Lock & Edit |
| text_inputopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |