About Video Joiner
AntiUpload's Video Joiner concatenates multiple video files into a single output. Drop in 2 or more clips, pick landscape or portrait output orientation, and the tool normalises every input to a common 1080×1920 (portrait) or 1920×1080 (landscape) frame, normalises the frame rate to 30 fps, resamples audio to 44.1 kHz stereo, then concats the lot into one MP4. The normalisation step is the unsung hero — FFmpeg's concat filter requires every input to share frame size, sample aspect ratio, pixel format, frame rate, sample rate, and channel layout, otherwise the filter errors with a cryptic "input link parameters do not match output link parameters" message. Most online joiners hit this wall constantly because users feed them mixed-source content (one clip from a phone, one from a screen recorder, one from a downloaded YouTube — all different specs).
Practical use cases: stitching back-to-back phone recordings into one continuous clip, joining intro + main + outro segments for a YouTube upload, combining B-roll shots for a video edit, building a compilation reel from multiple sources. Most of these workflows would otherwise require opening a desktop editor (DaVinci Resolve, Final Cut, Premiere) which is overkill for a simple concat. Online competitors (Kapwing, Veed, Clideo, Online-Convert) all have file-size limits on free tiers and most watermark the output; ours doesn't.
V1 ships single-pass re-encode (every input gets normalised and re-encoded for the join). A stream-copy fast path — when all inputs already share codec / resolution / fps, FFmpeg can re-mux them without re-encoding, 5-10× faster — ships in a follow-up PR. For matched-source content (clips recorded back-to-back on the same phone) the speedup would be meaningful. For the dominant mixed-source case the re-encode is unavoidable, so V1 ships the always-correct path first.
How it works
- Drop 2 or more video filesPick all your clips at once (Shift-click or Ctrl-click). They concatenate in the order they appear in the picker — usually alphabetical. Accepts MP4, MOV, WebM, MKV, AVI, M4V, FLV — even mixed within the same join.
- Pick orientationLandscape (1920×1080) for YouTube / desktop content. Portrait (1080×1920) for TikTok / Reels / Shorts. All inputs get letterboxed to fit the target dimensions if they don't match.
- Click Join videosRe-encoding runs through libx264 at the chosen resolution + 30 fps + AAC 128k. Progress shows live frame= updates. Output time is roughly the sum of input durations × re-encode time per frame.
- Download the joined fileOutput is a single MP4 with the H.264 + AAC + faststart profile that plays on every browser, phone, and TV.