How the Video Merge Tool Works
AnyTool joins multiple clips into one entirely in the browser using a self-hosted single-threaded ffmpeg.wasm engine — the core (ffmpeg-core.js + the 32 MB wasm) is bundled from npm and served as a same-origin asset, so nothing is fetched from a CDN. It uses a memory-safe two-stage pipeline. First each clip is normalized: scaled and padded to a common width and height, setsar applied, converted to a common frame rate and yuv420p pixel format, with audio resampled to 48 kHz stereo — and any clip lacking audio gets an anullsrc silent track so the streams line up. Each normalized clip is encoded to an MPEG-TS intermediate and its source is freed from the virtual filesystem (MEMFS) to keep memory low. Finally the uniform .ts segments are concatenated into the output, which is read back as an MP4 blob. This avoids the common concat-demuxer "-c copy" trap that fails when clips have mismatched codecs, resolutions or frame rates. Single-threaded is deliberate: the multi-threaded core needs SharedArrayBuffer + cross-origin isolation (COOP/COEP), which would block cross-origin ad iframes.
- Runs client-side — the clips are never uploaded
- Self-hosted ffmpeg core (bundled) — no CDN
- Each clip normalized: scale+pad, setsar, common fps, yuv420p
- Audio resampled to 48k stereo; missing audio gets anullsrc
- Encoded to MPEG-TS intermediates, sources freed from MEMFS
- Uniform .ts segments concatenated (no fragile -c copy trap)
- No backend, no signup, no size cap
