Video tools

Merge videos

Concatenate two or more videos, one after another, into a single MP4. A packet-level copy with no decoding, so this runs in Node, the CLI and MCP as well. Every input must share the same video codec (and audio codec, if present); mixed-codec inputs need re-encoding first, which this tool deliberately does not do.

Runs on your device. The file is never uploaded.

Merge videos writes two or more clips end to end into one file called merged.mp4, in the order you dropped them. Each input starts where the previous one's highest packet timestamp ended, and no frame is decoded on the way. Sound survives only when every input carries an audio track; one silent clip leaves the whole merge without audio.

Input

Questions

Why does it refuse my files with a codec mismatch?

Because merging here is a packet copy, not a re-encode, so every input has to already use the same video codec, and the same audio codec when audio is present. The error names the offending file, both codecs and tells you to convert first with video-convert. Re-encoding inside the merge would be slower and would cost quality, so it is left as a separate step you choose.

What order do the videos end up in?

The order you gave them in. The first file starts at zero and each following file is offset to begin where the previous one ended, computed from the highest packet end timestamp written so far. Reorder the files on the page and run it again if the sequence is wrong.

Does merging lose quality?

No. No frame is decoded or encoded. The compressed packets from each input are written into one new MP4 with their timestamps shifted, so every part keeps exactly the bytes it had. Because nothing is decoded, this also runs in Node, on the command line and through MCP.

What happens to the audio?

Audio is carried over only if every single input has an audio track. If even one file is silent, the merge writes video only and the sound from the other files is left out. When audio is kept, all inputs must share one audio codec, checked the same way as the video codec.

What is the output called?

merged.mp4, always, and always MP4 no matter what the inputs were. The tool needs at least two files and says "video-merge needs at least 2 files" if you give it one. A file with no video track is refused by name before anything is written.

How many videos can I merge at once?

There is no fixed cap, but every input is held in browser memory at the same time and the merged MP4 is built in memory as well. Several short clips are unremarkable. A handful of long recordings can exhaust a tab, and a phone runs out sooner than a laptop. Nothing is uploaded, so the ceiling is your own device.

Related Video tools

n→nConvert videoChange videos between MP4 and WebM, in the browser only. It encodes with WebCodecs, which Node has no equivalent of, so the CLI and MCP surfaces refuse it.Runs on each file you dropn→nCompress videoShrink a video by re-encoding it at a lower quality, in the browser only, like video-convert (src/tools/video-convert.ts), because mediabunny encodes through WebCodecs, which Node has no equivalent of. Always outputs MP4.Runs on each file you dropn→nTrim / cut videoCut a video down to a start-to-end range without decoding a single frame. Packets are copied straight from the source into a new MP4, so this runs in Node, the CLI and MCP as well as the browser. The cut snaps back to the nearest keyframe before the start you asked for, the same trade-off ffmpeg -c copy makes.Runs on each file you dropn→nResize / crop videoResize and/or crop a video, in the browser only, like video-convert (src/tools/video-convert.ts), because mediabunny decodes and re-encodes through WebCodecs, which Node has no equivalent of. Always outputs MP4.Runs on each file you dropn→nRotate videoRotate a video by a multiple of 90° by writing rotation metadata into the container, the same trick phones use for orientation, rather than re-encoding every frame. A packet-level copy, no decoding, so this runs in Node, the CLI and MCP as well as the browser. Most players honour this metadata; a player that ignores it will show the original orientation.Runs on each file you dropn→nChange video speedSpeed a video up or down by rescaling the timestamp on every packet. A packet-level copy, no decoding, so this runs in Node, the CLI and MCP as well as the browser. Audio speeds up with the video and its pitch shifts along with it, the same trade-off most simple speed-change tools make; correcting pitch back to normal needs decoding and resampling the audio, which this tool deliberately does not do.Runs on each file you drop