HTML to Text Converter

Convert HTML to plain text instantly with our free HTML to Text Converter. Remove HTML tags, clean formatting, and extract readable text for emails, coding, documentation, and content editing. Fast, secure, and easy-to-use online tool.

HTML to Text Converter
Source HTML
Drop an .html file here or click to choose one — it is read in your browser, never uploaded

Browsers cannot read another site’s pages directly, so this one request is made by our server on your behalf. Nothing else on this page leaves your browser.

How it should read
Text
0HTML chars
0Text chars
0%Removed
0Words
0Lines
Your HTML is parsed into an inert document, so nothing in it can load, run or phone home — and nothing is uploaded. The one exception is the Fetch a URL tab, which asks our server to retrieve that single address for you, because a browser is not allowed to read another site’s pages.

💡 Tip: there is no Convert button. Paste, drop a file or fetch a page and the text appears as you type — change an option and it re-converts instantly, so you can see what each one does.

🧭 User Guide

  1. Give it some HTML. Paste it, drop an .html file on the upload area, or enter a page address and let the server fetch it for you.
  2. Choose how it should read. Plain text keeps paragraphs, headings and lists apart. Markdown keeps the structure as markup. One line collapses everything, which is what you want for a meta description or a spreadsheet cell.
  3. Set the options. Link addresses, image alt text, list markers, table alignment and code blocks can each be kept or dropped.
  4. Wrap it if you need to. 72, 80 or 100 characters, with wrapped list items indented under their own text rather than under the bullet.
  5. Check the counts. Characters before and after, how much was removed, words and lines.
  6. Copy or download. Plain text saves as .txt, Markdown as .md, named after the file or site it came from.

📜 What happens to each element

Structure is read from the document, not guessed at from the characters, so headings stay headings and a list stays a list.

In the HTML In the text
<p>, <div>, <blockquote> blank line between
<h1> to <h6> UPPERCASE, on its own line
<br> one line break
<ul><li> • item
<ol><li> 1. item
a list inside a list indented two spaces
<table> columns aligned to width
<pre>, <code> spacing kept exactly
<hr> a rule line
<a href> text, or text (address)
<img alt> [alt text], if asked
<script>, <style>, <title> dropped entirely
comments dropped entirely
&amp;, &lt;, &nbsp; decoded once, never twice

🌐 The four things worth knowing

Entities are decoded once

Exactly once — which matters more than it sounds.

A page teaching HTML shows escaped markup as visible text. Decode it a second time and that visible example turns back into real markup, silently changing what the page said. Here the parser decodes, and nothing decodes again after it.

Nothing in your HTML can run

The markup is parsed into an inert document.

That means no script executes, no image or tracking pixel is requested, and no stylesheet is applied — not even briefly. Scripts and styles are then dropped before any text is taken, so none of their contents reach the output either.

Invisible characters are cleaned up

Non-breaking spaces become ordinary spaces; zero-width characters are removed.

Copied web content is full of them. They look like nothing in a browser but survive into a .txt file, where they break searches, diffs and spreadsheet imports for reasons that are very hard to see.

Markdown is a real output, not a label

Headings, emphasis, links, lists, quotes, rules and tables all carry across.

Useful when you are moving web content into a documentation site, a static blog or a notes app, and you want the structure to survive the trip rather than flattening to prose.

About the HTML to Text Converter

This tool takes a block of HTML — a whole page, a fragment, an email template — and returns the words, arranged so they still read the way the page did. Paste it, upload a file, or give it an address and let it fetch the page for you.

Why stripping tags is not enough

The obvious approach is to delete everything between angle brackets. It does not work.

Tags do not only decorate text, they separate it. Remove them naively and the last word of one paragraph runs into the first word of the next, headings weld themselves to the sentences beneath them, and every item in a list becomes one long word. The result is technically tag-free and completely unreadable.

What is needed is a parser that understands which elements end a line and which do not, and that is what runs here. A paragraph closes a block, a heading closes a block, a list item is its own line with a marker, a table row is a row, and a line break is one line break rather than a paragraph break.

Where the text is used

Mostly wherever formatting is not wanted, or not allowed.

Writers and editors pull clean copy out of formatted web content. Developers extract text for indexing, search, diffing or word counts. Marketers cut a page down to one line for a meta description. Anyone sending a plain-text email needs a version without markup, and anyone moving content into a documentation system wants Markdown rather than either extreme.

About the fetch-a-page option

One feature here is not done in your browser, and it is worth being clear about why.

A browser is not permitted to read another website’s pages — the same-origin policy exists precisely to stop that. So when you enter an address, our server makes that one request and hands the HTML back to you. The address is checked first: local and private addresses are refused, redirects are limited, and the response is capped. Everything else on this page — anything you paste or upload — never leaves your browser at all.

Related tools

Two that pair with this one.

To go the other way and turn plain text into markup, use the Text to HTML Converter. To count what you end up with, paste the result into the Word Counter, which also reports readability.

Frequently Asked Questions

How do I convert HTML to plain text?

Paste the HTML into the box and the text appears immediately.

There is nothing to click. Choose Plain text, Markdown or One line depending on what you need, then use Copy or Download.

Does it keep paragraphs and line breaks?

Yes, and this is the part most tag-strippers get wrong.

Paragraphs and headings are separated by a blank line, a single <br> gives a single line break, list items each get their own line with a bullet or a number, and nested lists are indented. Turn on wrapping and long paragraphs are folded at 72, 80 or 100 characters.

Can it produce Markdown instead?

Yes — choose Markdown from the Output menu.

Headings become hashes, bold and italic keep their emphasis, links become [text](address), lists become dashes or numbers, block quotes get their angle bracket, and tables come out as pipe tables. The download is named .md.

What happens to scripts, styles and comments?

They are removed, and they never run.

Your HTML is parsed into an inert document, so nothing in it executes or loads — no scripts, no images, no tracking pixels. Scripts, styles, comments and the page title are then dropped before the text is taken, so their contents never appear in the output.

Can it fetch a page for me?

Yes. Enter an address and our server retrieves that one page.

Browsers are not allowed to read other sites’ pages directly, so this single request is made server-side. Local and private addresses are refused, and anything you paste or upload is still handled entirely in your browser.

How big a file can I convert?

Up to 5 MB by upload, and pasting is limited only by your browser.

A fetched page is capped at 2 MB of HTML, which is far larger than almost any real page.

Is the HTML to text converter free and private?

Free, with no sign-up and no limit on how many conversions you run.

HTML you paste or upload is processed entirely in your browser and is never sent anywhere. The only exception is the fetch-a-page option, which by its nature asks our server to retrieve the address you typed.