Merge Videos
Join multiple clips end-to-end into one video. Clips with different resolutions or orientations are fitted to the first clip's frame automatically.
Merge videos
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
- 01
Add your clips
Upload each one, paste a public URL, or pick from Recent. Up to 10 per merge.
- 02
Reorder if needed
Use the up / down arrows to set the play order. Top of the list plays first.
- 03
Merge the clips
We fit every clip to the first clip's frame size, join them in order, and export one playable video file.
- 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?
No problem. Every clip is scaled to fit the first clip's frame without stretching, and black bars fill any gap, so portrait and landscape clips can be mixed. Pixel format, SAR and audio sample rate are normalized too. Put the clip whose size you want first.
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 with 100 trial credits. Completed tasks are billed by processing time (about 1 credit per billable second, minimum 1). No subscription; top up as needed.
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 docscurl -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"
}