Strip HTML tags

Get the readable text out of HTML, with its paragraphs and lists intact.

Your inputs stay on your deviceFREE · NO SIGN-UP
Layout
Links

Paragraphs and headings keep a blank line between them, list items and table rows get one line each, and table cells are separated by tabs so a table can go straight into a spreadsheet. Link text is kept and the address is dropped. Script and style blocks are removed with their contents, image alt text is kept, and entities such as & become the characters they stand for —   becomes an ordinary space. Nothing in the input is ever executed or fetched.

Result

Start typing and the result appears here. No button needed.

THE LITTLE DETAILS

Strip HTML tags, without the extra steps.

Turn pasted HTML back into text you can read, keeping the structure that carries meaning: paragraphs stay apart, list items and table rows each get their own line, and table cells are separated by tabs so a table can go straight into a spreadsheet. Script and style blocks go with their contents, image alt text is kept, and entities become the characters they stand for. Nothing in the input is executed or fetched.

How to use this tool

  1. 1Paste the HTML — a copied page, a newsletter template, a CMS field.
  2. 2Keep the layout, or flatten everything to one line for a CSV cell.
  3. 3Decide whether links keep their addresses, then copy the text.

When Strip HTML tags is the right tool

  • A page you copied brings its markup along, and you want the article without the div soup.
  • A CMS field has filled up with tags from a paste, and the text has to go back in clean.
  • You need a word count or a reading time for content that only exists as HTML.
  • A newsletter template has to be reviewed as prose, not as a table of nested tables.
  • A description field is going into a CSV, so every line break has to collapse into one value.

Deleting the angle brackets is not the job

The usual approach removes anything between < and >, which leaves every paragraph welded to the next one and a list reading as a single run-on sentence. Structure is meaning: a paragraph break says one thought ended, a list item says these are separate things. Here block elements keep a blank line, list items and table rows take one line each, and table cells are separated by tabs so a copied table can go straight into a spreadsheet as columns.

Script and style are not text

A tag stripper that deletes only the tags leaves what was inside them, so body{margin:0} and a block of JavaScript end up sitting in the middle of the article. Script, style, noscript, template, svg, and head go with their contents. A page that was cut off mid-script is handled too, because a half-copied source is the normal case rather than the odd one, and without that the rest of the paste comes back as code.

Entities are decoded last, and that order matters

An article explaining HTML contains &lt;script&gt; as its subject matter — escaped on purpose so the reader can see it. Decoding entities before removing tags would turn that example into a real tag and delete the thing the page was about. So tags go first and entities are decoded afterwards, which means escaped markup survives as the text it was written as. Named and numeric forms are both handled, and &nbsp; becomes an ordinary space.

GOOD TO KNOW

A few quick answers.

Yes, that is the point. Paragraphs and headings keep a blank line between them, and list items and table rows each take one line. A tag stripper that only deletes angle brackets runs every paragraph together into one block, which is readable by nothing. Choose One long line when you want the opposite — a single value for a CSV cell.

They become the characters they stand for: &amp; and a space. Named and numeric entities are both decoded, including forms such as &#8212;. &nbsp; deliberately becomes an ordinary space rather than a no-break space, because invisible no-break spaces are usually the thing making pasted text behave strangely.

The input is treated as text and nothing in it is executed, fetched, or rendered — no scripts run, no images or tracking pixels load, and nothing leaves your browser. Script and style blocks are removed along with their contents rather than left behind as stray code in the middle of your text.

Yes. Choose Keep the URLs and each link keeps its text and gains its address in brackets after it. A link whose text is already the address is left alone rather than repeated twice, and a link that only jumps to another point on the same page is left as plain text, because that address is not somewhere the reader can go.

The alt text is kept, because it is the only description a picture leaves behind in text, and losing it usually loses a caption or a chart's summary. An image with no alt text simply disappears. The image itself is never loaded — the markup is read as text, so nothing is fetched from anywhere.

You are likely in the One long line layout, which collapses every break into a single space. That is for a CSV cell, a spreadsheet column, or anywhere a line break would split one value into several. Switch to Keep the layout for readable text with its paragraphs and lists intact.

Back to all tools