What are the size limits for emails?
Still have a question, spotted an error, or have a better explanation or a source we should cite?
Email size limits hit you in two places: total message size (attachments and all) and message body size (just the HTML and text).
Most mail servers cap total message size at 20-25 MB. That includes everything: your HTML, images, attachments. Here's the catch: attachments get Base64 encoded during transit, which inflates their size by about 33%. So a 20 MB PDF becomes 26.6 MB on the wire. That's over the limit, and the mail server bounces your message before it even leaves.
Why these limits? SMTP was designed in the 1980s when storage and bandwidth cost real money. Those constraints got baked into infrastructure, and they're still here. Servers enforce them to prevent resource abuse and keep mail flowing.
The message body limit is different. It's set by email clients, not servers. Gmail clips message bodies that exceed about 102 KB of HTML and text combined. Your email still delivers, but everything past 102 KB gets hidden behind a "[Message clipped]" link. Readers have to click to see the rest, which most won't.
So this hits newsletters with long content blocks, embedded CSS, or lots of inline images (data URIs). Each inline image encoded as a data URI adds to your body size. A few heavy images can push you over 102 KB fast.
What to do instead: host large files on Google Drive, Dropbox, or OneDrive, then link to them in your email. For newsletters, trim the body. Keep emails under 102 KB by hosting images externally instead of inlining them, and by keeping your HTML lean. If you're sending receipts or shipping notifications with PDFs attached, make sure the encoded size stays under your server's limit (usually 20 MB), or link to a download page instead.
Most ESPs (Mailchimp, SendGrid, Postmark) enforce these limits automatically, but they don't always tell you why an email bounced. If you're seeing "message too large" errors, check your attachment sizes AFTER encoding. And if Gmail's clipping your newsletters, view the raw HTML source and check the file size. If it's over 100 KB, it's time to trim.
Want to check your email's body size before sending? View the raw HTML in your ESP's preview, paste it into a text editor, and check the file size. Or send a test to yourself and check the source. If you're stuck debugging a "message too large" bounce, our SOS hotline is free.
Contributors
Who worked on this answer
Every name links to their profile. Every company links to their site. Real people, real accountability.