How GoVid compresses video without a server — and what makes this technically possible.
FFmpeg is a free, open-source command-line tool that handles encoding, decoding, transcoding, muxing, demuxing, streaming, filtering, and playing almost any audio/video format. It's the engine underneath VLC, YouTube's upload pipeline, OBS, and thousands of other tools. It's written in C and has been actively developed since 2000.
Until recently, FFmpeg required being installed on a system. You couldn't run it in a browser. WebAssembly changed that.
WebAssembly (WASM) is a binary instruction format that runs in the browser. It's not JavaScript — it's a compile target for languages like C, C++, and Rust. Code compiled to WASM runs in a sandboxed environment inside the browser tab, at near-native performance.
Emscripten is the toolchain that compiles C/C++ programs to WASM. The ffmpeg.wasm project used by
GoVid is FFmpeg compiled via Emscripten to run as a browser module.
When you drop a video, GoVid:
ffmpeg -i input.mp4 -crf 28 -preset fast output.mp4)Your video is loaded into memory on your device. It is never transmitted to any external host.
For a standard MP4 compression, GoVid runs:
ffmpeg -i input -c:v libx264 -crf 28 -preset fast -c:a aac -b:a 96k -movflags +faststart output.mp4
-c:v libx264 — encode video with H.264-crf 28 — quality setting (lower = better quality, larger file)-preset fast — compression speed vs ratio tradeoff-c:a aac -b:a 96k — encode audio as AAC at 96 kbps-movflags +faststart — move metadata to the start so the file streams immediatelyServer-based video tools receive your file. They can log it, scan it, retain it, or transmit it. Most have privacy policies — but policies can change, companies can be acquired, and breaches happen. The only truly private processing is processing that never leaves your device.
GoVid's architecture makes server-side access technically impossible: there is no route for your video to leave the browser tab.
Browser-based FFmpeg is slower than native FFmpeg because WASM doesn't have access to hardware encoders (like QuickSync or NVENC). A 5-minute 1080p video that takes 10 seconds with hardware acceleration might take 2–4 minutes in the browser. For most files under 500 MB, this is still practical.
Files above 2 GB also exceed what browsers can reliably hold in memory.