FFmpeg Cookbook

Video Merger Tool

Merge multiple videos into one MP4 in order. Reorder clips before processing.

Local processing — no upload
🔗
Select or drop multiple videos at once
2 or more files · MP4 / MOV / WebM / MKV
Lossless copy only works when codec, resolution, and frame rate match exactly. Pick re-encode if it fails.
Processing… 0%

What to do next

Popular uses
Join multiple clipsCreate social compilation videosMerge clips after trimming

What this tool does

  • Drag and drop multiple files, ordered by row
  • Auto-detect lossless copy vs. re-encode based on codec match
  • Add fade or wipe crossfades with a custom duration
  • Normalize to 4K / 1080p / 720p when re-encoding
  • All processing runs locally — files never leave your browser

How to use

  1. 1

    Add your clips

    Drop two or more MP4 / MOV / WebM files. They are joined top-to-bottom in list order.

  2. 2

    Pick a join mode

    Choose “Copy” for same-codec clips (fastest, lossless) or “Re-encode” when codecs/resolutions differ.

  3. 3

    Set resolution & transition

    Re-encode mode only. A 0.5–1 second crossfade looks natural for most edits.

  4. 4

    Run the merge

    Once the preview appears, click download to save the result.

What each setting means

Join mode
Copy = stream-copy concatenation (fast, lossless). Re-encode = unified output (handles mixed inputs).
Resolution
Output resolution when re-encoding. Upscaling does not improve quality.
Transition
Crossfade between clips: fade, wipe, or none.
Transition duration
0.5–1 second is typical. Long transitions can shorten the visible content.

Recommended settings

Joining iPhone clips with identical settings
Copy (fast, lossless)
Same codec/resolution allows the fastest path with no quality loss.
Mixing screen recording + handheld footage
Re-encode · 1080p · fade 0.5s
Codec mismatch requires re-encode; a short fade hides the cut.
YouTube intro + main footage
Re-encode · 1080p · transition none
YouTube re-encodes again, so keep transitions subtle.

Common pitfalls

Symptom: “Copy” mode fails to merge

Cause: Codec, resolution, or framerate differs between inputs.

Fix: Switch to Re-encode mode.

Symptom: Audio drift after merging

Cause: One of the inputs uses variable framerate (VFR).

Fix: Re-encode mode normalizes to CFR — switch from Copy to Re-encode.

Symptom: Brief freeze at clip boundaries

Cause: GOP keyframes do not align in lossless copy.

Fix: Use Re-encode + a 0.5s fade for a clean transition.

Equivalent FFmpeg commands

Reference commands you can run on the desktop FFmpeg CLI.

Same-codec lossless merge (concat demuxer)
echo "file 'a.mp4'\nfile 'b.mp4'" > list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy out.mp4
Requires identical codec, resolution, and framerate.
Re-encode merge (concat filter)
ffmpeg -i a.mp4 -i b.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" out.mp4
Crossfade transition (xfade)
ffmpeg -i a.mp4 -i b.mp4 -filter_complex "[0][1]xfade=transition=fade:duration=0.5:offset=4.5,format=yuv420p" out.mp4
offset = duration of a.mp4 minus the transition length.

Browser support & limits

  • Recommended max combined size: 500 MB
  • Lossless copy requires identical codec, resolution, and framerate
  • Long multi-clip merges may run out of browser memory

Privacy

This tool runs ffmpeg.wasm directly in your browser. Files never leave your device — everything runs locally. Read the privacy policy →

Frequently asked questions

How many clips can I merge?

There is no hard cap, but browser memory limits practical totals to ~500 MB combined. Compress long clips first if needed.

Can I reorder clips after adding them?

Yes — use the up/down buttons next to each row. The list order is the merge order.

What if only one clip has audio?

Silence is inserted automatically for the other clips. We recommend Re-encode mode in this case.

When does lossless copy fail?

Whenever codec, resolution, framerate, or audio format differs across inputs. When in doubt, choose Re-encode.

I want to mix portrait and landscape clips

Use Re-encode and pick a base resolution (e.g., 1080p landscape). Portrait clips will be padded with black bars. Resize them first with the SNS Video Resizer for better results.

Fade vs. wipe crossfade?

Fade dissolves between clips with opacity, wipe slides one over the other. Fade is more neutral and widely used.

How big will the output be?

Lossless copy stays close to the sum of inputs. Re-encode produces CRF~23 H.264, often slightly smaller than the originals.

Related tools

Related FFmpeg recipes