HTML to text
Parse HTML safely and return readable text while preserving headings, paragraphs, list rows, and links where requested.
How to use html to text
Paste markup, get the readable copy: scripts and styles discarded, headings and list rows kept on their own lines, and link URLs appended in parentheses when you ask for them.
- 1Paste the HTML source
A fragment or a whole page — view-source output, an email template, CMS markup. The parser is the browser’s own, so it copes with real-world HTML: unclosed tags, attributes, entities, and all.
- 2Choose whether links keep their URLs
Include link URLs, off by default, appends each link’s address in parentheses after its text — "Read the docs (https://…)". Leave it off for clean prose; turn it on when the destinations are the point, as when auditing an email’s links.
- 3Clean and check the structure
Select Clean text. Headings, paragraphs, list items, and table rows each sit on their own line with at most one blank line between blocks. What was script, style, or hidden markup is simply absent.
When this tool is useful
A real parser, not a regular expression
The markup goes through the browser’s own HTML parser — the same engine that renders pages — so malformed HTML that would defeat a regular expression is handled the way a browser would handle it. Script, style, and noscript elements are removed wholesale, contents included, which is what keeps JavaScript and CSS rules out of your text.
Structure is preserved by line: every paragraph, heading, div, list item, table row, and line break contributes a newline, and runs of three or more newlines then collapse to one blank line. The result keeps an article’s shape — title, paragraphs, list rows — without a trace of its markup.
Nothing is fetched and nothing executes: the document is parsed inertly in memory, scripts are stripped before text extraction, and no images or tracking pixels are requested. That makes it a reasonable way to read what a suspicious email actually says — and, with link URLs on, where its links actually point — without rendering it.
HTML to text questions
Same family, different centre of gravity. Remove formatting is tuned for pasted rich text with residue; HTML to text is for actual markup — it drops script and style blocks entirely and can append every link’s URL. For raw source, use this one.
Turn on Include link URLs and every link keeps its address in parentheses after its text. If those URLs are full of tracking parameters, CleanLink picks up exactly where this tool leaves off.
The markup is parsed, not rendered: scripts are removed before extraction, nothing executes, and no images or tracking pixels are fetched. You get the text a reader would see, plus the link destinations if you ask for them.
Line structure follows the markup’s block elements, not the rendered layout. Text that wrapped visually inside one paragraph comes out as one line, and each block element starts a new one.
Each table row becomes one line of text. Cell boundaries inside a row are not marked, so cells run together unless the source had whitespace between them. For Markdown tables from an AI answer, the AI formatting cleaner handles rows better.