Nodes/ComfyTV/Video Concat
ComfyUI Node

Video Concat

Glue clips together in the order you drag them

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Video Concat
  • videos
  • video
force_run_token0
project_id
parent_output_id0
clip_order

Once you've trimmed a pile of clips, you need to glue them together - and that's concat, the most literal operation in the video world. Video Concat is the ComfyTV stage that takes several upstream videos and joins them into one, back to back. It's the difference between a folder of takes and a video.

It's a Compose stage in the pack's canvas: wire in two or more clips, hit Run, and the joined clip flows downstream as a snapshot.

The inputs

  • videos - an autogrow input accepting up to 12 upstream video slots. Wire your clips in.
  • clip_order - a JSON list of which video slot goes where, driven by the reorder strip in the node body. You reorder by dragging in the node UI, and this field just records the result; no need to hand-edit it.

The project_id / parent_output_id / force_run_token inputs are internal frontend plumbing - ignore them.

How it works

The node collects the wired clips, sorts them by the order you dragged, and hands the list to the pack's ffmpeg concat runner. Two things worth knowing. First, it needs at least two clips - the error message says so explicitly, so a single wired video won't pass through. Second, this is a hard join: no transitions, no crossfades. If you want clips to dissolve into each other, that's the Sequence or Video Transition stage's job. Concat is for "then this, then this."

Install

ComfyTV ships ~190 stages in one pack; this node comes with it.

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI fully and look under ComfyTV → Compose. ComfyUI Manager finds it by searching "ComfyTV". No model downloads, no extra Python deps. On ComfyUI Desktop or macOS, clone into the running instance's absolute path from the startup log rather than trusting the relative cd.

Troubleshooting

  • "needs at least two upstream videos" - concat isn't a passthrough; wire two or more clips.
  • The order came out wrong. Use the reorder strip on the node (the thing that writes clip_order); dragging there is the supported way to sequence.
  • Re-encoding artifacts between clips. Concat of same-format clips can be lossless, but if your inputs differ in resolution or codec, the join has to transcode - normalize upstream with a resize stage if you see quality drops.

It's dumb on purpose: join in order, no fuss. Pair it with Clip for trimming and you've got the two-node backbone of any edit that's too big for a single take.

CategoryComfyTV/Compose

Inputs (5)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
clip_orderSTRINGJSON list of video slot keys in concat order — driven by the reorder strip in the node body.
videosCOMFY_AUTOGROW_V3

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO