How to combine videos that mix mov and mp4
- Step 1Gather your mismatched clips — Bring your iPhone
.mov, Android.mp4, screen recording, OBS.mkv— whatever you have. Accepted inputs are.mp4,.mov,.mkv,.webm,.avi,.m4v, and.ts. You don't need to convert anything first; the merger normalises them. - Step 2Add them in playback order — Open the video-merger tool and add clips in the sequence you want. There's no drag-to-reorder, so order = add order. Remove and re-add a clip to fix its position.
- Step 3Just run — there's nothing to configure — Because your clips differ, stream-copy will fail and the merger re-encodes automatically. You don't choose H.264 or set a CRF — the baseline is fixed (
libx264 -crf 20, AAC 192k). Click run. - Step 4Watch for the re-encode stage — You'll see the stage 'Codecs differ — re-encoding for clean concat' — that's expected and confirms the mixed-format path is doing its job. A mixed-format merge takes minutes, not seconds, because it's encoding every frame.
- Step 5Expect a uniform MP4 out — The output is always
.mp4on the re-encode path, regardless of how many MOV/MKV inputs you fed in. Resolution and frame rate are normalised by the concat filter so the clips play back as one continuous video. - Step 6Download the combined file — The result downloads as
<firstclip>-merged.mp4. Because it's re-encoded H.264/AAC, it's broadly compatible — good for re-uploading to YouTube, sending, or further editing.
Common mixed-format combinations
What happens when you combine clips from different sources. All of these trigger the automatic re-encode path.
| Clip A | Clip B | Why stream-copy fails | Result |
|---|---|---|---|
| iPhone .mov (H.265) | Android .mp4 (H.264) | Different codecs | Re-encoded to H.264/AAC .mp4 |
| 1080p .mp4 | 720p screen recording | Different resolutions | Re-encoded; concat filter unifies the timeline |
| OBS .mkv 60 fps | Phone .mp4 30 fps | Different frame rates | Re-encoded to a uniform fps |
| .webm (VP9) | .mp4 (H.264) | Different codec + container | Re-encoded to H.264 .mp4 |
| Clip with audio | Silent screen capture | Audio stream present/absent | Combined (audio mapped optionally) |
What the re-encode produces
The mixed-format fallback uses a fixed baseline — you can't change it on this tool. Verified against the merge processor.
| Setting | Value | Note |
|---|---|---|
| Container | .mp4 | Always, regardless of input containers |
| Video codec | H.264 (libx264) | -preset medium -crf 20 |
| Pixel format | yuv420p | Maximises player compatibility; loses 10-bit/HDR |
| Audio codec | AAC | -b:a 192k |
| Faststart | +faststart | Moov atom moved to front for instant playback |
Accepted input formats
You can mix any of these freely; the merger normalises them. Anything else is filtered out at the dropzone.
| Extension | Typical source | Mixes freely? |
|---|---|---|
| .mov | iPhone, DSLR, ProRes | Yes |
| .mp4 | Android, exports, downloads | Yes |
| .mkv | OBS, high-bitrate captures | Yes |
| .webm | Browser/screen recorders | Yes |
| .avi / .m4v / .ts | Legacy, Apple, broadcast | Yes |
Cookbook
Real mixed-source scenarios. The common thread: you don't convert anything beforehand — the merger re-encodes mismatched clips for you.
iPhone MOV + Android MP4
The classic two-phone scenario. iPhone records H.265 in a MOV; the Android clip is H.264 MP4. Different codecs and containers, so the merger re-encodes both to one H.264 MP4.
Inputs: iphone.mov H.265/HEVC 1920x1080 AAC android.mp4 H.264 1920x1080 AAC Pass 1 stream-copy -> fails (codec mismatch) Stage: 'Codecs differ — re-encoding for clean concat' Pass 2 concat filter -> libx264 -crf 20, aac 192k Output: iphone-merged.mp4 (one continuous clip)
Talking-head MP4 + screen recording
A 1080p webcam MP4 and a 1440p screen recording. The resolution difference alone forces a re-encode; the concat filter unifies the streams so they play back-to-back.
Inputs: webcam.mp4 1920x1080 30fps screen.mp4 2560x1440 30fps -> resolution mismatch -> re-encode concat filter normalises and outputs H.264 .mp4 Note: output dimensions follow the filter graph; for a specific target size, post-process with /video-tools/video-resizer.
OBS MKV 60fps + phone MP4 30fps
Gameplay captured in OBS as 60 fps MKV joined with a 30 fps phone reaction MP4. Container, frame rate, and likely codec all differ — full re-encode to a uniform MP4.
Inputs: gameplay.mkv H.264 60fps reaction.mp4 H.264 30fps -> frame-rate + container mismatch -> re-encode Output: gameplay-merged.mp4, uniform timeline Tip: if you want a consistent 60fps master, the re-encode handles the timeline; clip-level fps diffs are reconciled by the concat filter.
Clip with audio + silent screen capture
A narrated clip followed by a silent screen capture. The concat filter maps audio optionally ([i:a:0?]), so the silent clip doesn't break the merge — it just contributes no audio for its segment.
Inputs: intro.mp4 has AAC audio capture.mp4 NO audio track concat filter: [0:v:0][0:a:0?][1:v:0][1:a:0?]concat=... Output plays: narration during intro, silence during the capture segment. No crash from the missing track.
WebM (VP9) + MP4 (H.264)
A browser-recorded WebM (VP9) and a standard MP4. Different codec and container — the merger re-encodes to H.264 MP4, which is the more universally compatible result anyway.
Inputs: recording.webm VP9 export.mp4 H.264 -> re-encode to H.264 .mp4 (CRF 20, AAC 192k) Result is broadly playable; for a VP9/WebM master instead, re-encode the merged file via /video-tools/video-transcoder (codec: vp9).
Edge cases and what actually happens
Clips differ in any property
Re-encoded (by design)Different container, codec, resolution, frame rate, pixel format, or audio format all make the stream-copy concat demuxer fail. The merger then re-encodes everything through the concat filter to H.264 CRF 20 / AAC 192k MP4. This is the expected, intended path for mixed-format footage.
Mixed-format merge is much slower than expected
ExpectedRe-encoding decodes and re-encodes every frame of every clip, so a mixed-format merge runs at roughly real-time to several times real-time — minutes, not the seconds a same-codec stream-copy takes. There is no way to speed this up to copy speed when the clips genuinely differ.
Output is always MP4 even with MOV/MKV inputs
ExpectedOn the re-encode fallback the output container is always .mp4, regardless of how many MOV, MKV, or WebM clips you fed in. If you need a different container, run the merged MP4 through video-transcoder afterward.
10-bit / HDR clip in the mix
Color downgradeThe re-encode outputs yuv420p 8-bit for compatibility, so a 10-bit or HDR clip in a mixed-format merge is flattened to 8-bit SDR. There's no 10-bit re-encode option on the merger. To preserve HDR you'd need all clips to match so it stream-copies — which isn't possible across mixed formats.
Variable frame rate (VFR) phone clip
HandledMany phones record VFR. The concat-filter re-encode normalises timing, so a VFR clip combines cleanly with constant-frame-rate clips. (On the stream-copy path, VFR is one of the things that prevents a lossless merge.)
Re-encode runs out of WASM memory on mobile
Out of memoryMixed-format merges are memory-heavy because they decode and encode simultaneously. On phones with large clips this can exhaust the WebAssembly heap. Trim or downscale the largest clips first, or run the merge on desktop.
Clips have different aspect ratios
Handled (may letterbox/stretch)The concat filter combines clips of different aspect ratios into one timeline, but the result may look stretched or inconsistent at the seams since the merger applies a fixed pipeline with no per-clip framing control. For consistent framing, normalise each clip's aspect with auto-reframe before merging.
Only one clip provided
RejectedThe merger needs at least two files. To convert a single MOV to MP4 (a common reason people reach for a merger), use video-transcoder instead.
A clip exceeds your tier's size cap
RejectedEach input is checked against the per-file byte limit (1 GB Free — but Free can't merge anyway — 10 GB Pro, 100 GB Pro + Media / Developer). Over-cap clips are rejected by name before processing.
Free tier with two files
Blocked by tierEven with two clips, the Free tier's batch limit of one file prevents merging. Mixed-format merging needs Pro (5 files) or higher.
Frequently asked questions
Can I combine a MOV and an MP4 without converting them first?
Yes — that's exactly what this handles. You add the MOV and the MP4 as-is; because they differ, the merger automatically re-encodes both through the concat filter to one H.264/AAC MP4. You don't pre-convert anything and you don't pick a codec.
Will combining different formats lose quality?
Mixed-format merges re-encode by necessity (you can't byte-copy clips that don't match), so there's a small quality cost. The merger uses CRF 20, which is visually high quality, but it's not lossless. Same-format clips would stream-copy losslessly; mixed ones can't.
Do I have to choose a codec or output format?
No — the merger has no options. Mixed-format inputs always re-encode to a fixed baseline: H.264 (CRF 20), AAC 192k, in an MP4. If you want a different codec or container, merge first, then convert the result with the video-transcoder.
Why is my mixed-format merge so slow?
Because it re-encodes every frame. Stream-copy (for matching clips) just copies bytes and takes seconds; a mixed-format merge decodes and re-encodes the whole timeline, which runs at roughly real-time to a few times real-time. Bigger and higher-resolution clips take longer.
Can I merge an iPhone HEVC clip with regular MP4s?
Yes. HEVC (H.265) in a MOV won't stream-copy alongside H.264 MP4s, so the merger re-encodes everything to H.264. The result is broadly compatible — often more so than the original HEVC, which some players struggle with.
What happens to clips that have no audio?
They combine fine. The re-encode concat filter maps audio optionally, so a silent screen capture or muted clip contributes no audio for its segment without breaking the merge. The narrated clips keep their audio.
Will different resolutions cause problems?
No — a resolution difference triggers the re-encode path, and the concat filter unifies the clips into one timeline. The output dimensions follow the filter graph; if you need a specific target size, post-process the merged file with the video-resizer.
Why is the output always an MP4 even though I added MKV and MOV files?
On the re-encode path the merger always writes .mp4 with +faststart for maximum compatibility. The input containers don't carry through. To get a different container, transcode the merged MP4 afterward.
Are my phone clips and screen recordings uploaded?
No. All processing is in-browser via FFmpeg.wasm. Your MOVs, MP4s, and captures are read and re-encoded locally and never sent to a server.
Can I keep HDR when mixing formats?
No. The re-encode outputs 8-bit yuv420p SDR for compatibility, so HDR/10-bit clips are flattened. HDR can only survive a lossless stream-copy, which requires all clips to match — not possible across mixed formats.
How do I set the order when combining different clips?
Add them in the order you want — the merge order is the add order. There's no drag-to-reorder. To move a clip, remove it and re-add it in position with Add more, then run.
What's the difference between this and just transcoding each clip first?
You could transcode each clip to a matching format with the video-transcoder and then stream-copy them losslessly here. But for a quick combine, this tool's automatic re-encode does it in one step — at the cost of one re-encode pass instead of a lossless join.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.