HTML entity decoder
Decode HTML entities — named, decimal and hexadecimal — back to plain text in your browser.
Runs in your browser
The first is almost always right. The last inflates CJK text several times over and is only for old pipelines.
Nothing to convert yet.
Three ways to write the same character
,   and   are all the non-breaking space, written as a
name, as a decimal code point and as a hexadecimal one.   with a capital
X appears in older markup and is also valid.
The decoder accepts all of them, so you do not need to know which kind you have.
Double-encoded text
If the result still contains entities — most often < decoding to
< — the text was encoded twice. That usually means something escaped it on
the way into a database and again on the way out.
Decode again to see the real content. The fix is upstream: escape once, at the point of output.
What is deliberately left alone
A bare ampersand. R&D and Tom & Jerry are unchanged, because & not
followed by a valid entity is just an ampersand. A decoder that guessed here
would corrupt ordinary prose.
Unknown names. &nosuchthing; stays as written rather than disappearing.
The full HTML5 list runs to over two thousand names; this carries the ones in
common use, and anything outside it still decodes through its numeric form.
Lone surrogates and out-of-range code points. � is half of a
surrogate pair and not a character on its own; � is past the end of
Unicode. Both stay as text rather than becoming a replacement character, because
turning them into “ would lose what was actually there.
Non-breaking spaces are invisible
The most common surprise: decodes to a space that looks identical to
a normal one and behaves differently — it will not wrap, and it will not match a
search for a normal space.
If decoded text is behaving strangely in a comparison, this is usually why.
Nothing is uploaded
Decoded in this page.