HTML Decoder
Decode HTML entities back to readable text — named entities and numeric references.
Runs in your browser — your data never leaves your deviceFree, no sign-up
Decoded text
The decoded text will appear here.
How it works
HTML allows special characters to be written as entities — either by name (&, é) or by numeric codepoint in decimal (—) or hex (—). Decoding replaces each entity with the character it stands for.
A single pass is used, so already-decoded text is never re-interpreted. The tool reports how many entities it found and left any unrecognized ones alone.
Features
- Named entities: XML predefined, Latin-1, common typography
- Decimal and hexadecimal numeric references
- Astral-plane codepoints (emoji) via codepoint-aware decoding
- Unknown entities left untouched — no data loss
- 100% client-side — nothing leaves your browser
How to use
- Paste the HTML-encoded text.
- Press Decode.
- Copy the decoded text or download it as a file. The counter shows how many entities were decoded.
Example
Input: café & crème 🎉
Output: café & crème 🎉Frequently asked questions
- Which entities does this decoder support?
- The five XML/HTML predefined entities (& < > " '), the full Latin-1 set (nbsp, eacute, ndash, copy, reg and neighbours), common typographic and currency entities (mdash, lsquo, ldquo, hellip, euro, trade, bull, check), and every numeric form — decimal like é and hexadecimal like é.
- Does it support all 2,200+ named entities in the HTML5 standard?
- No. It covers the named entities that appear in practice — the Latin-1 block, typographic punctuation, currency symbols and other common characters. Rare named entities are left untouched rather than guessed. Any character can always be written as a numeric reference, which this tool fully supports.
- What happens to text that is not a valid entity?
- Nothing — it is left exactly as written. An ampersand followed by text that is not a recognized entity (for example &unknownname; or a bare &) stays in the output unchanged. Numeric references to invalid Unicode codepoints (above U+10FFFF or in the surrogate range) are also left untouched.
- Why do I see a space where was?
- The non-breaking space (U+00A0) is decoded to its real character, which looks like an ordinary space but is a different codepoint. If you copy the output into a document, the non-breaking behaviour is preserved — that's the correct result.
- Is my text sent to a server?
- No. Decoding happens entirely in your browser with JavaScript. Nothing you type is transmitted anywhere — you can verify this in your browser's network inspector.