What this tool does
Every &…; reference becomes the character it names.
- Numeric, decimal —
égivesé. - Numeric, hexadecimal —
éandéboth giveé. - Named —
&, ,—,éand around sixty other common names.
An astral character arrives as one reference and leaves as one character: 😀 and 😀 both give the emoji.
An unknown name stays visible
♥ comes out as ♥.
HTML5 defines more than two thousand names. This tool carries the ones you actually meet, and leaves the rest untouched — because the alternatives are worse. Deleting an unrecognised reference loses data silently. Guessing at it invents a character that was never there. Leaving it visible tells you exactly what was not handled, and its numeric form always works.
Decoding runs once
&lt; gives <, not <.
That is the right answer, not a limitation. &lt; is what an encoder produces when the source text was the literal four characters <, so a single pass returns exactly that source text. Running the decoder again would turn escaped markup into live markup — the exact failure escaping exists to prevent.
The semicolon is required
& x is left alone. Browsers do decode some references without their terminator, for compatibility with documents written in the nineties, but which ones depends on the parser and the context. Requiring the semicolon means the result does not depend on whose parser you ask.
References that name no character
Three cases are returned as written rather than decoded:
�— a NUL has no legal representation in HTML, and producing one truncates a C string, breaks a SQL insert and corrupts whatever reads the result;�through�— surrogate halves are not characters, only an encoding artefact;- anything above
— beyond the top of Unicode.
You see the reference you typed, which is the honest signal that it did not name anything.
Private by design
Everything runs locally in your browser with JavaScript. Your data is never uploaded, which makes the tool safe for sensitive content, and it keeps working offline.