---
title: "Join short clips into one continuous film"
description: "Join clips concatenates up to twenty of your own clips into one MP4, optionally under music and a voice-over. Free, agent-driven, and it appends nothing."
canonical_url: "https://justpictur.ing/guides/join-clips-into-one-video/"
published: 2026-08-14
updated: 2026-08-14
locale: "en"
tools: ["join-clips"]
---

Join clips takes several clips from your library, in the order you give them,
and returns **one MP4**. Optionally under a music bed and a voice-over.

It is what turns a run of short takes into a film. And it is the one tool here
you cannot press: it lives on the API and the [MCP endpoint](/agents/), because
the studio's composer is a single dropzone and cannot express an ordered list.

## The loop it completes

Every video model has a ceiling on how long one generation can be. The way past
it is a chain, and this tool is its last link:

1. Generate a clip.
2. [Extract its last frame](/guides/extract-a-frame-from-a-video/).
3. Start the next clip from that frame.
4. Repeat until the piece is told.
5. **Join the run.**

Because each clip begins on the exact frame the previous one ended on, the joins
land where cuts land in an edit rather than where a model ran out of seconds.

A clip may appear **twice** in the same list, and that is not a mistake the
system will save you from, because using a shot again is an edit.

## The bounds

There is no price, so the limits are the cost control. All three are refusals
rather than fallbacks: exceed one and the call fails, plainly, rather than
quietly doing something else.

- **Two to twenty clips.** One is not a join; twenty is where a concatenation
  becomes a project that wants a storyboard.
- **Ten minutes of finished cut**, measured on the output rather than estimated
  from the inputs.
- **One join at a time, per account.** A join is minutes of real encoding, and
  queueing five of them behind each other is how the next person's frame
  extraction waits twenty minutes for its turn.

It is free because the bill is a minute of a renderer we already run rather than
a provider invoice. A half-credit line item at the end of a sequence that cost
several hundred would be a meter on the last step of your own work.

## Shape, sound and what is not added

**Aspect ratio.** Set it, or leave it and the cut takes the shape of the **first
clip**, which is the answer that wastes least on a run of shots one model
produced, since they already agree. Anything that does not match is
**letterboxed into that box, never stretched**. A portrait clip in a landscape
cut gets bars; it does not get squeezed.

**Audio.** Every clip keeps its own sound. On top of that you can lay:

- A **music bed**, looped past the end of the cut, trimmed to it, faded over the
  last second and a half, and set to the level you ask for.
- A **voice-over**, under which the bed is automatically ducked, so narration
  sits over music without either being mixed by hand.

A join of clips that were all silent gets a soundtrack built from nothing rather
than an error, so a music-only cut works exactly as a spoken one does.

**Nothing is appended.** No end card, no logo, no watermark. A film the studio
made from a storyboard signs itself; a cut you assembled out of your own shots is
yours, and finishes on your last frame.

## Ordering a sequence that reads

The tool concatenates. Everything about whether the result plays as a film is
decided before you call it.

**Cut on motion, not on stillness.** A shot that ends mid-gesture and one that
begins mid-gesture join invisibly. Two shots that each settle to a hold before
the cut read as two clips shown one after the other.

**Keep the grade consistent.** Nothing is colour-matched across the join. If one
shot came out warmer, it will be warmer in the cut, so fix it in the source, or
choose an order where the shift falls on a hard cut rather than inside a
continuous action.

**Watch the audio seams.** Each clip's own sound is preserved, which means a
room tone that changes at every cut is audible. A music bed across the whole
piece is the cheapest fix, because a continuous bed papers over discontinuous
ambience.

**Put the establishing shot first anyway.** The aspect ratio comes from clip one
unless you set it, so the first item decides the shape of the whole piece.

## After the join

The result is an ordinary clip in your library: it lands on the Shorts pill,
gets a poster, can be shared, and can be a source again. Two things worth doing
with that:

- **Caption the cut, not the parts.** Running
  [Add subtitles](/guides/add-subtitles-to-a-video/) on the joined file
  gives one continuous set of captions timed against the finished piece, where
  captioning each clip first gives you seams in the type as well as in the
  picture. Mind the five-minute cap.
- **Join a join.** A finished cut is a valid source for another one, which is how
  a piece longer than twenty shots gets built.

## When it goes wrong

### It refused the call

One of the three bounds: fewer than two or more than twenty sources, a cut over
ten minutes, or a join already running on the account.

> **Fix:** the ceilings are hard, so the answer is to split the piece: join in
> sections, then join the sections.

### Half the film is letterboxed

The clips disagree about shape and the first one set the box.

> **Fix:** state the aspect ratio on the call rather than inheriting it, and
> generate the run at one ratio. Deciding the shape at the start of a sequence
> costs nothing; discovering it at the end costs the shots.

### The cut jumps at every join

The shots were not made to follow each other. Nothing in a concatenation can
recover continuity that was never generated.

> **Fix:** go back to the chain at the top of this page. A clip that starts on
> the previous clip's final frame joins seamlessly by construction, and it is the
> only thing that does.

---

## About justpictur.ing

justpictur.ing is an AI picture studio: prompt-driven images, clips, voice-overs and music, and storyboard-backed films with consistent characters across every scene.

Agents connect over MCP and can generate directly:

```
claude mcp add justpicturing https://api.justpictur.ing/mcp --transport http
```

The app is at https://app.justpictur.ing and requires an account.

Every guide on this site has a Markdown twin at its own URL plus `.md`. Every guide: https://justpictur.ing/guides/
