Stack Images(Deprecated)
The old grid assembler — XYImage's deprecated ancestor
- images
- horizontal_labels
- vertical_labels
- Image
Stack Images is the pack's original grid assembler, and the pack's author has officially demoted it: it's listed as "Stack Images(Deprecated)". It still loads, it still works, and it still does the core job - take a flat list of generated images, break it into groups with splits, and paste the groups into a single labeled grid image. But XYImage is the newer, more capable version of exactly this, and unless you're running an old workflow that specifically references Stack Images, you should use XYImage instead.
If you do end up using it, here's the shape of it. images is the flat list (say, twelve images from a batch). splits tells it how to group them - a single value like 4 gets repeated to fill the count, so 12 images with splits 4 becomes [4, 4, 4], which reads as four columns of three. stack_mode and batch_stack_mode control whether the grid and each batch tile horizontally or vertically. Optionally, horizontal_labels and vertical_labels draw red text labels on white bars along each edge. The single Image output is one composed tensor.
The mechanism is the same family as XYImage: it validates that sum(splits) equals the number of images (unless you gave one split value, which auto-repeats and pads the remainder), then pastes each group into the grid with Pillow, using matplotlib's bundled fonts for labels. It's an output node, so the composed grid saves to ComfyUI's output folder.
What it lacks versus its successor is what should push you to XYImage: no flip_axis to swap row/column orientation, no Z-axis support for stacking multiple grids, no main-axis titles, and its labels are the red-on-white rough draft compared to XYImage's cleaner layout. If a workflow you downloaded still calls "Stack Images", it'll run - but when you rebuild that workflow, XYImage is the node to build it around.
Failure modes to expect if you do tinker with it: label lists must match the split counts exactly (the node raises otherwise), and the sum(splits) check will reject a bad split list with an exception rather than guessing. Both are the same discipline XYImage enforces, so nothing about it is surprising once you've read the node's inputs.
Install is the standard pack one-liner, and there's no extra weight - no pip deps, no models:
cd ComfyUI/custom_nodes
git clone https://github.com/M1kep/Comfy_KepListStuff
Restart ComfyUI or install Comfy_KepListStuff via Manager; it's under List Stuff. Then go read the XYImage page, because that's the one you actually want.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| splits | INT | — | |
| stack_mode | COMBO | horizontal | 2 options: horizontal, vertical |
| batch_stack_mode | COMBO | horizontal | 2 options: horizontal, vertical |
| horizontal_labelsopt | * | — | |
| vertical_labelsopt | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| Image | IMAGE | — |