# Combine Videos

> Join several video clips into one in the order you set, with more than 50 transitions, audio crossfades, seam trims and jump-free joins for continuous shots.

Source: https://nodaro.ai/docs/nodes/video/combine-videos

The **Combine Videos** node joins two or more video clips into one video, in the order you set. Between the clips it can place a hard cut or one of more than 50 transitions, blend the sound with an audio crossfade, and trim the duplicated frames that AI continuation clips share at their seams. Use it to assemble generated shots into a sequence or a finished edit.

- Found in: Video › Cut & Assemble
- Output: video
- API type: `combine-videos`

## When to use it
- Assemble generated clips into one sequence.
- Join several image-to-video results into a longer video.
- Build a montage from different generation nodes.
- Join clips that continue each other without a visible jump, with the **Seamless Join (One-Shot)** preset.
- Build a perfect loop: combine a clip with itself, then add a soundtrack with [Merge Video & Audio](https://nodaro.ai/docs/nodes/video/merge-video-audio).

## Quick start
### Add the node

Press Tab on the canvas and choose **Video › Cut & Assemble › Combine Videos**.

### Connect the clips

Wire every clip into the **Video** input. To send all the results of one node, for example a Generate Video node that ran once for each item of a list, set that connection to **Bundle**. See [Lists and batching](https://nodaro.ai/docs/concepts/lists-and-batching).

### Set the order

Open the settings panel. Drag the clips in the **Connected Videos** list into the order they should play.

### Choose the transition and the sound

Choose a **Transition**, for example **Fade**, and an **Audio** mode. You can also start from a preset in the **Joins & Transitions** folder.

### Run it

Click **Run** on the node. The combined video appears on the node.

Workflow: Three generated shots are joined with fades, then a music track is added to the combined video.

- Generate Video → Combine Videos (video)
- Generate Video → Combine Videos (video)
- Generate Video → Combine Videos (video)
- Combine Videos → Merge Video & Audio (media)
- Generate Music → Merge Video & Audio (media)

## Inputs
| Input | Accepts | What it does |
| --- | --- | --- |
| **Video** | Video nodes, such as Generate Video, Trim Video, Extend Video and Upload Video | The clips to join, two or more. Each connection adds a clip, and a **Bundle** connection adds every result of its node. |

The output, **Video**, is the single combined video.

## Settings
| Setting | What it does |
| --- | --- |
| **Connected Videos** | The clips, in playing order. Drag a clip to move it. |
| **Transition** | The transition between clips. The default is **Fade**. See [Transitions](#transitions). |
| **Transition duration** | The length of the picture transition, from 0.1 to 2 seconds. The default is 0.5 seconds. Hidden for **Cut**. |
| **Audio** | **Keep original** keeps each clip's sound. **Crossfade**, the default, blends the sound at every join. **Remove audio** outputs a silent video. |
| **Crossfade duration (audio only)** | The length of the audio blend, from 0 to 5 seconds. The default is 0.5 seconds. Shown when **Audio** is **Crossfade**. It never changes the picture. |
| **Crossfade curve** | The shape of the audio blend. The default is **Linear**. See [Crossfade curves](#crossfade-curves). |
| **Boundary cut** | How each join is cut. **Manual**, the default, trims an exact number of frames. The three **Smart** methods find the cut for you. See [Trim the seams](#trim-the-seams). |
| **Trim each clip end (frames, except last)** | **Manual** only. Frames removed from the end of every clip except the last, from 0 to 120. The default is 2, which drops generation artifacts at the seam. |
| **Trim each clip start (frames, except first)** | **Manual** only. Frames removed from the start of every clip except the first, from 0 to 120. The default is 1, which drops the duplicated frame that AI continuation clips carry. |
| **Search window: end of previous clip** | **Smart** methods only. How many frames to search at the end of each clip, from 1 to 24. The default is 8. |
| **Search window: start of next clip** | **Smart** methods only. How many frames to search at the start of the next clip, from 1 to 24. The default is 8. |

## Transitions

The transition picker in the settings panel has more than 50 transitions. Each tile shows a looping preview, so you can compare them at a glance. The **Common** tab holds the ones used most:

| Transition | What it looks like |
| --- | --- |
| **Cut** | A hard cut: an instant switch with no blend. The fastest to render. |
| **Fade** | A smooth cross-fade. A classic, clean blend. |
| **Dissolve** | A grainy, random-pixel dissolve. Good for memory beats. |
| **Dip to Black** | A fade through black. Use it between scenes or for a jump in time. |
| **Dip to White** | A fade through white. Bright and ethereal, for example for flashbacks. |
| **Wipe Left**, **Wipe Right** | A hard edge sweeps across the frame. |
| **Slide Left**, **Slide Right** | The next clip pushes the current one off the screen. |
| **Circle Open** | A circular iris opens from the center to reveal the next clip. |

The other tabs group every transition by family:

| Tab | Transitions |
| --- | --- |
| **Fades & Dips** | Cut, Fade, Dissolve, Dip to Black, Dip to White, Fade through Greys |
| **Wipes** | Wipe Left, Right, Up and Down, and Wipe Top-Left, Top-Right, Bottom-Left and Bottom-Right |
| **Slides** | Slide Left, Right, Up and Down |
| **Smooth** | Smooth Left, Right, Up and Down, which are wipes with a feathered edge |
| **Shapes** | Circle Open, Circle Close, Circle Crop, Rectangle Crop, Horizontal Open and Close, Vertical Open and Close, and four diagonals |
| **Slices** | Horizontal Left Slice, Horizontal Right Slice, Vertical Up Slice, Vertical Down Slice |
| **Reveals** | Reveal Left, Right, Up and Down |
| **Covers** | Cover Left, Right, Up and Down |
| **Effects** | Pixelize, Radial Wipe, Blur, Distance, Zoom In, Squeeze Horizontal, Squeeze Vertical |

## Sound between clips

With **Audio** set to **Crossfade**, the sound blends at every join. The crossfade never changes the picture: its duration and curve shape only the sound.

- **At a hard cut** (**Cut**, or any transition with a duration of 0), the picture switches instantly and the sound makes an L-cut. The next clip's sound starts exactly on the cut and fades in. The previous clip's sound continues for the crossfade duration past the cut and fades out. That lingering tail is stretched by a few percent, with the pitch kept, and the fade hides the stretch.
- **At a blend transition** (**Fade**, **Dissolve**, the wipes and the others), every clip's sound stays in sync with its picture. The sound blends over the transition. A crossfade longer than the transition extends the blend gently into both clips.
- **The last clip is never faded out.** Its sound plays to the very end of the video.

Every clip is converted to a common format before the join, so clips from different models always splice cleanly. When some clips have sound and others are silent, the silent clips get a silent track, so the combined soundtrack never drops out.

### Crossfade curves

| Curve | When to use it |
| --- | --- |
| **Linear** (the default) | Predictable, but music can dip in loudness in the middle of the blend. |
| **Equal Power** | Keeps the perceived loudness roughly constant. The best choice for music. |
| **Smooth (Sine)** | Gentler than Equal Power. Good for dialogue and ambient sound. |
| **Logarithmic** | Follows how the ear hears loudness, with long, slow tails. |
| **Exponential** | A sharp fade on one side and a slow fade on the other. Punchy, good for impact moments. |

## Trim the seams

AI continuation clips, where each clip starts from the previous clip's last frame, usually stutter at the seam. The model renders a nearly identical moment on both sides of the join. **Boundary cut** removes that duplicate in one of two ways.

### Manual

**Manual** removes a fixed number of frames on each side of every join: **Trim each clip end (frames, except last)** and **Trim each clip start (frames, except first)**. The first clip's start and the last clip's end are never touched. The same trims apply to every join, which suits clips that all end with the same fixed-length dissolve.

### Smart

The Smart methods run on Nodaro Cloud only. Self-hosted Community and Business editions offer the Manual method, and the API returns `cloud_only_feature` if Smart cut is requested there.

A Smart method compares the last frames of each clip with the first frames of the next clip, within the two search windows, and places the cut for you. Every join is searched on its own, so a video of 3 clips has 2 independent joins.

| Method | Where the cut lands |
| --- | --- |
| **Smart: best pair** | At the single most similar pair of frames. The first clip ends on the match and the next starts right after its twin, so the shared moment plays exactly once. |
| **Smart: pre-roll keep-next** | Some continuation models restart before the join and replay the previous clip's last moments. This method cuts at the start of that replayed overlap, so the overlap plays from the next clip's copy. |
| **Smart: pre-roll keep-prev** | Cuts at the end of the same overlap. The previous clip keeps its original frames, which are often sharper, and the next clip drops its replay. |

- **Only a real match counts.** Frames count as a match only when they are close enough to be the same moment. The pre-roll methods also need a run of matching frames, not one isolated pair.
- **Joins without a match use the default trims.** A join where no match is found, for example between clips that do not continue each other, falls back to 1 frame from the start and 2 frames from the end. Your own Manual trim values are reset when you switch to a Smart method, so nothing hidden changes the fallback.
- **Speech is not clipped.** With **Audio** set to **Crossfade** and a hard cut, a matched join trims only the previous clip's picture. Its real sound keeps playing under the start of the next clip and fades out over the crossfade duration. Unmatched joins, the Manual method, **Keep original** or **Remove audio**, and blend transitions trim picture and sound together.
- **Out-of-range windows are corrected.** A window value outside 1 to 24 is moved to the nearest allowed value, for example 48 becomes 24 and 0 becomes 1. A value that is not a number falls back to 8. The run is never refused for this.

## Presets

The **Joins & Transitions** folder in the node's preset menu has five presets:

| Preset | Transition | Sound | Frame trims |
| --- | --- | --- | --- |
| **Seamless Join (One-Shot)** | Cut | Crossfade, **Equal Power** | 4 frames from each clip's end, 3 from each clip's start |
| **Hard Cut** | Cut | Keep original | None |
| **Crossfade** | Fade, 0.7 seconds | Crossfade, **Equal Power** | The defaults |
| **Dissolve** | Dissolve, 1 second | Crossfade, **Equal Power** | The defaults |
| **Fade Through Black** | Dip to Black, 1 second | Crossfade, **Equal Power** | The defaults |

**Seamless Join (One-Shot)** removes the jump you see when you join continuous shots, such as start-and-end-frame storyboards or a clip extended with [Extend Video](https://nodaro.ai/docs/nodes/video/extend-video). Those clips share a nearly identical frame at the join, which reads as a hitch. The preset keeps a hard cut, so the result still looks like one continuous take, and hides the sound seam with an equal-power crossfade. Connect your clips in order and run.

## Credits
Combine Videos is priced by the estimated length of the output, in steps of 5 seconds. The estimate adds up the clip lengths, then subtracts the transition overlaps and the frame trims. Each clip beyond the first two adds one more step, and the minimum is one step.

The **Run** button shows the live estimate. A connected clip that has not been generated yet counts as 8 seconds.

## Tips
- **Fade for most joins.** A 0.5-second **Fade** looks clean between most clips. Use **Cut** for fast-paced edits or for clips that should look like one continuous shot.
- **Keep transitions short for social media.** 0.3 to 0.5 seconds keeps the pace up.
- **Dip to black between scenes.** **Dip to Black** works well between scenes with different places or moods.
- **Blend the sound, not the picture.** An audio crossfade of 0.5 to 1 second smooths an ambient soundtrack across a hard cut without touching the picture.
- **Drop VEO tail dissolves everywhere at once.** When every clip ends with the same dissolve, set **Trim each clip end (frames, except last)** to remove it from all of them.
- **Add music afterwards.** Connect the combined video to [Merge Video & Audio](https://nodaro.ai/docs/nodes/video/merge-video-audio) to add a soundtrack.

## From the API
`POST /v1/combine-videos` and the MCP `combine_videos` tool join clips with the same options. When a Smart method runs, the job result lists every join with the trims that were applied, the similarity score and whether a match was found. See [Run a single node](https://nodaro.ai/docs/developers/api/nodes) and the [MCP tools](https://nodaro.ai/docs/mcp/tools).

## Frequently asked questions

### How do I change the order of the clips?

Open the settings panel and drag the clips in the Connected Videos list. The first clip in the list plays first.

### How do I join continuation clips without a visible jump?

Choose the Seamless Join (One-Shot) preset. It keeps a hard cut, trims the duplicated frames at every join and crossfades the sound. On Nodaro Cloud, the Smart boundary cut methods can also find the best cut for you.

### Does the audio crossfade change the picture?

No. The crossfade duration and curve shape only the sound. At a hard cut, the picture is identical with or without the crossfade.

### Can I use Smart cut on a self-hosted install?

No. The Smart boundary cut methods run on Nodaro Cloud only. Community and Business editions offer the Manual method, which trims an exact number of frames at every join.

### How do I combine every result of one node?

Set the connection into Combine Videos to Bundle. The node then receives the whole list of clips in one run and joins them all.
