Join videos

Put several videos in order and join them into one MP4, all in this browser tab.

How it works

Most tools that merge videos upload them first. This one does the whole job inside your browser tab, so the videos never leave your device.

Add the videos and put them in order. The first one sets the size of the result; any video of a different shape is fitted inside it with black bars, so a portrait phone clip is never stretched across a landscape frame.

All of the videos are brought to one frame rate, and each one’s sound is made exactly as long as its picture, with silence for a clip that has none, so the sound stays in sync all the way to the end. The first run downloads the video engine, about 30 MB, and caches it.

How to use it

  1. 1 Choose two or more videos (MP4, MOV or WebM). You can add more at any time.
  2. 2 Put them in order with the arrows, and remove any you do not want.
  3. 3 Check the output size, then press Join the videos.
  4. 4 Play the result and download the MP4.

Good to know

  • Put the video whose size you want first: the others are fitted to it.
  • Joining clips from the same phone or camera gives the cleanest result, with no black bars.
  • To cut the ends off a clip before joining, trim it first.
  • Your videos are never uploaded. The whole job runs in this browser tab.

Browser support

  • Chrome 94 and later
  • Firefox 113 and later
  • Safari 16.4 and later
  • Edge 94 and later

These are the oldest versions with everything the tool uses. They are worked out from the tool itself, so they change when it does.

Version numbers checked on 2026-09-04.

Joining videos that were never meant to meet, without letting the sound drift

Joining two clips from the same camera is easy, because they already agree about everything. Real requests are rarely like that: a landscape screen recording followed by a portrait clip from a phone, one at 30 frames a second and the other at 60, one with sound and one without. A video file has one picture size, one frame rate and one soundtrack running the whole length, so every clip has to be brought into agreement before they can be joined. This page lets the first clip decide. The result takes its size and frame rate, and it says so before anything is encoded.

Pictures of a different shape are scaled down until they fit inside that frame and padded with black to fill it, never stretched, so a portrait clip inside a landscape frame keeps its proportions with bars at its sides. Every clip is then brought to the first clip’s frame rate, which repeats or drops frames as needed, so the joined file plays at one steady rate. Colour is converted to the format every player understands on the way.

Sound is where joins usually go wrong, and quietly. The joining step starts each clip where the longest part of the previous one ended. Recordings very often have sound that stops a fraction of a second before the picture, and if nothing is done about it, the next clip’s sound starts that much ahead of its picture, and the error adds up with every join. So before joining, each clip’s sound is padded with silence or trimmed to exactly the length of the clip, each picture is held on its last frame if it is the shorter one, and a clip with no sound at all is given the right length of silence. That was measured with three clips of different sizes and frame rates, the first with its sound 0.4 seconds short: the result was exactly 12 seconds of picture and 12 of sound, and a beep one second into the third clip landed exactly eight seconds after the beep one second into the first, where it belongs. Every frame is encoded again, so joining takes about as long as the clips play, and nothing leaves the browser tab.

The result is an MP4 with H.264 picture and AAC sound at 48 kHz in stereo, so a mono clip is spread across both channels and plays from both speakers, and clips recorded at different sample rates end up at one. Order matters for more than the sequence: moving a clip to the top changes the size of the whole result, which is why the output size shown on the page updates as clips are moved. Every clip is read into the tab’s memory together with the joined file being written, so a handful of phone clips joins comfortably, while several long recordings at once can exceed what a phone browser allows. When that happens the engine’s own message is shown rather than a blank failure.

Frequently asked questions

Can I join videos of different sizes?

Yes. The result takes the size of the first video, and every other video is scaled to fit inside that frame with black bars where the shapes differ, never stretched.

Will the sound stay in sync?

Yes. Each clip’s sound is padded or trimmed to exactly the length of its picture before they are joined, and a clip with no sound gets the right length of silence, so nothing drifts from one clip to the next.

Why does it take so long?

Every frame of every video is encoded again into one consistent MP4, so it takes about as long as all the videos play together, and longer on a phone.

Is my video uploaded to a server?

No. The whole job runs inside your browser tab.

Related tools

Your files are processed on your device and are not uploaded. You can verify this in your browser’s developer tools under the Network tab.