HTML Entity Decoder
Turn HTML character entities back into the characters they stand for — named, decimal, and hex references. Runs entirely in your browser, no server, no sign-up.
What this tool does
Paste text that contains HTML character entities and get back the real characters they stand for. It decodes:
- Named entities across the full HTML5 set —
&→&,©→ ©,—→ —,…→ …, → a non-breaking space,é→ é, and roughly 2,000 more. - Decimal numeric references —
©→ ©,€→ €. - Hexadecimal numeric references —
©or©→ ©.
Everything runs locally in your browser. Nothing is uploaded, it works offline once loaded, and there is no sign-up.
Worked example
Input
Fish & Chips — © 2026 ™
Output
Fish & Chips — © 2026 ™
The named &, the named —, the decimal ©, and the hex
™ are all resolved in one pass.
Unknown references
The Unknown references option decides what happens when a reference can't be decoded — an unrecognized name or a malformed numeric reference:
| Setting | Behavior |
|---|---|
| keep (default) | Leaves the text exactly as written, so ¬real; stays ¬real;. Best for real-world HTML where a stray & shouldn't break the whole string. |
| error | Stops and names the first reference it can't decode. Use it to validate that every entity in a snippet is legitimate. |
Details worth knowing
- Legacy Windows code points. Per the HTML standard, numeric references
128–159 are read as Windows-1252, not raw Unicode — so
—decodes to an em dash (—) and€to the euro sign (€), matching every browser. - Legacy entities without a semicolon. A small historical set decodes even
without the trailing
;(©→ ©). Modern names still need their;, so&mdashon its own is left untouched. - Invalid code points (null, surrogates, or anything above U+10FFFF) decode
to the Unicode replacement character
�(U+FFFD), again matching browsers. - A bare ampersand is safe.
Tom & Jerryis returned unchanged — only real references are touched.
Common entities
| Entity | Character | Entity | Character | |
|---|---|---|---|---|
& | & | — | — | |
< | < | – | – | |
> | > | … | … | |
" | " | © | © | |
' | ' | ® | ® | |
| (non-breaking space) | ™ | ™ | |
€ | € | £ | £ | |
“ / ” | " " | ‘ / ’ | ' ' |
FAQ
Is my text uploaded anywhere?
No. Decoding happens entirely in your browser with WebAssembly — your input never leaves your device, and the tool keeps working offline once the page has loaded.
What's the difference between named and numeric entities?
A named entity uses a keyword between & and ; (©), while a
numeric reference uses a code point — decimal (©) or hexadecimal
(© / ©). All three forms above decode to the same character, ©,
and this tool handles all of them.
Why did turn into an em dash instead of a control character?
Numeric references in the range 128–159 are interpreted as Windows-1252
bytes by the HTML standard, so — is an em dash (—) and € is the
euro sign (€). Every browser does the same remap, and this tool follows it.
What happens to an entity I mistyped, like ¬real;?
With Unknown references set to keep (the default) it's left exactly as written, so the rest of your text still decodes cleanly. Switch to error if you'd rather the tool stop and tell you which reference it couldn't resolve.
Is the decoded output safe to drop straight into a web page?
Treat it as untrusted. Decoding turns <script> back into
<script>, so decoded text can become active HTML if you inject it into a
page. Escape or sanitize it again before rendering it as markup.
How do I go the other way and encode characters into entities?
This tool only decodes. To turn characters like <, >, and & into entities,
use the companion string-escaper tool with its HTML escape mode.
Developer & Automation Access
Run it from the terminal
Same engine as this page, headless — via the gizza CLI:
gizza tool html-entity-decoder "Fish & Chips — © 2026 ™"New to the CLI? Get gizza →
Open it by URL
Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:
https://gizza.ai/tools/html-entity-decoder/?text=Fish%20%26amp%3B%20Chips%20%26mdash%3B%20%26%23169%3B%202026%20%26%23x2122%3B&unknown=keepMachine-readable descriptor: tool.json — title + parameters JSON Schema for agents.
