Join
One node to concat strings, lists, images, or pipes β whichever you feed it
- input_1
- input_2
- output
Join is Eclipse's answer to "I have several of these and I want them to be one of these." Depending on what you feed it, it concatenates strings, merges lists, stacks images into a batch, or bundles masks - a single any-type node that adapts to its inputs. Up to 64 of them. That flexibility is the point: in a busy workflow you don't want to hunt for four different concat nodes when one node that reads its input type can do the job.
The type-dependent behavior
- Strings: joined with the
delimiter(default", "), and\nin the delimiter becomes a real newline. This is the most common use - gluing prompt fragments, tags, or captions into one string. - Lists: merged together into a single list.
- Images: stacked into one batch tensor. Here's the subtle bit: images of different sizes get resized to match the first image's dimensions before stacking, using bilinear interpolation. So order matters - the first input sets the shape everyone else conforms to. Feed it a mixed-size batch and expect a uniform-size batch out.
- Masks: same stacking logic, matched to the first mask's dimensions.
The delimiter input is ignored for IMAGE and MASK - no one wants a comma between pixels. The inputcount slider (default 2, up to 64) decides how many input_X sockets exist; only the first inputcount inputs are used, so you can grow the node as you add sources without it sprouting 64 sockets at once.
Inputs and output
inputcount- how many inputs to activate (1β64, default 2).input_1,input_2, β¦ - the values to join. All*-typed, so each accepts a string, list, image, or mask - but the source code handles them per-type, and mixing types in one node will produce unexpected results. Join like with like.output- a single*output carrying the joined result.
The one trap: because the inputs are wildcard-typed, ComfyUI won't stop you from wiring a string into slot 1 and an image into slot 2. That's on you. If you're joining strings, keep them all strings.
Where it fits
String joining is the everyday case - a prompt built from a few parts, or a filename assembled from segments before hitting a save node. The batch behavior is the less obvious one: if you have images coming from multiple sources and you need them in one tensor before a batch-aware node, Join handles it, including the resize-to-match step that most stack nodes quietly require anyway.
Install
Part of ComfyUI_Eclipse:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
Or install ComfyUI_Eclipse from ComfyUI Manager and restart. It's pure Python plus torch tensor ops, all already in the pack's dependencies. For a "simple" utility this one has real range - just remember the type-matching rule and that first-image-wins sizing behavior, and it'll do whatever you throw at it.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| inputcount | INT | 21β64 | Number of inputs to join. Only the first 'inputcount' input_X values will be used. |
| delimiteropt | STRING | , | Delimiter for STRING types. Use \n for newline. Ignored for IMAGE/MASK. |
| input_1opt | * | Input #1. | |
| input_2opt | * | Input #2. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output | * | β |