Browser-based video and audio compression and format conversion. No uploads, no server — everything runs locally using FFmpeg compiled to WebAssembly.
- Compress video or audio files to a target file size or a specific quality level (CRF)
- Convert between formats: MP4, WebM, MKV, MOV, AVI, GIF, MP3, AAC, OGG, WAV, FLAC, M4A
- Downscale resolution: 1080p, 720p, 480p, 360p
- Strip audio track or set audio bitrate independently
- Two-pass encoding for accurate target size
Files never leave your machine. FFmpeg WASM loads once from a CDN and is cached by the browser.
bun install
bun run devOpen http://localhost:5173.
docker compose up --buildOpen http://localhost:3000.
- Vite + React 18 + TypeScript
- FFmpeg.wasm (
@ffmpeg/ffmpeg,@ffmpeg/util) loaded from unpkg CDN - Tailwind CSS v4
SharedArrayBuffer is required for multi-threaded FFmpeg. The dev server and the nginx config both set the necessary Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp headers. If you serve the built files through a different web server, you need to add those headers manually.
Large files (over ~1–2 GB) may hit browser memory limits. If that happens, try splitting the file or lowering the resolution before converting.

