2026 Current
Gmail enforces the 102KB clipping limit at exactly 102,005 bytes. The exact threshold has been tested and confirmed by ESP vendors and email testing tools.
What is Gmail Clipping
Gmail clips (truncates) email HTML that exceeds 102,005 bytes. When an email is clipped, Gmail shows a "View entire message" link at the bottom, and subscribers must click it to see the full email in Gmail's web interface. Everything beyond the 102KB threshold is hidden by default.
How Clipping Appears to Subscribers:
Subject: Your Weekly Sales Report
...email content...
[View entire message]
In most cases, subscribers don't click "View entire message." They assume the email ended normally. This is particularly problematic when critical content β like an unsubscribe link β is clipped.
Why Gmail Clips: Gmail enforces the size limit to protect against attacks that exploit large email payloads. The limit has been consistent since ~2016.
The 102,005 Byte Threshold
The clipping threshold is exactly 102,005 bytes. This is critical to understand: this byte count is measured after gzip compression (as transmitted over the wire), not the uncompressed file size on disk.
Gzipped vs. Uncompressed Size:
- Uncompressed HTML on disk: 150KB (readable HTML file)
- Gzipped (transmitted): 45KB (compressed for transmission)
- Gmail measures the gzipped size; if it's over 102KB, clipping triggers
- Your HTML editor shows uncompressed size; you must test in Gmail to measure gzipped size
How to Calculate Safe Margin: Aim for 80KB gzipped maximum to have 22KB safety margin. This accounts for dynamic content (names, numbers) that might be inserted by ESPs.
Why Unsubscribe Footer Disappears
Gmail clips from the bottom up. Your unsubscribe footer β the last HTML element in your email β is the first to disappear when size exceeds the threshold. This creates a critical deliverability problem.
The Problem Sequence:
- Email exceeds 102KB gzipped
- Gmail clips content from the bottom
- Unsubscribe link (at footer) is removed
- Subscriber can't unsubscribe easily
- Frustrated subscriber marks email as spam instead
- Your spam complaint rate spikes
- ISPs see high complaint rate, lower your sender reputation
- Future emails land in spam folder or are rejected
Typical Content Order (Bottom to Top Clipping):
- Footer (unsubscribe, address, social links) β FIRST to clip
- Call-to-action buttons
- Body content (secondary sections)
- Body content (main content) β LAST to clip
- Header (subject, preheader, logo) β rarely clipped
Deliverability Impact: Complaint Spikes
A clipped unsubscribe footer causes immediate, measurable harm to deliverability.
Complaint Rate Impact (Real Data):
- Normal campaign: 0.05% complaint rate (good)
- Campaign with clipped footer: 0.3-0.8% complaint rate (critical)
- ISP threshold for investigation: 0.1% complaints (one per 1,000 opens)
- Gmail/Yahoo automatic filtering kicks in at 0.3%+ sustained complaints
Why This Matters: ISPs use complaint rates as a primary spam filter signal. When complaint rates spike:
- Gmail may auto-filter your future sends to spam folder
- Yahoo may add your domain to a temporary blocklist
- Outlook may flag your sender reputation as declining
- Other ISPs follow suite, creating a cascading reputation problem
RFC 8058 Compliance: RFC 8058 (one-click unsubscribe standard) requires that unsubscribe mechanisms be visible and functional. A clipped unsubscribe footer violates this requirement and can trigger automated ISP warnings.
Real-World Scenario: A B2C retailer sends a 110KB email (gzipped) to 500,000 subscribers. Gmail clips it. 2,000 subscribers (0.4%) can't find the unsubscribe link and mark as spam instead. Complaint rate jumps from 0.06% to 0.46% β a 7x increase. Gmail flags the domain as problematic. Next week's campaign goes straight to spam for 40% of subscribers.
How to Measure Email Template Size
You must test in Gmail to measure the actual gzipped byte size. Uncompressed file size shown in your editor is misleading.
Method 1: Gmail Send Test (Most Accurate)
- Create email in your ESP with your template
- Send to your personal Gmail account
- Open email in Gmail web interface
- If you see "View entire message" link, it's clipped (over 102KB)
- No link? You're under the limit
Method 2: Online HTML Byte Counter (Quick Check)
1. Export template HTML from your editor
2. Paste into: https://www.online-convert.com/file-converter/convert-to-gzip
3. Upload HTML, it compresses and shows gzipped size
4. If under 102KB, you're safe
Method 3: CLI Compression Test (For Developers)
# Save template.html, compress it
gzip -c template.html | wc -c
# Output: 45678 bytes (gzipped size)
# If under 102005, you're safe
Method 4: ESP Native Tools
- Klaviyo: Email performance metrics show estimated delivered size
- Mailchimp: Minification report shows final size
- ActiveCampaign: Email preview includes size info
- HubSpot: Email size displayed before send
Biggest HTML Bloat Sources
Most templates bloat from a few specific sources. Targeting these saves the most bytes.
1. Inline CSS Repetition (Often 30-40% of size)
BAD: Repeating full style on every element
<table>
<tr><td style="font-family:Arial,sans-serif; font-size:16px; color:#222222; line-height:1.5; padding:10px;">Text 1</td></tr>
<tr><td style="font-family:Arial,sans-serif; font-size:16px; color:#222222; line-height:1.5; padding:10px;">Text 2</td></tr>
<tr><td style="font-family:Arial,sans-serif; font-size:16px; color:#222222; line-height:1.5; padding:10px;">Text 3</td></tr>
</table>
GOOD: Use table attributes + single style
<table>
<tr><td style="padding:10px;">Text 1</td></tr>
<tr><td style="padding:10px;">Text 2</td></tr>
<tr><td style="padding:10px;">Text 3</td></tr>
</table>
Savings: 140 bytes (5x reduction on style attributes)
2. Whitespace & Formatting (Often 15-20% of size)
BAD: Readable but bloated HTML
<table width="600" align="center">
<tr>
<td height="20"></td>
</tr>
<tr>
<td>
<p>Hello subscriber</p>
</td>
</tr>
</table>
GOOD: Remove unnecessary whitespace
<table width="600"><tr><td height="20"></td></tr><tr><td><p>Hello subscriber</p></td></tr></table>
Savings: 80-120 bytes per table (minification)
3. HTML Comments (Often 2-5% of size)
BAD: Comments add bytes
<!-- Logo section -->
<table>
<tr>
<!-- Logo image centered -->
<td><img src="logo.png"></td>
</tr>
</table>
<!-- End logo section -->
GOOD: Remove comments
<table><tr><td><img src="logo.png"></td></tr></table>
Savings: 100+ bytes (especially for complex templates)
4. Long Tracking URLs (Often 5-10% of size)
BAD: Full tracking URLs
<a href="https://example.com/campaign/spring-sale-2026/section-1/item-special-offer?utm_source=email&utm_medium=newsletter&utm_campaign=spring_sale_2026&utm_content=hero_button&subscriber_id=12345&tracking_id=abcdef123456">
GOOD: Shortened URL with server-side expansion
<a href="https://example.com/t/abc123">
Savings: 150-300 bytes per URL (multiple CTA buttons = big savings)
Size Reduction Strategies
Quick Wins (Can Save 20-30% of total size):
- Remove all HTML comments β 5-10% savings
- Delete extra whitespace/newlines β 10-15% savings
- Use URL shortener for tracking links β 5-8% savings
- Remove unused CSS rules β 2-5% savings
- Use CSS shorthand β margin: 10px 20px instead of margin-top, margin-bottom, margin-left, margin-right (saves ~40%)
Medium-Effort Strategies (Can Save 30-50%):
- Minify HTML/CSS β Use MJML or Stripo minifier (automatic)
- Consolidate inline styles β Create reusable style snippets
- Use table attributes instead of styles β width="600" instead of style="width:600px"
- Compress images β Use TinyPNG or similar for embedded images
- Remove unused elements β Delete spacer tables, extra divs
Advanced Strategies (Can Save 50%+):
- Use MJML templating β Auto-minifies, optimizes HTML
- Lazy-load images β Show placeholder, load on open (requires ESP support)
- Truncate long content β Move secondary content to web-view version
- Use AMP for Email β Dynamic, lightweight alternative to HTML (limited support)
ESP Auto-Minification Support
ESPs with Built-in Minification:
- Klaviyo β Automatic minification; check "Minify HTML" option in sending settings
- Mailchimp β Auto-minifies HTML before send
- ActiveCampaign β Minification available in advanced settings
- HubSpot β Auto-minification included in professional tier
- SendGrid/Twilio β No auto-minification; must minify before upload
- ConvertKit β Auto-minifies all emails
How to Enable Minification (Klaviyo Example):
- Create email in editor
- Go to "Settings" β "Email Settings"
- Toggle "Enable HTML minification" ON
- Send β Template is compressed automatically
- Verify Gmail doesn't show "View entire message" link
Size Reduction Checklist Before Send:
- β Ran minifier tool (MJML, Stripo, or ESP native)
- β Removed all HTML comments
- β Tested gzipped size in Gmail (under 102KB)
- β Verified unsubscribe footer is visible in Gmail preview
- β Tested in 2+ email clients (Gmail, Apple Mail, Outlook)
- β Confirmed no clipping artifacts or broken layout