Decode HTML entities to text

Turn &, © and ©-style HTML entities back into plain text in your browser — named, decimal and hex references all understood. Free, nothing uploaded.

Understands named entities (& ©), decimal (©) and hex (©) references. Unknown names pass through untouched.

Paste escaped HTML and read the text behind it: & back to &, é to é, and © and © both to ©. The common named entities (accents, punctuation, Greek, math and symbols), decimal references and hex references are all decoded — numeric references reach full Unicode, so 😀 comes back as 😀.

This is the fix for copy that arrived escaped from a CMS, API response or email: strings full of &lt;p&gt; that should be <p>, or &amp;amp; where a single ampersand belongs. Decode once for singly-escaped text, twice for double-escaped — each pass consumes one layer.

Malformed references and unknown names pass through untouched — a converter, not a guesser — so you can see exactly what was and wasn't valid input. Runs entirely in your browser tab.

Frequently asked questions

Why do I still see entities after decoding?
Either they're genuinely unknown names (typos like &npsp; pass through untouched by design) or the text was escaped twice — &amp;amp; decodes once to &amp;, and a second pass turns it into &. Decode again for double-escaped content.
Which entities are supported?
The classic HTML named set — around two hundred covering Latin-1 letters, punctuation, arrows, Greek letters, math and currency — plus every decimal and hex numeric reference across the Unicode range.
Is decoding safe?
The output is plain text in your browser — nothing is executed and nothing is uploaded. But don't render decoded HTML from untrusted sources without re-sanitizing: decoding intentionally re-creates characters like < that can form markup.