DStack
Two images, one wide one — that's the whole node
- image1
- image2
- IMAGE
DStack takes two images and puts them side by side, horizontally, into one wider image. That's it. No settings, no modes, no ratio sliders - just torch.dstack on the two tensors, which concatenates along the width axis. The name sounds more imposing than the node is.
It comes from comfyui_davcha, a pack the author describes as "personal QoL and experimental nodes," and DStack is pure QoL. If you've ever wanted a before/after row, a reference pair for a model that takes two inputs, or a quick comparison strip without reaching for a bigger image-utility pack, this is the zero-frills version.
When you'd reach for it
- Before/after or comparison rows - run two generations, stack them, save one image.
- Pair inputs - some models and workflows want two frames or views concatenated; this is the honest way to build that.
- Side-by-side previews of a mask and its source before you commit to a composite.
Because it's a plain concatenation, the two images must have the same height and the same channel count. Widths can differ - that's the axis being joined, and the result is simply as tall as the inputs and as wide as both put together. If the heights or channel counts don't match, you'll get a tensor size error rather than a helpful message, so normalize sizes first (this same pack's ResizeCropFit or PercentPadding handle that).
Don't confuse this with channel-stacking. It does not add channels - if you want alpha or an extra channel merged in, that's Mask Image (Davcha)'s territory. DStack is strictly "glue these two pictures together along the side."
Installing it
# ComfyUI Manager → Install Custom Nodes → search "comfyui_davcha" → Install → Restart
# or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/dchatel/comfyui_davcha
cd comfyui_davcha
pip install -r requirements.txt
Like everything in this pack it's a one-file node with no extra install weight of its own, but remember the pack-level catch: nodes.py imports llama_cpp and cv2 at the top, and neither is in requirements.txt. If the pack won't load at all, pip install llama-cpp-python opencv-python and restart.
There's honestly nothing to troubleshoot past the dimension requirement. It's two inputs, one output, zero surprises - sometimes that's exactly what a utility node should be.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image1 | IMAGE | — | |
| image2 | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |