Nodes/comfy-ovum/Join List Ovum
ComfyUI Node

Join List Ovum

Join List Ovum — one string from a Python list, separator of your choosing

By sfinktah·Created about a year ago·Updated 10 months ago· 7
Join List Ovum
  • py_list
  • STRING
separator

JoinListOvum is the "collapse a Python list into a single string" node, in its current non-deprecated form. Give it a list and a separator; it hands back one STRING with every element turned into text and glued together. It's the modern successor to the pack's deprecated JoinList class and the natural partner to JoinBatchOvum - this one is the Python-list-object flavor, sitting in ovum/lists/python for when your list arrives as a single value rather than a Comfy batch.

The mechanics are unexciting and that's the point: iterate the list, stringify each element, join with the separator. Non-strings are converted ([1, 2, 3] works), and the separator defaults to "," when left blank, mirroring JavaScript's Array.join. Want no separator at all? Pass an empty string explicitly.

Inputs and output

  • py_list - the list to join. Must be a real Python list or it raises ValueError.
  • separator - a STRING widget. Blank → comma; empty string → no separator; anything else (e.g. ", ", " | ", "\n") is used verbatim.

Output: a single STRING.

Why you'll use it

The most useful thing you can do with a joined list is hand it to a prompt or filename builder. A few patterns that come up constantly:

  • Prompt assembly. Join a list of style tags or LORA-trigger words into one prompt string, then pass it to your CLIP text encoder. Combined with the pack's Python String Format node you can slot the joined result into a template like "best quality, {arg0}, masterpiece".
  • Multiline summaries. Join with "\n" and display the result in a text node for a clean one-string log of what the workflow did.
  • Filename components. Join tags with _ to build a save name, then wire it into your saver.

The family tree, in case you're confused

This pack ships a small zoo of near-identical list utilities because it went through refactors. The plain names (JoinList, IndexOf, ListSlice, ...) are deprecated; the *Ovum names are current; and the *BatchOvum variants are the Comfy-batch flavors while the plain *Ovum ones are the Python-list flavors. For joining, you have exactly two current choices: JoinBatchOvum and this node. Same inputs, same output - pick whichever matches how your list was built.

Also worth knowing: like all the pack's NewPointer list nodes, this one never caches (IS_CHANGED returns NaN), so it re-runs every execution. Fresh output in loops, slightly more work than a cached node would be.

Install and gotchas

Part of comfy-ovum:

cd ComfyUI/custom_nodes
git clone https://github.com/sfinktah/comfy-ovum

or via ComfyUI Manager → comfy-ovum, restart. No models, no keys.

Two failure modes to expect: the ValueError: Input must be a Python list if you wire in a non-list, and surprise commas when you leave the separator blank expecting none. Both are easy to fix once you know the node's defaults.

Categoryovum/lists/python

Inputs (2)

NameTypeDefaultDescription
py_list*
separatorSTRING

Outputs (1)

NameTypeDescription
STRINGSTRING