Merge Videos
Processed locally in your browser — nothing is uploaded.
Quick answer
To merge videos, you join clips end to end into one continuous file. The catch is that clips only concatenate cleanly when they share the same resolution, codec and frame rate — otherwise they must be normalised to a common format first. This tool does that in your browser with ffmpeg.wasm and uploads nothing. It works best with similar clips; a one-time ~32 MB engine loads on first use, and short clips are ideal.
How to merge videos
Add your clips
Drop two or more videos in and put them in the order you want them to play. The first use downloads and caches the ~32 MB engine.
Let it normalise
If the clips differ in resolution, codec or frame rate, the tool re-encodes them to a common format so they can be joined without glitches.
Merge and download
Export the single combined video. Normalising re-encodes the clips, so a longer total runtime takes a single-threaded while.
Why do clips have to match to merge?
Joining video is not like joining text. Each clip is a stream of encoded frames with a specific resolution, codec, pixel format and frame rate baked in. To play as one continuous file, the joined stream has to be internally consistent — a player cannot switch from 1080p H.264 at 30 fps to 720p VP9 at 24 fps mid-file without stuttering, desyncing audio, or failing outright. When clips already match, they can be joined by a fast concat that copies the streams. When they differ, the mismatched ones must be re-encoded to a common format first, which is slower but is the only way to get a clean, seamless result.
| Property | Must match? | If it differs |
|---|---|---|
| Resolution | Yes | Clips are scaled to a common size |
| Codec | Yes | Clips are re-encoded to one codec |
| Frame rate | Yes | Clips are converted to one rate |
| Pixel format | Yes | Normalised during re-encode |
| Audio format | Yes | Audio is re-encoded to match |
How do you control the order and the joins?
Clips play in the order you arrange them, top to bottom, so set that before exporting. A few practical tips for smooth joins:
- Trim each clip to its exact in and out points first with trim video, so the cuts land where you want.
- If a clip is the wrong shape, crop it to match the others before merging.
- Sideways clip in the batch? Rotate it upright first — a mismatched orientation will not fix itself in the join.
- Keep the clips short; total runtime is what determines how hard the encode works.
What are the browser limits?
Merging is the most demanding job in this set when clips need normalising, because it re-encodes multiple inputs and their combined length on the single-threaded engine, all held in the tab’s memory at once. Matched clips joined by concat are far lighter. Keep the total runtime modest — a handful of short clips, not a folder of long ones — and the workbench will warn and offer cancel if the batch is too large.
Are my videos uploaded to merge them?
No. Every clip is processed in your browser through ffmpeg.wasm — read into memory, normalised if needed, joined and handed back as a download, with nothing sent to a server. Confirm it in DevTools → Network: merging makes no upload request, and it works offline once loaded. Your footage stays on your device.
Related video and subtitle tools
Prep each clip before joining: trim, crop or rotate so they match. After merging, compress the combined file for upload, and add subtitles across the whole thing — build or convert the caption file first with the subtitle converter.
Your files never leave your device
Processed locally in your browser — nothing is uploaded. You can verify it yourself: open your browser’s developer tools, watch the Network tab, and use the tool — no upload request is ever made.
Frequently asked questions
How do I join two videos into one?
Add both clips in the order you want them, and export. If they share resolution, codec and frame rate they are joined instantly by concat; if not, the tool re-encodes them to a common format first, then joins them.
Why does my merged video glitch or lose sync?
The clips almost certainly did not match in resolution, codec or frame rate, and were joined without normalising. Let the tool re-encode them to a common format so the joined stream is internally consistent.
Do all my clips need to be the same format?
For a fast, lossless concat, yes. When they differ, they can still be merged, but the mismatched clips are re-encoded to match, which is slower and costs a little quality. Similar clips merge best.
Can I merge a portrait clip with a landscape one?
Yes, but they will be scaled or padded to one common size, which may add bars or crop. For a clean result, crop the clips to the same aspect ratio before merging.
Does the order of the clips matter?
Yes. Clips play in the order you arrange them, top to bottom. Set the order before exporting; rearranging afterwards means merging again.
How many clips can I merge at once?
A handful of short clips works well. Merging re-encodes and holds the inputs in the tab’s memory, so a large batch of long clips can run the browser out of room on the single-threaded engine.
Will merging reduce quality?
A matched concat is lossless — the streams are copied. A merge that has to normalise mismatched clips re-encodes those clips, which adds the usual small encode loss. Use a low CRF to keep it minimal.
Are my videos uploaded to merge them?
No. Everything runs locally in your browser through ffmpeg.wasm. You can confirm there is no upload request in the Network tab of your developer tools.