Nodes/Kinburg-Nodes/Any to String
ComfyUI Node

Any to String

When ComfyUI won't let you plug a combo into a text box

By Kinburg·Created 3 months ago·Updated 7 days ago· 1
Any to String
  • value
  • string

The name does a lot of work for a node with one input and one output. If you've ever watched a Primitive in combo mode refuse to connect to a STRING input - even though the value is obviously just text - this is the bridge you were looking for.

ComfyUI's type system is stricter than it feels. A COMBO output (a dropdown value, or a Primitive in combo mode) only connects to a COMBO input, never to a plain text socket, no matter how string-like the value is. Any to String sidesteps that by declaring its value input as the wildcard type *, which accepts anything the graph can produce. When the run happens it just returns str(value) - a real STRING you can route anywhere text is accepted.

That's the whole mechanism, and that's the point: no API call, no LLM, no models, no settings. The node is basically a tiny adapter that turns ComfyUI's typing opinion into str().

The input that matters:

  • value - any type, COMBO included. This is the one you wire.

The output:

  • string - a proper STRING. Feed it into Preview Text, a prompt builder, Unlim Text Concat, a filename node, whatever takes text.

Where you'll actually hit this: a Primitive in combo mode feeding a text node, or any custom node that exposes an enum as an output instead of a plain string. If you use the Kinburg pack's own combo-flavored nodes, you'll notice the pattern - this is the general fix, and Combo to String is the targeted one for the Primitive case specifically.

Install it the usual way: ComfyUI Manager → search "Kinburg-Nodes" → install, or

cd ComfyUI/custom_nodes
git clone https://github.com/Kinburg/Kinburg-Nodes

then restart. It's a one-author personal pack (Kinburg) that's unusually well documented for its size - 95 nodes, docs per package, a real test suite - and nothing in this node needs a model or a heavy dependency. The pack's install.py auto-installs llama-cpp-python for the Local LLM nodes, but you don't need any of that for Any to String to work.

One honest caveat: this node stringifies. If you feed it a dict or list you'll get the Python repr, not pretty output - for readable JSON use the pack's Show Text (Markdown) or JSON Extract instead. And there's a tiny guard so a list arriving as value takes its first element. That's about the whole troubleshooting story, because there isn't much to break.

CategoryKinburg-Nodes/util

Inputs (1)

NameTypeDefaultDescription
value*Any value — including a COMBO output (e.g. Primitive) that won't connect to STRING inputs directly.

Outputs (1)

NameTypeDescription
stringSTRING