Nodes/ComfyUI-YogurtNodes/ListConcat (Yogurt Nodes)
ComfyUI Node

ListConcat (Yogurt Nodes)

Jam up to 32 lists into one — the merge your batch workflow is missing

By yogurt7771·Created 2 years ago·Updated 9 days ago· 1
ListConcat (Yogurt Nodes)
  • list1
  • list2
  • list3
  • list4
  • list5
  • list6
  • list7
  • list8
  • list9
  • list10
  • list11
  • list12
  • list13
  • list14
  • list15
  • list16
  • list17
  • list18
  • list19
  • list20
  • list21
  • list22
  • list23
  • list24
  • list25
  • list26
  • list27
  • list28
  • list29
  • list30
  • list31
  • list32
  • result

In a batch workflow, lists accumulate: prompts from one source, strengths from another, seeds from a third. Eventually you just need them all in one list - in order, duplicates and all - so a single loop can walk through everything. ListConcat is that merge. Two required inputs, up to thirty more optional ones, one combined list out.

It's a logic node in the YogurtNodes pack (yogurt7771/ComfyUI-YogurtNodes), and it's the "obviously I need this" node of the list family. Where ListBinaryOps gives you set math and dedupe, ListConcat is the plain, literal concatenation - [1,2] + [3,4][1,2,3,4], no dedupe, no sorting, nothing clever.

How it works

It takes list1 and list2 (both required) and extends the result with list3 through list32 as you wire them in. Unused inputs are simply ignored, so you can start with two lists and add more later without restructuring your graph - just draw a wire and the node grows. The output result is a flat list preserving order: everything from list1 first, then list2, and so on.

The inputs are any-type, so you can concatenate lists of strings, numbers, images - anything list-shaped. It's the classic glue for batch loops: merge all your per-item values into parallel lists, then iterate with an index node, or feed the combined list into a node that takes a LIST wholesale.

Inputs that matter

  • list1, list2 - required. Everything else is gravy.
  • list3list32 - optional, wire as needed.

Output: result.

Install

Pack-wide routine - ComfyUI Manager (search "YogurtNodes") or:

cd ComfyUI/custom_nodes
git clone https://github.com/yogurt7771/ComfyUI-YogurtNodes.git
cd ComfyUI-YogurtNodes
pip install -r requirements.txt

Restart, find it under Yogurt Nodes / Logic. No extra dependencies.

Troubleshooting

  • "My lists are eating each other." That's not this node - concatenation appends. If you're getting dedupe or override behavior, you grabbed ListBinaryOps union or JsonMerge instead. Concatenation keeps duplicates; if you don't want them, chain a ListUnique-style node after.
  • "I have more than 32 lists." Thirty-two inputs is a lot, but batch workflows can get wild. If you're past that, concatenate in stages - two ListConcat nodes feeding a third.
  • Ordering surprises. The result order is strictly input order: list1's items all come before list2's. If you expected interleaving (a1, b1, a2, b2), that's ListBinaryOps interleave, not concatenation.
  • Any-type means the types are on you. Concatenating a list of strings with a list of numbers gives you a mixed list, which is fine until a downstream node expects uniform types. Keep lists homogeneous unless you know why you're mixing.

The pattern that makes this earn its keep: three parallel lists - prompts, denoise values, seeds - concatenated into three aligned lists, then zipped or indexed together per batch item. It's boring, it's bulletproof, and it's the difference between wiring five sources by hand and letting the graph do it.

CategoryYogurtNodes/Logic

Inputs (32)

NameTypeDefaultDescription
list1*First list
list2*Second list
list3opt*Additional list 3 (optional)
list4opt*Additional list 4 (optional)
list5opt*Additional list 5 (optional)
list6opt*Additional list 6 (optional)
list7opt*Additional list 7 (optional)
list8opt*Additional list 8 (optional)
list9opt*Additional list 9 (optional)
list10opt*Additional list 10 (optional)
list11opt*Additional list 11 (optional)
list12opt*Additional list 12 (optional)
list13opt*Additional list 13 (optional)
list14opt*Additional list 14 (optional)
list15opt*Additional list 15 (optional)
list16opt*Additional list 16 (optional)
list17opt*Additional list 17 (optional)
list18opt*Additional list 18 (optional)
list19opt*Additional list 19 (optional)
list20opt*Additional list 20 (optional)
list21opt*Additional list 21 (optional)
list22opt*Additional list 22 (optional)
list23opt*Additional list 23 (optional)
list24opt*Additional list 24 (optional)
list25opt*Additional list 25 (optional)
list26opt*Additional list 26 (optional)
list27opt*Additional list 27 (optional)
list28opt*Additional list 28 (optional)
list29opt*Additional list 29 (optional)
list30opt*Additional list 30 (optional)
list31opt*Additional list 31 (optional)
list32opt*Additional list 32 (optional)

Outputs (1)

NameTypeDescription
result*