Nodes/lf-nodes/Images to list
ComfyUI Node

Images to list

The dumbest node you'll be glad exists

By lucafoscili·Created 2 years ago·Updated a day ago· 35
Images to list
  • 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_1image_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.

Category✨ LF Nodes/Image

Inputs (17)

NameTypeDefaultDescription
image_1IMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_2optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_3optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_4optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_5optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_6optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_7optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_8optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_9optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_10optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_11optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_12optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_13optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_14optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_15optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
image_16optIMAGEImage or image batch to append without resizing. Inputs are flattened in numeric order.
ui_widgetoptLF_MASONRY[object Object]

Outputs (1)

NameTypeDescription
imagesIMAGEOrdered image list. Original dimensions, channels, dtype, and pixel values are preserved.