halfsize

halfsize / Size limits

Video size limits, by platform

Every platform publishes a cap, and almost every cap is measured differently from the number your file manager shows. Here are the limits people actually hit, checked in November 2026, and the one command that lands under each of them.

The current caps

PlatformCapWhat countsFit it
Discord (free)20 MBper file, per message--for discord
WhatsApp16 MBvideo sent as media--for whatsapp
WeChat20 MBvideo sent in a chat--for wechat
Gmail25 MBthe whole message, after base64--for gmail
Outlook.com20 MBthe whole message, after base64--for outlook
X / Twitter512 MBper video upload--for twitter
Telegram2 GBper file, 4 GB on Premium--to 2gb
Slack (free)1 GBper file--to 1gb
YouTube256 GBper upload, 12 hours maxnot the use case

Caps change without much notice, and paid tiers differ. The presets are a convenience; --to always wins.

Why the number you see is not the number you get

Three things eat into a cap, and they stack:

Rule of thumb: aim 5% under the advertised cap for a normal upload, and divide by 1.37 first for an email attachment. --for already does both.

One command per cap

$ npx halfsize holiday.mp4 --for discord

  target     20.0 MB
  plan       H.264  1280x720  2.46 Mbps  audio 128 kbps  2-pass
  scale      1920x1080 → 1280x720
  output     holiday.discord.mp4

  136 MB  →  19.45 MB   7.0x smaller   2.7% under target
  VMAF 88.3   SSIM 0.971   slight softening

Swap the preset for the platform you are fighting: --for whatsapp, --for wechat, --for gmail, --for outlook, --for twitter. Anything else becomes --to 800mb or --to 700k.

What each cap costs in quality

Measured on the same 60-second 1080p30 source at 18 Mbps (136 MB), encoded locally on a laptop:

TargetOutputResolutionVMAFVerdict
20 MB (Discord, WeChat)19.45 MB1280×72088.3slight softening
18 MB (Gmail)17.62 MB1280×72087.4slight softening
16 MB (WhatsApp)15.59 MB960×54084.8slight softening
10 MB9.77 MB960×54082.9slight softening
5 MB4.93 MB640×36072.0visible loss

VMAF above 90 reads as “looks the same”, 80–90 as slight softening, 70–80 as visible loss. Real numbers move with content: a talking head does better than confetti.

When the target is arithmetically impossible

A cap is a bitrate budget: bytes × 8 ÷ seconds. One hour inside 20 MB is 44 kbps for video and audio combined, which no encoder can make look good. Since 0.1.9 the tool says so before encoding and reports the smallest size that duration can hold, instead of spending ten minutes to hand back a file that still does not fit. Trimming the clip is the honest fix.

FAQ

Why does a 20 MB file fail on a 20 MB limit?

Decimal megabytes versus binary mebibytes, base64 for email, and container overhead all count. Aim 5% under, or use the preset which already does.

What is Discord's free upload limit?

20 MB per file on the free plan as of November 2026. Nitro raises it; --to overrides the preset.

Does WhatsApp re-compress videos?

Yes, when you send video as media. Sending it as a document skips the 16 MB media cap and the second encode, but the recipient gets a file rather than a preview.

Can it hit a 2 GB target?

Yes, if the source has the bitrate to spend. A short clip cannot grow to fill a big cap, and a very long one cannot shrink into a tiny cap.

Is anything uploaded?

No. FFmpeg runs on your machine. No account, no quota, no watermark.

Related guides