KKwikfig.

Strip HTML Tags

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
HTML entities decoded after stripping
EntityBecomesEntityBecomes
&amp;&&nbsp;(space)
&lt;<&copy;©
&gt;>&reg;®
&quot;"&hellip;…
&#39; / &apos;'&mdash; / &ndash;— / –

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.

With line breaks kept, the structure of the page survives in text form: <br> becomes a line break, the closing tags of paragraphs, divisions, list items, headings and other block elements become line breaks, and each list item opens with a bullet. Without that option, all whitespace collapses to single spaces and the output is one continuous block — the right form for feeding text into a word counter or a summary field. Either way, common HTML entities are decoded, so &amp; comes back as &, &copy; as © and a non-breaking space as a normal space; numeric entities such as &#169; are decoded from their code point as well.

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&nbsp;line</p>, Keep line breaks = on
Working
Each closing </p> becomes a line break, and &nbsp; decodes to a normal space before whitespace is tidied within each line.
Result
Hello world, then on the next line: Second line

Entities decoded, script content dropped

Input
Fish &amp; Chips &copy; 2026 — and separately: <script>var x = 1;</script>Visible
Working
&amp; decodes to & and &copy; to ©. In the second input, the script block is removed whole before tag stripping, so its code never reaches the output.
Result
Fish & Chips © 2026 · Visible

Frequently asked questions

Why is text from the page missing in the output?

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.

Which entities are decoded?

The common named ones — &amp;, &lt;, &gt;, &quot;, &apos;, &nbsp;, &copy;, &reg;, &hellip;, &mdash;, &ndash; — plus any decimal numeric entity (&#169; becomes ©) via its code point. An entity outside that set is left as written rather than guessed at, so nothing is silently altered.

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.

Related tools

More in Text Tools · Browse all tools