Any To List
One wire that makes the node downstream run four times
- items
- list
ComfyUI has a feature most people never notice: output lists. When a node hands out a list, everything downstream of it runs once per item - not once per queue click, once per item, in a single run. The frontend marks those outputs with a tag you've probably seen and ignored. The docs call it an output list; the plumbing doc in our KB calls the whole family "the graph as a small program."
Any To List is the bluntest possible build of that idea: you plug several values in, you get a list out, and the stuff after it repeats. That's it.
What it's for
Say you have four prompts you want rendered with the same settings. The normal ComfyUI answer is four queue clicks, or a string of concatenate-and-index workarounds, or honestly just editing the text box and hitting go again. Instead: four text values into Any To List, list into your CLIP Text Encode, and the sampler, decoder and save node run four times in one queue.
It's also the piece that makes the rest of this pack's list nodes useful. Bundle Grid List produces a list of bundles; Any To List is what you reach for when the values you want to sweep don't come from one node - four images from four different loaders, or three strings assembled in three different places.
How it actually works
The node declares itself as taking lists on its inputs (is_input_list in the source, if you're reading the pack's nodes/outputlist.py). That one flag is the trick: an input fed a list normally receives items one at a time, but an input-list node receives the whole list at once. execute() then just walks the connected slots and concatenates everything into a single flat output.
Two consequences fall out of that. Lists get flattened, not nested - feed it a list of three and a list of two and you get five items, not two. And the type is inferred from whatever you connect: the schema uses a match-type template, so all your items have to be the same type. You can't mix an IMAGE and a STRING in one node.
Inputs and outputs
The only input is the auto-growing item list - item1 upward in the UI, up to 32 slots, appearing as you connect them. There is no count widget, no mode, no options.
The only output is list, whose type matches whatever you connected. Wire it into the input you want repeated. The whole design is that it has nothing else to configure.
Installing it
The pack is a single-author one ("Nifty Nodes", by Stibo) with no community chatter around it that I could find - nobody on r/comfyui is writing posts about this pack, so the README and the source are your documentation. Search Nifty Nodes in ComfyUI Manager and install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Stibo/comfyui-nifty-nodes
Then restart ComfyUI. The pack declares color-matcher and imageio-ffmpeg as dependencies (they get pulled in on a Manager install), and its requirements.txt also lists dynamicprompts. Nothing extra is needed for this node.
Worth knowing before you go deep: the pack README says it's written against ComfyUI's newer V3 node API, which is why grepping its source finds no NODE_CLASS_MAPPINGS - that's "new", not "broken". The author also flags it as tested on frontend 1.39 and untested with Nodes 2.0.
Where people get burned
- Everything downstream repeats, including the expensive bits. Four prompts against a 30-step sampler is four full generations in one click. If you only wanted one, put a small list in front of something cheap first and check the behavior.
- List items and batching stack badly. If the receiving node also batches images, you can end up with N × M outputs and a filename collision. Test with two items before you point it at a folder of 200.
- You only see one result in the node. The preview you're looking at is the last item. If you want to keep all of them, the list has to end in a Save Image node - which is why the pack pairs this with its own save node that supports counters and filename patterns.
- Type mismatch, silently confusing. Connect the second item of a different type and the node won't magically coerce it. Reroute through Any To String first if you actually want text.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| itemsopt | COMFY_AUTOGROW_V3 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| list | COMFY_MATCHTYPE_V3 | — |