Gmail's 102 KB clip limit: what is known and how to stay under it
Gmail clips email HTML at about 102 KB, a figure Google has not published. What is documented, what testers saw, and how to stay under the line.
102 KB
On this page
Gmail cuts off an email and shows a "View entire message" link when its HTML passes about 102 KB. Google does not publish that number. Litmus, Mailchimp and Klaviyo all cite it, and developer tests found clipping near 100 KB. Only code counts, not images. Stay under 80 KB.
For scale, here is every template in our library as the editor exports it, split into what fills it. Inline style attributes are the largest part of each one.
- 52.6 KB, Office hours invite
- A day at the studio, 52.3 KB
- SOC 2 trust update, 45.9 KB
- Kickoff, 41.4 KB
- Trial ending, 39.7 KB
- Left in the basket, 38.6 KB
- Price change, 37.7 KB
- Six weeks of colour, 36.2 KB
- Maintenance, 36.0 KB
- Product launch, 35.5 KB
- Lamp launch, 33.9 KB
- Single product launch, 33.4 KB
- Five for Friday, 32.2 KB
- The Housewarming Set, 32.1 KB
- Year in review, 31.5 KB
- The Lunch Set, 31.2 KB
- Headphone launch, 30.0 KB
- Tomorrow, 29.9 KB
- Reading churn properly, 29.5 KB
- The Summer Reset, 28.1 KB
- Still want these?, 27.8 KB
- Membership, 27.7 KB
- Three steps to set up, 27.2 KB
- Invite-only beta, 27.0 KB
- New hire, 26.9 KB
- Autumn Return, 26.2 KB
- New name, 26.2 KB
- 24 Hours, 25.0 KB
- Two potters and a kiln, 24.8 KB
- Release notes, 24.8 KB
- August in four numbers, 24.7 KB
- You are in the room, 21.8 KB
- Come and eat with us, 21.3 KB
- The long afternoon, 21.2 KB
- The last hour, 20.4 KB
- Nothing in a hurry, 19.9 KB
- A letter from the studio, 19.2 KB
- It has been a while, 14.4 KB
- Account approach, 12.3 KB
- Pointing me at the right person, 11.4 KB
- Second email, 11.4 KB
- 11.2 KB, Cold introduction
Inline style attributesCode only Outlook readsStyle blocksText between tagsTags, other attributes and spacing
Every template in bytes
| Template | Bytes | Inline styles | Outlook only | Style blocks | Text | Everything else |
|---|---|---|---|---|---|---|
| Office hours invite | 53,884 | 24,097 | 5,931 | 3,195 | 2,897 | 17,764 |
| A day at the studio | 53,576 | 22,806 | 6,961 | 3,185 | 2,530 | 18,094 |
| SOC 2 trust update | 46,972 | 20,224 | 4,860 | 3,242 | 3,515 | 15,131 |
| Kickoff | 42,414 | 18,271 | 5,377 | 2,887 | 2,264 | 13,615 |
| Trial ending | 40,630 | 17,277 | 5,372 | 2,852 | 2,141 | 12,988 |
| Left in the basket | 39,553 | 16,112 | 4,860 | 3,139 | 2,397 | 13,045 |
| Price change | 38,575 | 15,848 | 4,324 | 2,948 | 2,555 | 12,900 |
| Six weeks of colour | 37,100 | 15,189 | 4,346 | 2,943 | 2,777 | 11,845 |
| Maintenance | 36,894 | 14,554 | 4,338 | 2,844 | 2,896 | 12,262 |
| Product launch | 36,318 | 14,727 | 4,497 | 3,035 | 1,947 | 12,112 |
| Lamp launch | 34,708 | 13,361 | 4,330 | 3,041 | 2,329 | 11,647 |
| Single product launch | 34,167 | 13,300 | 3,802 | 3,049 | 2,328 | 11,688 |
| Five for Friday | 32,979 | 14,196 | 2,775 | 3,145 | 2,896 | 9,967 |
| The Housewarming Set | 32,879 | 13,552 | 3,472 | 3,147 | 2,313 | 10,395 |
| Year in review | 32,290 | 13,394 | 3,812 | 2,852 | 2,194 | 10,038 |
| The Lunch Set | 31,985 | 13,521 | 3,286 | 3,139 | 2,400 | 9,639 |
| Headphone launch | 30,757 | 13,469 | 2,934 | 2,890 | 2,168 | 9,296 |
| Tomorrow | 30,588 | 11,881 | 3,311 | 3,035 | 1,874 | 10,487 |
| Reading churn properly | 30,247 | 12,073 | 2,749 | 3,046 | 2,175 | 10,204 |
| The Summer Reset | 28,729 | 11,654 | 2,736 | 3,136 | 2,069 | 9,134 |
| Still want these? | 28,419 | 11,511 | 2,794 | 3,237 | 2,299 | 8,578 |
| Membership | 28,361 | 11,699 | 3,272 | 2,887 | 2,120 | 8,383 |
| Three steps to set up | 27,858 | 10,692 | 2,230 | 3,046 | 2,471 | 9,419 |
| Invite-only beta | 27,686 | 10,840 | 2,765 | 3,047 | 2,320 | 8,714 |
| New hire | 27,551 | 10,442 | 2,766 | 3,091 | 2,243 | 9,009 |
| Autumn Return | 26,865 | 10,610 | 2,758 | 3,185 | 2,345 | 7,967 |
| New name | 26,835 | 10,136 | 3,270 | 2,844 | 2,283 | 8,302 |
| 24 Hours | 25,596 | 10,138 | 2,747 | 2,852 | 2,226 | 7,633 |
| Two potters and a kiln | 25,434 | 9,738 | 1,698 | 3,139 | 2,363 | 8,496 |
| Release notes | 25,379 | 10,634 | 1,875 | 2,852 | 2,610 | 7,408 |
| August in four numbers | 25,301 | 10,445 | 1,704 | 3,144 | 2,477 | 7,531 |
| You are in the room | 22,289 | 8,764 | 1,185 | 3,038 | 2,416 | 6,886 |
| Come and eat with us | 21,799 | 7,659 | 1,181 | 3,147 | 2,341 | 7,471 |
| The long afternoon | 21,728 | 8,137 | 1,216 | 3,147 | 2,964 | 6,264 |
| The last hour | 20,925 | 7,173 | 1,182 | 3,139 | 3,162 | 6,269 |
| Nothing in a hurry | 20,380 | 7,270 | 1,175 | 2,951 | 2,335 | 6,649 |
| A letter from the studio | 19,689 | 7,645 | 647 | 3,139 | 2,714 | 5,544 |
| It has been a while | 14,754 | 4,884 | 1,169 | 2,844 | 1,845 | 4,012 |
| Account approach | 12,587 | 4,187 | 155 | 2,870 | 2,141 | 3,234 |
| Pointing me at the right person | 11,717 | 3,875 | 155 | 2,870 | 1,652 | 3,165 |
| Second email | 11,696 | 3,875 | 155 | 2,870 | 1,613 | 3,183 |
| Cold introduction | 11,433 | 3,563 | 155 | 2,870 | 1,721 | 3,124 |
What Google documents and what testers observed
Google has not published a threshold (Suped), and its Gmail CSS documentation does not mention clipping. 102 KB is an observed line.
| Source | Reports | Date |
|---|---|---|
| Litmus | Over 102 KB, code only | 2024, flagged as possibly out of date |
| Klaviyo | 102 KB on desktop. Under 85 KB no risk, over 95 KB likely clipped | Updated 2026 |
| Email on Acid | About 102 KB, stay under 80 KB | 2021 |
| email-bugs | Clipped at 99,507 to 100,217 bytes in three tests | 2018 |
Testers on the email-bugs thread also saw mail clipped well below the line, and some far above it that was not. Leave margin: treat 100,000 bytes as a ceiling and aim for 80 KB, since tools disagree on whether a kilobyte is 1,000 or 1,024 bytes.
What counts toward the limit
- Source code, not images. Klaviyo counts text, styling, links and other markup. Image files do not count; the code that displays them does.
- The HTML Gmail receives. Your platform's wrappers and rewritten tracking links add to your draft, and personalization scripting can leave blank lines behind.
- Special characters. Email on Acid reports that non-ASCII characters can trigger clipping when a platform does not encode in UTF-8. A tester saw an unencoded copyright sign do it in 2019, and a 2026 retest found it no longer did. Declare UTF-8 and write symbols as entities anyway.
What clipping hides
Everything after the cut waits behind the link: the footer, the unsubscribe link and any call to action near the end. Mailchimp says its open tracking is clipped too. Google requires bulk marketing mail to carry a clearly visible unsubscribe link in the body, and Email on Acid warns that people who cannot find one are more likely to press the spam button.
How to cut the size
- Host every image and drop inline SVG. Gmail supports neither base64 images nor embedded SVG, and base64 makes data about a third larger.
- Repeat less inline CSS. A 120-character style on 200 cells is 24,000 characters. Repeated rules can move into a head style block, but Gmail caps that tag at 16 KB on desktop, and in one test the tag that crossed the limit was dropped whole. Keep layout-critical styles inline.
- Strip what is dead. Comments, old client fixes, needless nested tables and markup your platform adds.
- Minify with care. Use a minifier that keeps the MSO conditional comments Outlook needs, then diff and render-test the output. In html-minifier-terser, whitespace collapsing is off until you turn it on.
import { minify } from "html-minifier-terser";
const smaller = await minify(html, {
collapseWhitespace: true,
conservativeCollapse: true, // keep one space so inline elements do not fuse
});How to measure it
Measure the HTML your platform sends. Paste it into the email size checker, which counts the bytes, warns at 80 KB and flags 102 KB, and send a test to a Gmail address to look for the clipped notice. For templates built to stay light, see email design and the template library.
Sources
- mailchimp.com"View entire message" link
- litmus.comOver 102 KB, code only. 2024, flagged as possibly out of date
- help.klaviyo.com102 KB on desktop. Under 85 KB no risk, over 95 KB likely clipped. Updated 2026
- github.comClipped at 99,507 to 100,217 bytes in three tests. 2018
- suped.comGoogle has not published a threshold , and its
- developers.google.comGoogle has not published a threshold (Suped), and its Gmail CSS documentation does not mention clipping
- emailonacid.comAbout 102 KB, stay under 80 KB. 2021
- en.wikipedia.orgkilobyte is 1,000 or 1,024 bytes
- emailonacid.compersonalization scripting can leave blank lines behind
- support.google.comclearly visible unsubscribe link in the body
- caniemail.comGmail supports neither base64 images nor embedded SVG, and base64 makes data about a third larger
- caniemail.comGmail supports neither base64 images nor embedded SVG, and base64 makes data about a third larger
- developer.mozilla.orgabout a third larger
- caniemail.comcaps that tag at 16 KB
- github.comRepeated rules can move into a head style block, but Gmail caps that tag at 16 KB on desktop, and in one test the tag that crossed the limit was dropped whole
- github.comIn html-minifier-terser, whitespace collapsing is off until you turn it on