DP Text Preview
See what's actually flowing through a wire
- any_input
- STRING
Sometimes you don't need to render anything - you just need to see what's actually sitting on a wire. A seed a random node picked, the string three text-concat nodes downstream produced, a count coming out of a batch node, whatever your prompt builder assembled before it hits the encoder. DP Text Preview is that peek: plug something in, and the node shows you its value right there in the graph, no save node, no console log, no guessing.
It's filed under the pack's utils, and it's the kind of node you almost never think about until the moment your workflow does something unexpected and you need to know what a specific wire actually contains.
How it works
It takes an optional any_input - typed as a wildcard, so literally anything can plug into it: a STRING, an INT, a whole CONDITIONING object, a batch of frames, doesn't matter. Whatever comes in gets converted to text and displayed directly on the node. There's also an optional display_text widget, a plain multiline text box, which works two ways: as a manual note when you've got nothing wired in, or as a way to just type/paste text you want visible in the graph without routing anything through it at all.
The single output is a STRING - the same text being displayed - so this isn't strictly a dead end. You can drop it mid-chain, glance at what's flowing through at that point, and keep piping the same value onward without breaking the connection.
This is the same job rgthree-comfy's "Display Any" node does, and for the same reason that entire pack exists: once a graph gets past a certain size, you stop being able to eyeball what a wire is carrying just by looking at it, and a dedicated show-me node earns its keep fast.
The inputs and outputs that matter
There are only two inputs and both are optional - wire any_input from wherever you want to inspect, or type directly into display_text if you're just leaving yourself a note. Either one (or both) feeds the single STRING output, which you can leave dangling or continue routing downstream.
How to install it
ComfyUI Manager: search Desert Pixel, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/DesertPixelAi/ComfyUI-Desert-Pixel-Nodes
Restart ComfyUI. No downloads, no dependencies to worry about. Under the DP category.
Common issues & troubleshooting
It shows an unreadable wall of text. This previews things as text, not as an image or a structured object. Feed it an IMAGE batch or a big CONDITIONING tensor and you'll get a Python-style repr dump, not a picture - that's expected, just not useful for that type. Use ComfyUI's native Preview Image for images; save this node for things that are genuinely text-shaped (strings, numbers, short lists).
Nothing shows up. Both inputs are optional, so if neither any_input is wired nor display_text typed, there's nothing to display. Connect one or the other.
It's running even though nothing downstream uses it. That's the point, and it's deliberate - this node is marked as an output node internally, which is what keeps ComfyUI from pruning it out of the execution graph as "unused." Without that, a preview node with no real consumer downstream could get silently skipped, and you'd be staring at a stale value from the last run instead of the current one.
The value looks stale after I changed something upstream. Make sure whatever feeds any_input actually re-ran - if an upstream node's inputs didn't change, ComfyUI's caching can skip re-execution and you'll see last run's value here, not this run's. Force a re-run upstream (or bump something trivial) if you need a fresh read.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| any_inputopt | * | — | |
| display_textopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |