Lossless video file concat — dead simple.
Stitch joins multiple video files into one without re-encoding. No quality loss, no audio drift. Drop your files, pick an order, click Merge.
Every other tool either re-encodes (destroying quality) or is too complex for a simple stitch job. Stitch does one thing well — it uses ffmpeg's MPEG-TS intermediate method to handle timestamp discontinuities correctly, which is why audio stays in sync across segment boundaries.
- Drag & drop video files (MP4, MKV, MOV, AVI, TS)
- Drag-to-reorder before merging
- Zero re-encoding — lossless,
-c copyall the way - Proper audio sync via TS intermediate (fixes the drift issue)
- Auto-detects ffmpeg from PATH and common install locations
- Supports H.264, HEVC/H.265, AV1, VP9
- Real-time progress with phase indicator
- Lightweight — built with Tauri (Rust + React)
For each input file, Stitch remuxes to MPEG-TS (no re-encode, just container change). Then concatenates all TS files and remuxes back to MP4. The TS format handles timestamp resets at segment boundaries — this is what prevents audio/video drift in long multi-file joins.
input1.mp4 ──► input1.ts ─┐
input2.mp4 ──► input2.ts ─┼──► concat ──► output.mp4
input3.mp4 ──► input3.ts ─┘
All steps use -c copy. No pixels or audio samples are decoded or re-encoded.
- ffmpeg — place it anywhere; Stitch auto-detects from PATH,
C:/ffmpeg/bin/,Pictures/,Downloads/, or set it manually in Settings.
# Prerequisites: Node.js, Rust, Cargo
npm install
npm run tauri devnpm run tauri buildProduces a standalone installer in src-tauri/target/release/bundle/.
- Tauri v2 — Rust backend, native window
- React + TypeScript + Vite — frontend
- IBM Plex Mono / Sans — typography
- ffmpeg — the actual heavy lifting
MIT
