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
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 prepare the inputs, join them in order, and export one playable video file. If resolutions differ, resize them first.
- 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 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"
}