Convert HTML to plain text online with Calzyra's free HTML to Text Converter. Extract readable text from HTML code and copy the result easily.
Extracted text will appear here
Paste HTML in the input panel and it converts automatically
Load sample data to get started
What this tool can do
Readable Line Structure
Headings, paragraphs and br breaks become clean line structure
Lists Stay Separate
Ordered, unordered and nested list items keep their own lines
Links & Image Alt Text
Visible link text and meaningful alt text are kept
Table Text in Order
Cells join with a pipe, one line per row, in reading order
Quotes & Preformatted Code
Blockquotes keep > marks; pre contents keep their spacing
Entities Decoded Once
&, © and friends become the characters they stand for
Script & Style Excluded
Embedded code, the head and comments are left out of the text
Copy & Download
Copy the extracted text or download it as a .txt file
Methodology and approach
The converter parses the HTML with an HTML-aware parser, then walks the tree and keeps only the text a person would read: headings, paragraphs and list items keep their line structure, table cells stay in reading order, entity references are decoded once, and the contents of script and style elements, the document head and comments are left out.
HTML is a markup format: meaning is carried by elements, and a browser turns that structure into the page you see. An HTML to Text Converter extracts the readable text from that markup and leaves the tags behind, so a snippet copied out of a web page, a CMS export or an email template becomes ordinary text you can edit, paste or store anywhere plain text is accepted.
The useful version of this job is more than deleting angle brackets. Stripping tags with a pattern merges every heading, paragraph and list item into one run of words, leaves entity references such as & undecoded, and keeps script source and comment text that were never meant to be read. This tool parses the markup with the same HTML-aware parser the HTML Formatter and HTML Validator use, then walks the document and keeps only the text a person would read - with paragraph breaks, list items, table rows and decoded characters intact.
Plain-text conversion does not preserve visual formatting: colors, fonts, spacing and layout are part of the rendering, not the text. What you get back is the content in reading order, ready for a plain-text workflow.
Paste the HTML into the input panel on the left. The document is extracted automatically as you type, and Ctrl+Enter forces a re-run at any time. The plain text appears in the output panel on the right, with a status line reporting how many elements the document held and how many lines of text were produced.
When the result looks right, Copy puts the extracted text on the clipboard and Clear empties both panels so the next document starts clean. If the markup cannot be read - a start tag with no closing bracket, an attribute quote that is never closed - the output panel clears and reports the parser error with its line and column instead of showing stale text, and your input is left exactly as it was so you can fix it in place. Everything runs in your browser; nothing is uploaded.
<h1>Welcome</h1>
<p>This is a <strong>sample</strong> HTML document with a <a href="https://example.com">link</a>.</p>
<ul>
<li>First item</li>
<li>Second item</li>
</ul>Welcome
This is a sample HTML document with a link.
- First item
- Second itemHeadings h1 through h6, paragraphs and br elements create the line structure of the output: each block of text stands apart, separated by a blank line. Ordered and unordered lists - nested ones included - keep every item on its own line, marked with the familiar 1. and - bullets so the items never merge into one sentence. Bold, italic and other inline elements contribute only their text: emphasis is a visual style, and plain text cannot carry it.
Links contribute their visible text; the URL is not appended, so the sentence reads the way it does on the page. Images contribute their alt text when the markup provides it, because alt text is content - an image with no alt text contributes nothing. Table cells are joined with a pipe, one line per row, so cell text stays in reading order. Blockquotes keep their paragraph, marked with > the way quotations are marked in plain text. Preformatted code is kept exactly as written, indentation included. Entity references such as &, < and © are decoded once, to the characters a browser would render.
Layout containers - div, section, article, main, header, footer and the rest - are unwrapped so the text inside them is still carried through. The contents of script and style elements, the document head, HTML comments and the doctype are not readable content and are left out of the output.
<h2>Order summary</h2>
<p>Tom & Jerry shipped — qty 2.</p>
<table>
<thead><tr><th>Item</th><th>Price</th></tr></thead>
<tbody>
<tr><td>Keyboard</td><td>49.99</td></tr>
<tr><td>Mouse</td><td>24.50</td></tr>
</tbody>
</table>
<pre><code>npm install calzyra</code></pre>
<blockquote><p>Ships in 2-3 days.</p></blockquote>Order summary
Tom & Jerry shipped — qty 2.
Item | Price
Keyboard | 49.99
Mouse | 24.50
npm install calzyra
> Ships in 2-3 days.The common case is cleaning up content that arrived as markup: an article copied out of a browser, a help-center export, an email template, a fragment of rendered HTML in a support ticket. Pasting that markup into a document editor drags the tags along with it; converting first leaves only the words. It is also the quickest way to pull the readable content out of a page for a text-only workflow - a plain-text file, a terminal paste, a comment field, a migration into a system that does not accept HTML.
The same extraction is useful for review and editing work: reading the content of a page without the distraction of its markup, checking what text a template actually emits, or preparing a passage for reuse somewhere the structure should be flat rather than nested.
The two tools start from the same document and diverge in what they keep. HTML to Markdown rewrites the structure it finds using Markdown syntax: headings become # prefixes, emphasis becomes **bold** and *italic*, links become [text](url), and lists, quotations, code fences and tables take their Markdown forms. HTML to text keeps none of that syntax - the output is ordinary characters only, with no markers of any kind.
Choose Markdown when the destination understands it and the structure is worth preserving: README files, documentation, notes and most modern editors. Choose plain text when the destination is a text field, a log, a comment or a document that should carry no markup of any kind. If you only need the tags removed and the references decoded without any structure, the HTML Entity Decoder covers the decoding half of the job.
Plain text cannot carry layout. Colors, fonts, spacing, grid and flex containers, custom classes and interactive elements such as buttons and forms have no text equivalent, so their wrappers are unwrapped and only the words inside them survive. Tables and lists are represented as readable lines rather than their original visual arrangement, and a table with merged cells loses the merges - there is no plain-text way to express them.
A start or end tag that is never finished is reported with its line and column instead of being partially converted, because there is no way to guess what the rest of that tag was meant to be; everything else recovers the way a browser recovers it, so elements left open at the end of a pasted snippet are closed and their text still extracted. Complex pages may need a pass of manual cleanup afterwards - that is the nature of moving from a rendering format to a reading format rather than a flaw in this tool.
Common questions about this tool