Images to list
The dumbest node you'll be glad exists
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image_9
- image_10
- image_11
- image_12
- image_13
- image_14
- image_15
- image_16
- ui_widget
- images
Some nodes earn their place with clever math. LF_ImageList earns it by being the least clever thing in the pack: it takes up to sixteen image inputs and hands them back as one ordered image list. That's it. No resizing, no blending, no padding, no hidden anything. And it's exactly the kind of plumbing that stops a workflow from falling over.
The reason it exists is ComfyUI's type friction. A normal IMAGE wire carries a single batch - frames stacked in one tensor - while many video, animation, and batch-processing nodes want a Python list of images, one entry per image. Conflating the two is a classic beginner trap and a classic source of silent dimension errors. This node bridges it explicitly: image_1 through image_16 each accept a single image or a whole batch, everything gets flattened in numeric order, and what comes out the other end is a proper IMAGE list where every entry keeps its original dimensions, channels, dtype, and pixel values.
How it works
Under the hood it's a thin wrapper marked INPUT_IS_LIST / OUTPUT_IS_LIST. Each connected input is normalized into images and appended to an internal list in image_1 → image_2 → … order; the list is returned as the images output. Because it never touches pixels, it's lossless by construction - whatever went in, byte for byte, comes out. The only real constraint is that image_1 must be connected (the other fifteen are optional), and the tooltip spells out the ordering contract: "Inputs are flattened in numeric order."
Output is a single images port, type IMAGE with is_list: true. Wire it straight into anything that consumes image lists - a batch saver, a video encoder, another LF node expecting a list.
When you'd reach for it
- You have several differently-sized generations and a downstream node that refuses to touch a mixed-size batch. Lists don't care about uniform dimensions.
- You're feeding a video pipeline frame-by-frame and want explicit control over order.
- You want one clean list to hand to a preview or comparison widget that iterates entries.
If a node already gives you a list, this is redundant - it's purely a convert-and-collect utility. And if you only ever work with single batches, you can skip it entirely. But the moment you find yourself fighting "expected a list, got a batch," this is the fix, and it's the kind of node you install once, forget, and silently rely on.
Installing
It's part of LF Nodes, so the routine is the same as the rest of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/lucafoscili/lf-nodes.git
restart, and it appears under ✨ LF Nodes → Image as "Images to list." ComfyUI Manager (search "LF Nodes") handles it and the pack's Python requirements automatically. Worth repeating the pack gotcha: the repo was rewritten and its predecessor archived in late 2025, so if a tutorial points you at an old clone URL, use lucafoscili/lf-nodes instead.
Troubleshooting is nearly nonexistent. The only failure mode worth knowing: if you connect nothing to image_1, it raises an error on purpose rather than silently emitting an empty list - hook at least one input and you're done. That's the whole node, and honestly, that's the point.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| image_1 | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_2opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_3opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_4opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_5opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_6opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_7opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_8opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_9opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_10opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_11opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_12opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_13opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_14opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_15opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| image_16opt | IMAGE | Image or image batch to append without resizing. Inputs are flattened in numeric order. | |
| ui_widgetopt | LF_MASONRY | [object Object] | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | Ordered image list. Original dimensions, channels, dtype, and pixel values are preserved. |