How to compress video for email, web, and social โ without losing quality
Gmail caps attachments at 25 MB. Discord at 25 MB. WhatsApp at 16 MB. Here's how to get any video under those limits while keeping it watchable.
Why video files are so big
A one-minute 4K video from a modern phone is around 300 MB. The reason is simple math: 4K at 60 fps is 8.3 million pixels per frame times 60 frames per second times 24 bits per pixel โ over a gigabyte per second of raw data. Codecs like H.264 and H.265 compress this by a factor of ~100, but 300 MB per minute is still what lands in your camera roll.
Every platform you might want to send that video to has a hard cap:
- Gmail: 25 MB attachment limit (larger goes through Drive)
- WhatsApp: 16 MB for video (100 MB in some regions)
- Discord free: 25 MB (500 MB on Nitro)
- Slack: 1 GB, but 25 MB before the free-tier UI starts complaining
- Twitter/X: 512 MB but only 2m 20s duration
- Most job-application portals: 5-10 MB
Every one of those limits is achievable without making your video look like it's from 2005 โ you just need to know which knobs to turn.
The three knobs that matter
Compression tools expose a lot of settings but 90% of the file size comes from three of them:
1. Resolution. 4K is four times more pixels than 1080p, which is four times more pixels than 540p. Dropping from 4K to 1080p for a video someone will watch on a phone screen is essentially free โ the phone can't display 4K anyway.
2. Bitrate. This is the number of bits per second spent describing the video. Higher bitrate = better quality = bigger file. A reasonable 1080p bitrate for web viewing is 2-4 Mbps; phone captures often default to 40+ Mbps.
3. Codec. H.264 is universally compatible. H.265 (HEVC) gets you ~40% smaller files at the same quality but doesn't play everywhere. VP9/AV1 are similar tradeoffs. For sharing, stick with H.264.
Framerate matters a little (30 fps looks fine for most content, 60 fps doubles the file), and audio matters much less than people think (dropping audio bitrate from 256 kbps to 128 kbps saves maybe 1 MB per minute).
A practical recipe
For most "get this under 25 MB" problems:
- Under 1 minute of talking-head or screen-recording: 1080p, H.264, 2 Mbps bitrate. Result: ~15 MB per minute.
- Under 30 seconds of action or motion: 1080p, H.264, 4 Mbps. Result: ~15 MB.
- A minute of anything for WhatsApp's 16 MB: 720p, H.264, 1.5 Mbps. Result: ~12 MB.
- Just get it under 5 MB for a form: 540p, H.264, 800 kbps. Result: ~6 MB per minute.
Doing it in the browser
Compress Video runs the standard ffmpeg toolchain compiled to WebAssembly โ the same engine used server-side by every video platform, just running in your tab. You pick a target file size or bitrate, it does the work locally, no upload.
Two things to know about browser-based encoding:
- It's slower than desktop ffmpeg (about 3-5x real-time on a decent laptop vs 10-20x on native). A 5-minute video takes 1-2 minutes to encode.
- Battery hit is real on laptops. Plug in for anything over a couple of minutes.
Beyond that it's a straightforward win: no upload wait, no server-side queue, no privacy question about what happens to your footage.
Related workflows
If you don't need the video at all and just want the audio, Extract Audio from Video pulls out MP3 or WAV directly. If the source is a MOV your player won't touch, MOV to MP4 gets you to something universal. If you're posting to a modern web platform, MP4 to WebM is often smaller than MP4 with equal quality.