Videos Concatenate (Vertical)
Stack Video Outputs Top and Bottom, Minus the Screenshot and Image Editor
- images_top
- images_bottom
- images
The vertical half of the same trick
This is the sibling of the horizontal concat node, and it does the obvious thing: take two clips, stack one on top of the other, and hand you back a single video. It's for the moments when side-by-side doesn't work - a before/after that reads top-to-bottom, a reference render sitting above your output, or anything you're prepping for a vertical/9:16 canvas. If you've been screenshotting two videos and stitching them in an image editor, this is the two-wire replacement.
How it works
ComfyUI carries video as an IMAGE batch shaped [batch, height, width, channels], where the batch axis is your frame timeline. This node takes two of those batches (top and bottom), pairs them frame by frame, and concatenates along the height axis instead of the width one. The result is one batch where every frame is taller, not wider - same frame count, same order, just stacked. Under the hood it's a per-frame torch.cat with a progress bar, and it prints both inputs' dimensions to the console before it starts. No models, no neural magic; it's a tensor reshuffle dressed up as a video tool.
The inputs that matter
Two inputs, both IMAGE, both required, both self-explanatory:
- images_top - the batch that ends up on top
- images_bottom - the batch that ends up on the bottom
No parameters to configure, not even padding or alignment. The output height is simply top height plus bottom height. Send the single images output to anything that takes IMAGE: VHS_VideoCombine for an mp4, SaveAnimatedWEBP, or a preview node to spot-check a frame.
The constraint flips along with the axis: both batches must have the same number of frames, the same width, and the same channels - but heights may differ. Stack a 512-tall clip under a 768-tall clip and it just works. Different widths or frame counts, and it raises a ValueError telling you which pair of dimensions needs to agree.
One genuinely useful trick: because both this node and its horizontal sibling output plain IMAGE batches, you can chain them into a 2×2 grid. Horizontal-concat clips A+B and C+D, then vertical-concat the two results. Four videos, one output, no manual assembly.
Install
Same story as the rest of the pack - this is stevenwg/ComfyUI-VideoGrid, a small cookiecutter-scaffolded extension with exactly these two nodes. It has zero Python dependencies and downloads no models; the empty dependency list in pyproject.toml is the whole requirements story. Grab it from ComfyUI Manager by searching ComfyUI-VideoGrid, or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/stevenwg/ComfyUI-VideoGrid
Restart ComfyUI and it shows up under the Video Grid category. GPL v3, version 0.0.3 - a small utility, priced accordingly.
Where people get burned
The usual failure is width mismatch. If your two clips aren't the same resolution, resize the wider one to match before the node - it won't crop or scale for you. Different frame counts are the other trap; trim or pad the shorter clip first (VideoHelperSuite handles both). And when the error mentions "number of frames, width, and channels," don't stare at the node - check the console, where it logs both input shapes right before failing. The mismatch is usually sitting there in plain text.
Not the flashiest node on the Registry, and yes, you could script it yourself. But for stacking video outputs this is genuinely the fastest path from two renders to one file.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images_top | IMAGE | Top image batch | |
| images_bottom | IMAGE | Bottom image batch |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |