Free tool · H.264 · Runs in your browser
Merge videos
Short answer
The tool fits every clip into one frame size, pads what does not fill it with black, and joins the clips end to end in the order you chose. The default frame is vertical 9:16, and a 16:9 clip fills only 31.6% of it, so pick the shape that matches your footage. If one clip has no audio, the result has no audio at all. Nothing is uploaded.
Clips are joined in the order shown and padded to the chosen shape, so nothing is stretched. Maximum 100 MB per file. Nothing is uploaded - merging runs on your device.
Key takeaways
- Every clip is scaled to fit the frame you pick and padded, never stretched. In the default vertical 1080 × 1920 frame, a 1920 × 1080 clip fills 31.6% of the area; in a square 1080 × 1080 frame it fills 56.3%; in a horizontal frame it fills 100.0%.
- Two 5.067 second clips (10.134 s together) came out 10.267 seconds long, 0.133 seconds more than their sum. FFmpeg's documentation says the concat filter uses the duration of the longest stream in each segment (except the last one) and pads shorter audio with silence; we did not isolate which part accounts for the difference.
- Output size depends on the frame: 1.29 MB vertical, 1.27 MB square and 3.21 MB horizontal for the same two clips, because there are fewer pixels to encode in a frame that is mostly black bars.
- If one clip has no audio, the first attempt (with sound) fails and the tool joins the pictures only. On our test, the result had no audio track, even though the other clip had sound.
- Encoding took 22 s to 39 s for 10.3 s of output; a larger frame takes longer.
What the tool does to your clips
ffmpeg's concat filter needs every input to have the same frame size and pixel shape, so the tool first scales each clip to fit the target frame, pads the rest with black, and sets the pixel shape to square. Then it joins them.
| Setting | Value | What it means |
|---|---|---|
| Frame choices | Vertical 1080 × 1920, horizontal 1920 × 1080, square 1080 × 1080 | The default is vertical |
| Fit | scale, force_original_aspect_ratio=decrease, then pad | Whole picture shown, bars added, nothing stretched |
| Join | concat filter, video and audio | Clips play end to end in the order chosen |
| If a clip has no audio | Second attempt, video only | The result has no sound |
| Encode | H.264 (libx264), yuv420p, preset veryfast; AAC | One re-encode of everything, at the encoder default quality |
Measured: the same two clips in three frames
Measured on a 5 second 1920 × 1080 excerpt of Big Buck Bunny (CC BY 3.0, Blender Foundation) with a speech soundtrack. It is an animated film, not camera footage, so the sizes of camera video will differ. The tool's own ffmpeg arguments ran on the same single-thread WebAssembly engine your browser downloads; times are from a headless run and your device will differ. Each clip is 5.067 seconds, and the two are the same excerpt.
| Frame | Output frame | Share of the frame the picture fills | Length | Output size | Time | Sound |
|---|---|---|---|---|---|---|
| vertical 9:16 | 1080 × 1920 | 31.6% | 10.267 s | 1,287,808 bytes (1.29 MB) | 29.0 s | Kept |
| square 1:1 | 1080 × 1080 | 56.3% | 10.267 s | 1,269,051 bytes (1.27 MB) | 21.8 s | Kept |
| horizontal 16:9 | 1920 × 1080 | 100.0% | 10.267 s | 3,212,600 bytes (3.21 MB) | 39.1 s | Kept |
The share is the area of the fitted picture divided by the area of the frame: a 16:9 picture in a 9:16 frame is 1080 × 607.5 pixels in 1080 × 1920.
One clip without sound silences the whole result
The tool first tries to join video and audio. A clip with no audio track makes that fail, so it joins the video only. That is useful because it does not stop, but it also removes the sound of the clips that had it. In our test one of two clips was silent, the fallback ran, and the merged file had no audio.
Check each clip has sound before you merge. If one is silent on purpose, add a quiet track to it first, or merge in an editor that fills the gap.
| Case | First attempt | Output | Sound | Size |
|---|---|---|---|---|
| Both clips have sound | Succeeded | 1920 × 1080, 10.267 s | Kept | 3,212,600 bytes |
| One clip has no sound | Failed, fell back to video only | 1920 × 1080, 10.267 s | None | 2,934,051 bytes |
Choosing the frame
- All clips landscape: choose horizontal, so nothing is boxed in.
- All clips vertical: choose vertical. A vertical clip in a horizontal frame fills about a third of it.
- A mix: choose the shape of the platform you will post to. The fitted clips will have bars.
- Square 1:1 suits feed posts that must look the same in a grid.
Free tools:Crop a video preciselyTrim by timestampCompress a videoCrop video to 9:16
Limits
Each clip can be up to 100 MB, and the clips are held in your browser's memory together, so many large clips can exhaust it. The joined file is one re-encode, so quality is the encoder default, not a copy.
Questions people ask
How do I merge two videos into one?
Choose the clips in order, pick the frame shape, and run it. The result downloads as one MP4.
Do the clips have to be the same size?
No. Each is scaled to fit the frame you pick and padded with black, never stretched.
Why is my merged video mostly black bars?
The default frame is vertical 9:16, and a 16:9 clip fills only 31.6% of it. Choose the horizontal frame for landscape footage.
Why did my merged video lose its sound?
If any clip has no audio track, the tool joins the pictures only, so no clip keeps its sound.
Why is the merged file a little longer than the sum of the clips?
On our test two 5.067 second clips came out 10.267 seconds, 0.133 seconds more than their sum. We did not isolate the cause.
Is quality lost?
The clips are re-encoded once at the encoder defaults, so yes, a little. Merge from your originals.
Is anything uploaded?
No. Everything runs in your browser; each file can be up to 100 MB.
Related
Sources and how we checked
- FFmpeg Filters Documentation (read 2026-10-06)
- FFmpeg wiki: Encode/H.264 (CRF and presets) (read 2026-10-06)
Reviewed October 9, 2026. The measurements ran the tool’s own ffmpeg arguments on the same single-thread WebAssembly engine your browser downloads. The script, the results and the saved documentation are in data/seo/hub/evidence/2026-10-09/tools.