What is the difference between HTML body and text body?

Still have a question, spotted an error, or have a better explanation or a source we should cite?

Every marketing email you send actually contains two versions of the same message: an HTML body (the formatted version with colors, images, and layout) and a text body (the plain, unformatted fallback). Your recipient's email client picks which one to show.

The HTML body is what most people see. It supports everything you'd expect from a web page: fonts, colors, images, buttons, multiple columns, background colors. This is where you build your branded experience. Modern ESPs like Mailchimp, Klaviyo, and Brevo generate this automatically when you design a campaign.

The text body is the backup. Some email clients block images by default (Outlook does this for unknown senders). Some users prefer plain text for accessibility or speed. And some corporate security gateways strip HTML entirely. If your email doesn't have a text version, these readers see nothing, or worse, they see raw HTML code.

Both versions travel in the same email, wrapped in what's called a multipart/alternative structure. The receiving client looks at both and picks the one it prefers (usually HTML if available, text if not). You don't send two separate emails. You send one email containing both formats.

Here's what that structure looks like in simplified form:

Content-Type: multipart/alternative

--boundary
Content-Type: text/plain

This is the plain text version.

--boundary
Content-Type: text/html

<p>This is the <strong>HTML version</strong>.</p>

Why you need both: deliverability and accessibility. Spam filters sometimes flag emails that only have HTML (it's a very old spammer tactic). Plain text versions also help screen readers parse your message cleanly. And if you're sending transactional emails (password resets, receipts), a well-written text body ensures the message gets through even in locked-down corporate environments.

So most ESPs auto-generate a text version from your HTML, but the results are often terrible. You'll see things like "View this email in your browser [LINK]" at the top, or image alt text scattered randomly, or broken formatting where columns were. Always preview and edit your text version manually, especially for important campaigns.

What to include in your text body: the same core message as your HTML version, just without the design. Keep links (use full URLs so they're obviously clickable), keep your CTA ("Click here: https://..."), keep section headers. Skip the decorative elements. Think of it as writing for someone who opened your email in a terminal window.

If you're not sure what your text version looks like, send yourself a test and check it in Gmail (View > Show original > look for the text/plain section) or use our free Source Analyzer to see both versions side by side.

Contributors

Who worked on this answer

Every name links to their profile. Every company links to their site. Real people, real accountability.

Ask an AI · tailored to your setup

Check Your Text Body Setup

I read this on the Email Almanac about HTML vs plain text email bodies: "Every marketing email contains two versions: an HTML body (formatted, with images and layout) and a text body (plain fallback). The recipient's client picks which to show. Both travel in one email via multipart/alternative structure. Most ESPs auto-generate text versions, but they're often badly formatted and need manual cleanup." Help me apply this to MY setup. I need: 1. How to check what my current text version looks like 2. Whether my ESP auto-generates text or if I need to write it manually 3. What to include/exclude in my text body for my email type 4. How to test that both versions are working correctly --- My details (the more you share, the better the advice): - Email platform/ESP: e.g. Mailchimp, Klaviyo, Postmark, custom SMTP - Email type: [newsletter, transactional, promotional campaigns, lifecycle emails] - Current text body setup: [auto-generated / manually written / not sure / don't have one] - Main challenge: [e.g. "My text version looks terrible", "Not sure if I even have one", "Want to optimize for accessibility"] - Typical content: [heavy images / mostly text / lots of buttons / simple receipts]

Edit the yellow boxes, then send to the AI of your choice.