Merge Videos

Join multiple clips end-to-end into one video. We normalize common format differences, but clips should use the same resolution for the most reliable merge.

Merge videos

Choose a file
or drag and drop

Sign in to run this tool — 100 free credits on signup.

FFmpeg flags used by this tool

Quick reference for what each parameter actually does.

-i x -i y -i z ...
Each -i flag adds one input stream. The filter graph references them by 0-indexed position: [0:...], [1:...], [2:...].
-filter_complex
Complex filtergraph — needed when filters consume multiple inputs or produce multiple outputs. Plain -vf doesn't work for concat.
concat=n=N:v=1:a=1
Concatenates inputs end-to-end. n=N is the number of segments; v=1 a=1 means one video and one audio stream each.
[0:v][0:a]...[N-1:v][N-1:a]
Stream selectors: i:v / i:a are video / audio of the i-th input. Order here = order in the output.
-map [v] -map [a]
Picks the merged outputs from the filtergraph by name. Without -map, FFmpeg's default selection ignores the filter.

How it works

  1. 01

    Add your clips

    Upload each one, paste a public URL, or pick from Recent. Up to 10 per merge.

  2. 02

    Reorder if needed

    Use the up / down arrows to set the play order. Top of the list plays first.

  3. 03

    Merge the clips

    We prepare the inputs, join them in order, and export one playable video file. If resolutions differ, resize them first.

  4. 04

    Download the merged video

    Temporary download link as soon as it's done. Files auto-delete after 7 days.

FAQ

Why do you re-encode? Can't you just stream-copy?

Direct stream-copy merge only works when every input matches very closely. Re-encoding is slower, but it is more reliable for videos from different phones, apps, or editors.

How many clips can I merge?

Up to 10 per task in this UI. The API has no fixed cap — use concat=n=N with any N.

What if my clips have different resolutions?

Clips must share the same resolution. We auto-normalize minor differences (pixel format, SAR, audio sample rate), but mismatched width/height will fail — run them through Resize first to match.

Will there be a transition between clips?

No — this is a hard cut. For crossfades, use the API with the xfade filter (separate page in the docs).

Can I trim each clip before merging?

Trim each one with the Trim tool first, then add the trimmed outputs here. Or do it all in one API call by chaining trim + concat filters.

Is this free?

Sign up for 100 free credits. A merge costs roughly 5 credits per minute of total output. No subscription, top up as you go.

Related video tools

Need to merge in code?

This tool is a wrapper around our REST API — three lines of curl will do the same job in your build pipeline or backend.

View API docs
curl -X POST https://api.ffhub.io/v1/tasks \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d {
    "command": "-i https://you.com/a.mp4 -i https://you.com/b.mp4 -i https://you.com/c.mp4 -filter_complex [0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[v][a] -map [v] -map [a] -c:v libx264 -c:a aac output.mp4"
  }
Merge / Concat Videos Online — Stitch N Clips Into One | FFHub