HTML Entity Decoder
Paste text containing HTML entities such as &, é, € or 😀 and get the characters they stand for. Decoding follows the HTML5 rules your browser uses, so the complete list of named entities is supported, along with decimal and hexadecimal numeric references. The tool counts what it decoded and points out references that were malformed or unknown.
Decode HTML Entities to Text
Decoded text
Summary
Notes
How to Use the HTML Entity Decoder
- Paste the entity-encoded text into the box; it is decoded as you type and when you press Decode.
- Read the decoded text in the output box and copy it.
- Check the summary for the number of entities decoded and the notes for anything unusual.
- If the result still contains & sequences, the text was double-encoded; paste the result back in and decode again.
About This Tool
Developers cleaning scraped or exported data, editors fixing text that was double-escaped by a CMS, and anyone who needs to read an HTML source snippet or email body that is full of entities.
Input: Text containing HTML entities · Output: Plain text.
Features and Limitations
Features
- Full HTML5 list of named character references (over 2,000), via the browser's own parser.
- Decimal (©) and hexadecimal (©) references, including characters beyond the basic plane such as emoji.
- Follows browser rules for legacy references without a semicolon and for invalid code points (replacement character).
- Counts decoded entities and lists unknown or malformed references.
- The decoded text is displayed as plain text; markup in it is never rendered or run.
Limitations
- Only character references are decoded. Tags are left as text and nothing is rendered as HTML.
- Unknown names such as &bogus; are left unchanged and reported. A few legacy names (¬, ©, & and others) are decoded by browsers even when more letters follow, so ¬it; becomes ¬it; and is flagged as partly decoded.
- Some legacy names (for example © without a semicolon) are decoded by browsers; the tool follows that behaviour and reports it, but you should always write the semicolon.
- It decodes one level. Double-encoded text such as é needs to be run twice.
- Results are computed in your browser; nothing you enter is sent to a server.
Example
<p>Café —
“naïve” €5 &
more</p>
decodes to
<p>Café — “naïve” €5 & more</p>,
with 11 entities decoded.
Frequently Asked Questions
What is an HTML entity?
A way to write a character using only ASCII, starting with & and ending with ;. It can be a name (é), a decimal number (é) or a hexadecimal number (é).
Is it safe to decode untrusted text here?
Yes. The text is decoded in a detached element that never parses markup, and the result is shown in a read-only text box, so scripts in the input are not executed or rendered.
Why is some text left unchanged?
If a reference name is not in the HTML5 list, or a number is not a valid code point, a browser would not decode it as expected either. The Notes section lists such references.
Why did &lt; decode to < and not <?
The text is double-encoded: one decoding pass turns &lt; into < and a second pass is needed. Decode the result once more to get the final character.
Can I decode a whole HTML page?
You can paste it, but only the entities are converted; tags stay as text. To view or edit a page, use the HTML formatter instead.
Related Tools
More like this: all Encoding & Security tools, all Developer & Web tools or the TinySandy home page.