Image Concatenate Multi
Paste several images into one, in any direction
- image_1
- image_2
- output
Image Concatenate Multi glues several images together into one - side by side, stacked, however you want. It's the node for building comparison grids, assembling side-by-side before/afters, or laying out a strip of frames. The "Multi" part is the point: it's not limited to two inputs. You set how many images you want to join and it grows the right number of slots.
How it works
You tell it an input count, click Update inputs to spawn that many image slots (image_1, image_2, and so on), wire an image into each, and it stitches them into a single output in your chosen direction. It's straight image concatenation - no resampling of content, no model - so it's fast and lossless. From the description: "The output type follows image_1; other inputs are converted to match" - which means it also handles masks, not just images, as long as the first slot sets the type.
The inputs that matter
- inputcount (default 2) - how many images to join. Change it, then hit Update inputs to actually create the slots. Forgetting that second step is the classic first-time stumble.
- direction (default
right) - which way the images lay out: append to the right, stack downward, and so on.rightgives you a horizontal strip; a downward direction gives a vertical stack. - match_image_size (default off) - whether to resize inputs so their shared edge lines up. Leave it off and images of different sizes concatenate at their native dimensions (which can look ragged); turn it on and they're scaled to match cleanly along the join. For anything but identically-sized inputs, you usually want this on.
The single output carries the combined image (or mask), typed to follow image_1.
Where it wires in
Anywhere you want more than one image in a single frame. The big three: comparison views (original vs upscaled vs color-matched, three across), grids of a batch's outputs, and building a wide or tall canvas from tiles. The output is a normal image, so it flows straight into a preview, a save, or another processing node.
Installing it
Comes with kijai's KJNodes pack.
- ComfyUI Manager - search KJNodes for ComfyUI, install, restart.
- Manual -
cd ComfyUI/custom_nodes && git clone https://github.com/kijai/ComfyUI-KJNodes, thenpip install -r requirements.txt, and restart.
No dependencies.
Common issues
The number one issue isn't really an issue, it's a workflow step: you have to click Update inputs after changing inputcount. Bump the count to 4 and the extra slots don't appear until you press the button. People set the number, don't see new inputs, and assume the node is broken. It isn't.
Second, mismatched sizes. If you concatenate images of different dimensions with match_image_size off, the result lines up along one edge and leaves the mismatch showing - fine for a quick check, ugly for a final grid. Turn match_image_size on when your inputs aren't already the same shape. And remember the type-follows-image_1 rule: if you're combining images and masks, put the type you want the output to be in the first slot, because everything else gets converted to match it.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| inputcount | INT | 22–1000 | — |
| image_1 | COMFY_MATCHTYPE_V3 | — | |
| direction | COMBO | right | 4 options: right, down, left, up |
| match_image_size | BOOLEAN | false | — |
| image_2opt | IMAGE,MASK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output | COMFY_MATCHTYPE_V3 | — |