String Output
The tiny node that shows you what's actually in the wire
- STRING
When something's wrong in a ComfyUI workflow, the hardest question is usually "what value is actually flowing through this wire right now?" You built a prompt out of three other nodes and the output isn't what you typed. String Output is the node that answers that question instantly: wire any string into it, and it displays the text in a floating panel while passing the value straight through to whatever comes next.
That's the whole job, and it's the same family as WAS's Show Text and rgthree's Display Any - the "let me see what's in the graph" tier of the ecosystem. The difference here is the form factor: dead simple, one input, one output, no settings to fiddle with.
How it works
String Output is an output node - its FUNCTION returns {"ui": {"text": text}, "result": (text,)}. The ui part is what ComfyUI renders in that panel; the result part is what gets passed down the wire. So it's simultaneously a monitor and a passthrough.
Two details in the source are worth knowing. First, it sets INPUT_IS_LIST = True, meaning it accepts a list of strings, not just one - handy if you're feeding it a batch of prompts. Second, its output is advertised as a string list too (OUTPUT_IS_LIST), so it's happiest feeding nodes that accept a STRING list rather than something expecting a single value. If you only have one string, that's fine; it just wraps it.
Inputs and outputs
There's exactly one input: text (STRING). Notice the source sets forceInput: True and no default value - there's no text box, nothing to type. This is a pure socket: it only ever shows what you wire into it. The one output is STRING.
Because it's an output node, there's a second, less obvious payoff. When you run a workflow through ComfyUI's API (which is what a script does when it POSTs a workflow JSON and reads back the result), output nodes get included in the response. So if you're building an automated pipeline, String Output is how you surface a value out of the run - a filename, a prompt, an error message - without screenshotting the UI. That's exactly the "dynamic workflow" angle this pack is built for.
Installing it
The pack ships with no requirements.txt and no models - it only uses os, plus the torch/PIL/numpy that ComfyUI already has. So install is two minutes, no dependency roulette:
- ComfyUI Manager: search
comfyui_dynamic_util_nodes(search by the pack title, not "String Output" - that name shows up in a dozen packs). Install, restart. - Manual:
Then restart ComfyUI.cd ComfyUI/custom_nodes git clone https://github.com/mullakhmetov/comfyui_dynamic_util_nodes
One honest caveat: this is a very young project - the README is essentially a title and nothing else, and the pack is at version 0.0.1. The code is small and readable if you want to sanity-check it before trusting it, which given the ecosystem's malware history is never a bad reflex.
Where people get tripped up
- "I can't type anything in it." Correct - that's by design. If you need a string source, wire in a text node from another pack or a CLIP Text Encode's string, not this node.
- "The text isn't showing." Output-node panels can be easy to miss; check the workflow's output/queue area, and make sure the node is actually connected to something that runs.
- "It says it's a list." If a downstream node rejects the connection, that's usually the list-vs-single mismatch - insert a node that unpacks lists, or just read the panel and move on. For a debug node, that's the honest use.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |