HTML Email to Text
Paste an HTML email and get a clean plain-text version — tags removed, paragraphs and lists kept, links your way, optional 72-column wrap. Runs entirely in your browser.
About this tool
Marketing and transactional emails are usually sent as HTML, but you often need the
plain-text version — the text/plain alternative part that non-HTML clients show, the
copy you paste into a ticket, or a clean read of a newsletter without the layout. This tool
takes an HTML email body (the whole <html> document or just a <body> fragment) and
returns readable plain text: tags removed, HTML entities like & and decoded,
and paragraphs, headings, and list items kept on their own lines.
The email-specific part is how it treats links and line width:
- Links — Inline (default):
<a href="https://example.com">click here</a>becomesclick here (https://example.com), so the destination survives in plain text. - Links — Footnotes: each link is numbered inline (
click here[1]) and the URLs are collected into a[1] https://example.comreference block at the bottom — tidy for link-heavy newsletters. - Links — Text only: keeps just the visible link text and drops the URL.
- Wrap width: set a column count (72 is the classic plain-text-email width) to hard-wrap
long paragraphs on word boundaries. URLs and other long tokens are never split. Leave it at
0for unwrapped output.
mailto: and tel: links are shown without the scheme (email us ([email protected])), and
in-page #anchors, javascript:, and data: links are dropped as noise.
Worked example
Input (links = Footnotes):
<p>See the <a href="https://example.com/docs">docs</a> and
<a href="https://example.com/pricing">pricing</a>.</p>
Output:
See the docs[1] and pricing[2].
[1] https://example.com/docs
[2] https://example.com/pricing
Everything runs locally in your browser via WebAssembly — the email content is never uploaded, so it is safe to paste sensitive messages.
FAQ
What's the difference between this and a plain "HTML to text" stripper?
A bare stripper just removes tags and usually discards link URLs. This tool is aimed at
emails: it keeps hyperlink destinations (inline or as numbered footnotes), can hard-wrap to
the classic 72-column plain-text-email width, strips mailto:/tel: schemes, and drops
in-page/javascript: links that add no value in plain text.
Should I paste the full HTML email or just the body?
Either works. You can paste the entire <html>…</html> source (for example the "view
source" of a message) or just the inner <body> fragment. Surrounding <head>, <style>,
and <script> content is ignored and does not appear in the output.
How are links rendered?
Choose one of three modes. Inline (the default) writes the link text followed by the URL
in parentheses. Footnotes numbers each link (text[1]) and lists the URLs at the bottom.
Text only keeps the visible text and drops the URL. When the visible text already is the
URL or email address, it is not duplicated.
Why would I wrap at 72 columns?
Plain-text email convention wraps body lines at around 72 columns so the message reads well in terminals and quotes cleanly in replies. Set the wrap slider to 72 (or 78) to get that; set it to 0 to leave lines unwrapped for on-screen reading. Long words such as URLs are never broken, even if they exceed the wrap width.
Are images, tables, and buttons preserved?
Images are dropped (plain text has no images), and their alt text is not currently emitted.
Tables and button-styled links are flattened to their text content — a button that links
somewhere is treated like any other link. If you need the visual layout, keep the HTML
version; this tool produces a text reading of the content.
Limits & notes
- Output is plain text only — no Markdown markers (
#,**,-) are added. - Image
alttext and CID/attachment images are not included. - The wrap width accepts 0–200 columns; 0 disables wrapping.
- Runs fully in-browser; nothing is uploaded.
Developer & Automation Access
Run it from the terminal
Same engine as this page, headless — via the gizza CLI:
gizza tool html-email-to-text "<h1>Weekly update</h1><p>Read the <a href="https://example.com/post">latest post</a>.</p>"New to the CLI? Get gizza →
Open it by URL
Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:
https://gizza.ai/tools/html-email-to-text/?html=%3Ch1%3EWeekly%20update%3C%2Fh1%3E%3Cp%3ERead%20the%20%3Ca%20href%3D%22https%3A%2F%2Fexample.com%2Fpost%22%3Elatest%20post%3C%2Fa%3E.%3C%2Fp%3E&links=inline&wrap=72Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.
