FFmpeg Cookbook

WhatsApp Video Compressor

Compress video to WhatsApp's 16 MB attachment cap. Bitrate is back-calculated from duration.

Local processing only — your file never leaves the browser
🎯 Target size: 16 MB (WhatsApp's video attachment cap) — encoded with a 0.92 safety factor (~14.7 MB target).
💬
Drag & drop a video, or tap to select
MP4 / MOV / WebM, up to 500 MB
🎬
Long clips (5 min+) will be aggressively compressed to fit 16 MB. If quality drops too far, downscale to 720p first with the resize tool, then run this compressor.
Processing… 0%
Original
Compressed
Download compressed video

Useful next tools

Popular uses
Compress for WhatsApp sharingSendable videos on slower networksLightweight family or team sharing

What this tool does

  • Targets WhatsApp's exact 16 MB cap
  • Bitrate back-calculated from duration with a 0.92 safety factor
  • Standard H.264 + AAC for maximum compatibility
  • Output size badge confirms the file fits
  • Local-only processing — your file never leaves the browser

How to use

  1. 1

    Drop the video

    MP4 / MOV / WebM.

  2. 2

    Verify duration

    Auto-detected from the file. Manual entry only if detection fails.

  3. 3

    Compress

    A green check appears when the result fits 16 MB.

What each setting means

Target 16 MB
WhatsApp's video attachment cap. Fixed.
0.92 safety factor
Accounts for container overhead, targeting ~14.7 MB.
Audio bitrate
Auto-switches between 96 kbps (≤10 min) and 64 kbps (>10 min).

Recommended settings

Clip ≤30 seconds
Default settings keep 1080p
16 MB at short durations easily covers 1080p.
Clip 1–5 minutes
Default fine; if quality looks rough, downscale to 720p first
Mid-length clips can starve at 1080p in 16 MB.
Clip > 5 minutes
Downscale to 720p or 540p before compressing
Long clips fit only with aggressive bitrate cuts.

Common pitfalls

Symptom: Result slightly over 16 MB

Cause: Container overhead shifts the math by a few hundred KB.

Fix: The 0.92 safety factor usually handles this. Re-run if it still spills over.

Symptom: Duration didn't auto-detect

Cause: Header damage or non-standard format.

Fix: A manual duration field appears — enter the length in seconds.

Symptom: Quality is poor

Cause: Long clip starved for bitrate.

Fix: Trim or downscale (720p / 540p) first, then run this compressor.

Equivalent FFmpeg commands

Reference commands you can run on the desktop FFmpeg CLI.

WhatsApp 16 MB compression (60s clip)
ffmpeg -i input.mp4 -c:v libx264 -preset fast -b:v 2000k -maxrate 2000k -bufsize 4000k -c:a aac -b:a 96k -movflags +faststart output.mp4
Targets ~16 MB for 60s.
Long-clip recipe (10-min input)
ffmpeg -i input.mp4 -c:v libx264 -preset fast -b:v 192k -maxrate 192k -bufsize 384k -c:a aac -b:a 64k -movflags +faststart output.mp4
Severe bitrate, expect quality loss.

Browser support & limits

  • Max input size: 500 MB
  • Target fixed at 16 MB (no custom)

Privacy

This tool runs ffmpeg.wasm directly in your browser. Files never leave your device — everything runs locally. Read the privacy policy →

Frequently asked questions

Is WhatsApp's video attachment cap really 16 MB?

Yes — as of 2026 the cap is 16 MB. WhatsApp Business API may differ.

Same cap for WhatsApp Channels and Status?

Channels are 16 MB (video); Status has a 30-second limit on top. This tool targets the standard "video attachment" use case.

Why aim for 14.7 MB instead of exactly 16 MB?

mp4 container overhead (moov atom etc.) can push real output slightly above the predicted size. The safety margin keeps the result under the cap.

Long clip + high quality?

WhatsApp's 16 MB ceiling makes this incompatible. Use Drive sharing or trim to ≤3 minutes before compressing.

Can I compress directly from iPhone?

Yes — open this tool in Safari and pick from camera roll. Browser memory limits clips at ~500 MB.

Related tools

In depth: context unique to this tool

WhatsApp's 16 MB only applies to one-to-one chats

The headline number is 16 MB, but each WhatsApp feature has its own cap. Personal and group chats: 16 MB for video attachments. WhatsApp Status: 30 seconds (size doesn't matter). WhatsApp Channels: 16 MB on the broadcaster side. WhatsApp Business API: configurable up to 100 MB by the business. This tool is tuned for the chat case — the highest-volume use.

For Status, trimming to ≤ 30 seconds matters more than bitrate. Compressing a 60-second clip to fit 16 MB but missing the 30-second window means it just gets rejected anyway. For Channels distribution, 16 MB at 720p is the sweet spot: small enough that viewers don't buffer, sharp enough that the visual lands.

What 16 MB actually buys you for long clips

16 MB is one of the strictest attachment caps in the SaaS landscape, and squeezing a 5+ minute clip into it at 1080p is essentially impossible. The math: `required_kbps = (16 × 8192 - audio_kbps × duration) / duration`. A 10-minute clip leaves ~192 kbps for video — about 1/30 of a standard-definition YouTube target. Motion-heavy scenes will block heavily.

Practical options for long-clip WhatsApp delivery: (1) Drop to 720p or 540p before compressing (manual). (2) Trim the clip down first. (3) Upload to Drive / Dropbox and paste the link. Option 3 keeps the most quality. Treat this tool as the "I must attach inline" fallback.

iPhone vs Android upload pipelines

When iPhone sends a video through WhatsApp, WhatsApp itself re-compresses. The default is the "fast send" mode, which compresses aggressively; a pre-compressed 16 MB file from this tool can be further degraded by WhatsApp. Switching the in-app setting to "best quality" preserves the file as-is, at the cost of slower send times on poor networks.

On Android, OEM camera apps increasingly default to HDR / HEVC recording, which can break compatibility before WhatsApp ever sees the file. This tool normalizes input to H.264 + AAC, so the Android → WhatsApp → iPhone chain stops producing "received but won't play" failures.