By Updated

Video Compressor

Shrink mp4, webm, and mov videos right in your browser with ffmpeg.wasm. Choose a target preset (web 720p / 1080p, Discord 25 MB, Twitter 512 MB) or set a custom H.264 CRF: your files never leave the device.

Interactive tool

ffmpeg.wasm engine loads on first run (~32 MB)

The engine is cached for the rest of your session. Every transcode runs entirely in your browser: files never leave your device.

Threading: detecting…

Drop a video here

Up to 250 MB / 5 minutes. The file never leaves your browser.

What is the Video Compressor?

A free, in-browser video compressor powered by ffmpeg.wasm. It re-encodes your clip with H.264 at the CRF you pick: yielding a much smaller mp4 that still plays everywhere. Files never leave your device.

How to Use the Video Compressor

  1. 1Drop a video file (mp4, webm, mkv, mov, avi)
  2. 2Pick a preset (Web 720p, Web 1080p, Discord 25 MB, Twitter 512 MB) or Custom
  3. 3Optionally adjust the CRF slider (18 = nearly lossless, 32 = small but lossy)
  4. 4Click Compress: the engine loads on first run (~32 MB) then is cached
  5. 5Preview the result, check the before/after byte stats, and download
What you get

Key features

Four real-world presets

Discord 25 MB, Twitter 512 MB, Web 720p, Web 1080p: set up for the right balance per platform

CRF slider for fine control

Tweak the H.264 quality factor from 18 (nearly lossless) to 32 (aggressive)

Max-resolution clamp

Optionally cap the output height to skip the extra megabytes of unused resolution

Audio bitrate control

AAC bitrate slider, or mute the track entirely with a one-click toggle

Multi-threaded ffmpeg.wasm

Uses SharedArrayBuffer when available for 5-10x faster transcodes

Faststart for streaming

Adds -movflags +faststart so the file plays from the first byte over HTTP

Before / after byte stats

See exactly how many MB you saved and at what percent

100% private

No upload, no server, no signup: the video stays in your browser

Why Use This Compressor Over a Cloud Tool?

Every popular online compressor uploads your video to a server, takes minutes longer, and frequently adds watermarks or quality caps behind a signup. Doing the transcode locally via ffmpeg.wasm is faster, completely private, and free.

Common use cases

  • Squeeze a screen recording under the 25 MB Discord free-tier cap
  • Shrink a phone clip to fit Twitter / X video size limits
  • Pre-compress training videos before uploading to a slow LMS
  • Reduce a bandwidth-heavy email attachment
  • Optimise a marketing video for web embedding (HTML5 video / Vimeo Lite)
  • Free up phone storage by re-encoding old high-bitrate captures

Picking the right CRF

  • 18: nearly visually lossless (best for archival, big files)
  • 20: high quality, default for 1080p source video
  • 23: H.264 default, balanced quality and size
  • 26: noticeably softer, great for short clips and social
  • 28: strong compression for 720p web video
  • 30+: aggressive, only use when you need a very small file

Why H.264 and not VP9 / AV1?

H.264 is the universally supported video codec: every browser, phone, TV, and chat platform plays it. VP9 and AV1 give better quality per byte but Discord, iMessage, and many editors still refuse them. The companion Video Format Converter lets you switch later.

Multi-threaded vs single-threaded

The tool routes (/tools/video-* and /tools/audio-*) are served with Cross-Origin-Opener-Policy + Cross-Origin-Embedder-Policy so the multi-threaded ffmpeg.wasm core can use SharedArrayBuffer. If your browser blocks SAB, the loader falls back to the single-threaded core, slower but still functional.

Pro tips

Tips & best practices

Trim before you compress

Use the Video Trimmer first if you only need part of the clip: fewer frames is always the biggest size win.

Use Discord 25 MB preset for short screen captures

It pairs CRF 28 with a 720p height cap to reliably land under 25 MB for ~1-3 minutes of content.

Mute the audio for silent recordings

A muted screen capture or whiteboard recording can shave another 5-10 % without losing anything.

Two-pass would help, but is slower

CRF is single-pass: fast and reliable. For exact target sizes, iterate on the CRF slider instead of switching to two-pass.

Mobile RAM is the bottleneck

iOS Safari is hostile to large WASM heaps. Use desktop for anything over ~100 MB to avoid mid-transcode crashes.

Built for trust

Privacy & security

Every byte of compression runs locally via ffmpeg.wasm. Your video is never uploaded, logged, or stored. The engine artefacts are served from our own origin so cross-origin isolation works without third-party CDN dependencies.

Frequently Asked Questions

Does the video leave my browser?

No. Compression runs locally via ffmpeg.wasm. The engine artefacts are served from the same origin under /ffmpeg/<version>/, and your input video is read straight from your device.

What is CRF?

CRF (Constant Rate Factor) is the H.264 quality knob. Lower CRF = higher quality and larger file; higher CRF = smaller file and visible loss. 18 is nearly visually lossless, 23 is the default, 28 is aggressive but acceptable for short web clips.

Why H.264 / mp4 only? What about VP9 or AV1?

H.264 + mp4 is the most widely compatible target: every browser, phone, Discord, iMessage, Slack, and editor plays it. The Video Format Converter tool lets you switch container or codec afterwards if you need WebM, VP9, or AV1.

How big a file can I compress?

There is a 250 MB / 5-minute soft cap to protect mobile devices from out-of-memory crashes. Larger files work on desktop browsers with several GB of available RAM, but mobile Safari may struggle.

Why is the first run slower?

The ffmpeg.wasm core is ~32 MB and downloads only on demand. After the first run it is cached for the rest of the session: switching to multi-threaded mode automatically when your browser allows SharedArrayBuffer.

Does it strip metadata?

The re-encoded mp4 does not carry your input file’s arbitrary metadata. Standard playback metadata (duration, codec, bitrate) is re-derived from the freshly encoded streams.