Blog how-to
How to compress video for email (Gmail 25 MB, Outlook 20 MB, iCloud 20 MB in 2026)
Email attachment caps haven't moved in fifteen years. Gmail 25 MB, Outlook 20 MB, iCloud Mail 20 MB. Bitrate math, codec choice, and when to send a link instead.
Email attachment limits are the oldest unmoved tech limit in the consumer internet. Gmail has been at 25 MB since 2004. Outlook hovered around 20 MB through three different ownership eras. iCloud Mail has been 20 MB since launch. The reason isn’t technical — it’s the collective inertia of mail-server infrastructure built when 1.4 MB floppies were the unit of “big file.”
This guide is the practical version: what each provider actually caps attachments at, the bitrate math to fit a video under those caps, and when to give up on attachments and send a link instead.
TL;DR
The May 2026 attachment caps:
| Provider | Per-message cap | Cloud-link fallback |
|---|---|---|
| Gmail | 25 MB | Google Drive (auto, 100 GB+) |
| Outlook.com | 20 MB (free) / 33 MB (M365) | OneDrive (manual) |
| iCloud Mail | 20 MB | Mail Drop (5 GB, 30-day expiry) |
| Yahoo Mail | 25 MB | Dropbox / Drive (manual) |
| ProtonMail | 25 MB | Proton Drive (manual) |
| Corporate (typical) | 10-25 MB | Varies wildly |
The binding constraint is the recipient’s provider, not yours. Gmail accepts the 25 MB you send but Outlook bounces it if it lands over Outlook’s cap. The safe default is to stay under the lowest cap your recipients might use: 20 MB.
To fit a one-minute 1080p video in 20 MB: H.264, CRF 23, AAC 128 kbps. That gives you about 2.6 Mbps total — fine quality. For longer clips, the math gets brutal fast.
In Video Forge: drop the file, pick the Email tile, hit Convert. Targets the 20 MB ceiling for cross-provider safety.
The actual attachment limits
The per-message cap is checked twice — once when the sender uploads, once when the recipient’s mail server accepts the message. The smaller of the two wins. If you’re sending a 24 MB attachment from Gmail to Outlook, Gmail will accept it but Outlook’s server will bounce the message with a 5.3.4 “message too large” error.
The functional caps for inline-delivered video attachments:
| Provider | Inline cap | Hidden cloud route |
|---|---|---|
| Gmail (free) | 25 MB | Drive auto-upload above 25 MB |
| Gmail (Workspace) | 25 MB per attachment, 150 MB per message | Drive auto-upload above 25 MB |
| Outlook.com (free) | 20 MB | OneDrive (manual click) |
| Microsoft 365 | 33 MB | OneDrive (manual click) |
| Exchange (on-prem) | Admin-controlled, often 10 MB | Varies |
| iCloud Mail | 20 MB | Mail Drop (auto above 20 MB) |
| Yahoo Mail | 25 MB | Yahoo Cloud or Dropbox |
| ProtonMail | 25 MB | Proton Drive (manual) |
| Zoho Mail | 20 MB | Zoho WorkDrive |
| Tutanota | 25 MB | None |
The cloud-link fallbacks (Mail Drop, Drive auto-upload, OneDrive prompts) only work when the sender opts in. The recipient still sees a link in the message body — they don’t see a 4K video play in their inbox. If your goal is “video appears inline in their email client” you need to be under that recipient’s per-message cap.
Note: most providers also have a per-message cap separate from the per-attachment cap, and a daily-volume cap. For routine consumer email those rarely matter.
The base64 tax
This is the hidden quirk that catches people: email attachments are base64-encoded during transit per RFC 2045. base64 inflates binary data by roughly 33%. A “20 MB” attachment cap is actually a ~26.7 MB on-the-wire limit, which means the binary file you attach can be no larger than about 20 MB / 1.37 ≈ 14.6 MB to safely fit.
Most modern mail servers check the cap against the decoded binary size (so a 20 MB cap really does mean a 20 MB binary file), but some older or stricter ones check against the encoded size. The safe assumption is: target the cap minus ~10% to leave room for both base64 and the mail headers.
So for a “20 MB” Outlook target, aim for a ~18 MB binary file. Video Forge bakes this margin in automatically.
The bitrate math
The same formula from the target file size deep dive:
target_kbps = (max_size_mb × 1024 × 1024 × 8) / (duration_seconds × 1000)
− audio_kbps
For an 18 MB binary target (the safe 20 MB inline ceiling), 60-second clip, 128 kbps AAC:
target_kbps = (18 × 1024 × 1024 × 8) / (60 × 1000) − 128
= 2516 − 128
= ~2388 kbps total video bitrate
That’s a clean 1080p H.264 budget at CRF ~22 — visually lossless to most viewers. The math holds up to about 90 seconds at 1080p; longer clips force resolution drops or higher CRF.
| Duration | 720p target | 1080p target | Note |
|---|---|---|---|
| 30s | High-CRF 1080p (CRF 18) | Effectively lossless | Source quality is the limit |
| 60s | Clean 1080p (CRF 22) | Clean 1080p (CRF 22) | The comfortable zone |
| 2 min | Clean 1080p (CRF 25) | Soft 1080p (CRF 28) | 720p starts to be a better trade |
| 5 min | Clean 720p (CRF 23) | Soft 720p (CRF 27) | Drop to 720p |
| 10 min | Soft 540p (CRF 26) | — | Send a link |
For anything over 5 minutes at 1080p, you’re trying to fit a video that should be a link share. Skip the math and go straight to Drive / OneDrive / iCloud.
The codec choice
Use H.264 (AVC). Same reasoning as WhatsApp and Discord:
- Universal playback across every email client, including older Outlook and Apple Mail versions.
- Plays inline in Gmail web, Outlook web, Apple Mail, and the iOS Mail app.
- Doesn’t trigger format-rejection in corporate spam filters that block unknown MIME types.
Skip HEVC for email — older Outlook/Apple Mail combinations don’t play it inline, and you don’t know your recipient’s setup. Skip AV1 entirely.
Skip MKV, AVI, and MOV containers — wrap everything in MP4. Some corporate email gateways reject any container that isn’t MP4 or PDF.
For audio: AAC at 128 kbps. Lower if you’re tight on the budget.
The step-by-step in Video Forge
- Drop your video onto the queue. Video Forge reads file metadata and shows the duration / current size.
- Pick the Email tile in the Send To section. The app computes a target bitrate for the 18 MB safe binary size (margin for base64 and mail headers built in).
- (Optional) Generate the 5-second preview. Side-by-side with the source so you can verify quality at the chosen CRF before committing.
- Convert. Output suffixed
_email.mp4lands next to the source. Drag into your email client’s attachment area.
If your source is already under 18 MB and H.264, Video Forge remuxes
into MP4 — about 3 seconds, lossless, with +faststart flag so the
file plays before downloading completes.
Doing it with ffmpeg directly
For a single-pass CRF encode targeting ~18 MB:
ffmpeg -i input.mov -c:v libx264 -crf 23 -preset medium \
-vf "scale=-2:1080" -c:a aac -b:a 128k \
-movflags +faststart output_email.mp4
For a hard 18 MB cap (the real “exactly fits in attachment” requirement), use two-pass with the computed bitrate:
# Pass 1
ffmpeg -y -i input.mov -c:v libx264 -b:v 2388k -pass 1 \
-vf "scale=-2:1080" -an -f mp4 /dev/null
# Pass 2
ffmpeg -i input.mov -c:v libx264 -b:v 2388k -pass 2 \
-vf "scale=-2:1080" -c:a aac -b:a 128k \
-movflags +faststart output_email.mp4
The mechanics of two-pass (the passlogfile, why hardware encoders shortcut it, what to do when you need exact-size hits) are covered in the two-pass encoding post.
When to give up on attachments and send a link
Email attachments are the wrong delivery channel for video over 20 MB. For anything bigger, switch to a cloud-share link. Roughly in order of recipient friction:
- Google Drive — paste a sharing link in the email body. Recipient clicks, video plays in the Drive viewer (no download required). Works even if the recipient doesn’t have a Google account, as long as the share is “anyone with the link.” Caveat: corporate IT sometimes blocks Drive.
- iCloud Mail Drop — Apple Mail auto-offers this for attachments over 20 MB. Sends a link; file is hosted on iCloud for 30 days. The recipient downloads the original (no inline play). Works regardless of recipient’s email provider.
- OneDrive — same as Drive but inside the Microsoft ecosystem. Outlook integrates the link inline in the message.
- Dropbox / WeTransfer — third-party file-share. The hop adds friction (recipient clicks a link, lands on a third-party site, has to click again to download). Use when the corporate environment blocks Drive/OneDrive but allows file-share links.
- Self-host on your own domain — upload to your S3 / Cloudflare R2 / B2 bucket, paste a direct video link. Best for technical recipients.
For most professional use cases, Drive or OneDrive is the right answer above 25 MB. Email attachments are best reserved for short clips that fit naturally under the cap.
Privacy note
A reminder from the cloud converters post: any time a video leaves your machine for a third-party service, it’s on someone else’s server. Drive, Mail Drop, WeTransfer — all of them inherit that trade-off. For sensitive video (NDA-bound client work, unreleased content, anything regulated) the safest pattern is to compress locally and send the smallest file that fits the attachment cap rather than uploading to a cloud-share host. The cap-fitted attachment goes through encrypted SMTP; the cloud-share link goes through a third party’s servers.
What if your provider is blocking video attachments
Some corporate environments strip video attachments at the gateway regardless of size. Symptoms: recipient receives the message but no attachment is visible, or your sent message shows the attachment was stripped server-side.
Workarounds:
- Re-extension — rename
.mp4to.zipand zip the file. Often bypasses dumb extension filters. Recipient unzips on arrival. - Different container — convert to
.m4v(Apple-flavored MP4) or.mov. Some filters only blacklist.mp4. - Link share — give up and send a Drive link. Most corporate filters allow inline links even if they strip attachments.
This isn’t a Video Forge problem — it’s a recipient-org IT policy problem. Ask the recipient if their org blocks video attachments before spending compute on a recompression that won’t help.
FAQ
What is the maximum video attachment size for email? Defaults vary: Gmail 25 MB, Outlook.com 20 MB (33 MB for M365), iCloud 20 MB, Yahoo 25 MB, ProtonMail 25 MB. The recipient’s cap is the binding constraint.
Why are email attachment limits so small? Email attachments are base64-encoded for transit, inflating size by ~33%. Combined with legacy mail-server infrastructure cost decisions from the 1990s, providers settled on 20-25 MB and haven’t moved.
Should I send a video as an attachment or a link? Under 20 MB → attachment. Over 20 MB → link. The recipient experience is generally better with a link above the cap, and you don’t risk a cross-provider bounce.
Why won’t my video attachment send? Usually because the recipient’s provider has a stricter cap than yours, or the file is over both caps. Less commonly: antivirus timeout, corporate gateway policy.
Does Video Forge handle the base64 overhead automatically? Yes — the Email destination targets an 18 MB binary file size, which leaves margin for base64 + mail headers and clears every major provider’s inline cap.
Video Forge computes the right bitrate for the email-attachment cap, picks H.264 for universal client compatibility, and handles the base64 overhead margin automatically. 10 conversions are free on macOS and Windows; ffmpeg is bundled. See also the WhatsApp guide, the Discord guide, or the iMessage guide.