UtilityKit

500+ fast, free tools. Most run in your browser only; Image & PDF tools upload files to the backend when you run them.

Video Merger

Concatenate multiple MP4, WebM or MOV clips into one continuous video file — no upload required.

About Video Merger

Video Merger joins two or more video clips end-to-end into a single output file, all inside your browser. Powered by ffmpeg.wasm, it uses the FFmpeg concat demuxer for fast stream-copy concatenation when your inputs share the same codec, container, and resolution. For mixed sources — clips from different cameras, codecs, or screen recorders — toggle the re-encode option and the tool transcodes to a uniform H.264/AAC MP4 so the joins line up cleanly. Reorder or remove clips in the queue before merging. Nothing uploads — all the videos and the final output stay on your device.

Why use Video Merger

  • 100% private — none of your clips ever leave your device
  • Stream-copy concat is lossless and fast when sources match codec
  • Re-encode option handles mixed-codec sources without manual conversion
  • No file count limits — merge dozens of clips in one go
  • No watermarks, no signup, completely free
  • Works offline after the first ffmpeg.wasm download

How to use Video Merger

  1. Drag two or more MP4, WebM or MOV files onto the upload area.
  2. Review the order in the queue — drag-uploaded order is preserved.
  3. Remove any clips you don't want by clicking the × next to them.
  4. Add more clips by clicking the upload area again.
  5. Toggle 'Re-encode to H.264' on if your sources have different codecs or resolutions.
  6. Click 'Merge Videos' and wait for ffmpeg.wasm to concatenate locally.
  7. Preview the merged result and click Download to save the combined MP4.

When to use Video Merger

  • Joining multiple short phone clips into one continuous recording
  • Combining screen-capture segments after pause/resume
  • Stitching tutorial chapters into a single deliverable file
  • Merging dashcam segments around an event for a continuous timeline
  • Concatenating GoPro clips that auto-split at the 4 GB boundary
  • Joining multiple Zoom recordings of the same meeting

Examples

Join 5 phone clips from same camera

Input: 5 × 1080p MP4 H.264, total 200 MB, re-encode off

Output: Single MP4, ~200 MB, lossless, completes in seconds

Merge mixed phone + screen recording

Input: iPhone HEVC + OBS H.264 mp4, re-encode on, CRF 23

Output: Unified 1080p H.264 MP4 with no glitches at join points

Stitch GoPro auto-split chapters

Input: 4 × 4 GB 4K MP4 chapters, re-encode off

Output: Single 16 GB-class MP4 in under a minute on a fast machine

Tips

  • If your clips were exported from the same source/camera, leave re-encode off for a lossless instant merge.
  • If you see stuttering or audio drift at clip boundaries, turn on re-encode.
  • Pre-trim oversized clips with the Video Trimmer tool before merging to stay under the ~500 MB total memory budget.
  • For more than 10 clips, consider merging in two passes (5+5 → final) to keep peak memory usage lower.
  • GoPro and DJI camera files often need re-encode because they auto-split at exact 4 GB boundaries with timestamp resets.
  • Naming files 01-clip.mp4, 02-clip.mp4 etc before drag-uploading guarantees alphabetical order matches the order you want.

Frequently Asked Questions

Does my video leave my device?
No. All concatenation happens locally via ffmpeg.wasm — your clips and the merged output never reach any server.
Why does it require Chrome / Edge?
ffmpeg.wasm needs SharedArrayBuffer for multi-threaded WebAssembly, which only works in browsers that send COOP/COEP cross-origin isolation headers — Chrome, Edge, Brave, and Arc qualify.
What is the file size limit?
There is no server-imposed cap, but the browser tab can address roughly 2 GB before running out of memory. Practically, total combined input around 500 MB is the safe ceiling.
When do I need to enable re-encode?
Whenever your clips differ in codec, resolution, frame rate, or pixel format. Stream-copy concat requires identical streams; re-encoding normalizes them to H.264 720p+ AAC.
Will re-encoding reduce quality?
Slightly. Re-encoding at CRF 23 is visually transparent for most content but is technically lossy. If your sources match exactly, leave re-encode off for lossless joining.
Can I reorder clips?
The merge order matches the upload order. Remove a clip and re-add it last to move it to the end. Drag-and-drop reordering is on the roadmap.
Why do I get a glitch at the join points with stream-copy?
Stream-copy concat needs identical streams — different keyframe intervals or pixel formats cause stutters. Enable re-encode to fix.
Why does the first run take longer?
ffmpeg.wasm is ~30 MB and downloads on first use, then is cached by your browser for instant subsequent merges, even offline.

Explore the category

Glossary

Concat demuxer
An FFmpeg input mode (-f concat) that reads a text list of files and joins them as one logical input — fast and lossless when codecs match.
Stream copy
FFmpeg's -c copy mode: muxes existing audio/video streams into a new container without decoding/re-encoding.
Container
The wrapper file (MP4, WebM, MOV) that holds video, audio and metadata streams together.
Codec
Algorithm that encodes/decodes video (H.264, VP9) or audio (AAC, Opus) — must match across clips for stream-copy concat.
ffmpeg.wasm
WebAssembly port of FFmpeg that runs locally in your browser tab — no server processing.
SharedArrayBuffer
A JS memory primitive required for multi-threaded WebAssembly; gated by COOP/COEP headers.