Strip HTML tags, scripts and styles from pasted markup and return clean plain text, with an option to keep paragraph and line breaks where they belong. Runs entirely in your browser — your numbers never leave this device.
HTML
Plain text
Characters before
89
Characters after
57
How it works
Remove script and style blocks and HTML comments first → optionally convert <br> and block-level closing tags (</p>, </div>, </li>, headings) to line breaks and <li> to a bullet → remove all remaining <…> tags → decode common HTML entities → tidy whitespace
Paste markup copied from a web page, an email or a CMS export, and the tool returns the plain text a reader would see. The order of operations matters and is deliberate: script and style blocks are removed whole first, because their contents (code and CSS rules) are not page text and would otherwise leak into the output as gibberish once their tags were stripped. HTML comments go at the same stage. Only then are the remaining tags removed, which leaves the text nodes behind.
One honest limit: this is tag stripping, not rendering. Text that a page generates with JavaScript, hides in attributes, or builds from CSS will not appear, because it was never text in the markup. What you pasted is processed entirely in your browser and is never uploaded or stored — safe for unpublished pages and private exports.
Worked examples
Two paragraphs flattened to plain text
Input
<p>Hello <b>world</b></p> <p>Second line</p>, Keep line breaks = off
Working
Tags are removed, the paragraph texts join with the space that separated them, and whitespace collapses to single spaces.
Result
Hello world Second line
The same markup with structure kept
Input
<p>Hello <b>world</b></p><p>Second line</p>, Keep line breaks = on
Working
Each closing </p> becomes a line break, and decodes to a normal space before whitespace is tidied within each line.
Because it was not text in the markup you pasted. Content loaded by JavaScript after the page renders, text stored in attributes (alt text, titles, data attributes) and anything built by CSS do not exist as text nodes in the HTML. View-source markup gives the most complete input; for JavaScript-rendered content, copy the visible text from the rendered page instead.
Does it remove scripts and styles, or just their tags?
The whole blocks. Script and style elements are deleted with their contents before ordinary tags are stripped — otherwise a page's CSS rules and JavaScript would survive as meaningless text once the angle brackets around them were gone. HTML comments are removed at the same stage.
When should I keep line breaks?
When the output is for reading or further editing: paragraphs, headings and list items become separate lines and list items gain a bullet, so a copied article keeps its shape. Turn it off when the output is data — a single-line summary, an input to the Word Counter, or text destined for a spreadsheet cell — where breaks would only get in the way.
Is the result safe to republish as my own page text?
Technically it is clean text; legally and editorially it is still the source's words. Stripping markup changes the format, not the ownership. Use the output for analysis, migration of your own content, quoting with attribution, or feeding your own drafts into other tools.
Is the HTML I paste uploaded anywhere?
No. Stripping runs 100% in your browser; your markup is never sent to a server, stored or tracked.