Skip to main content

HTML Entity Decoder

Free HTML entity decoder — decode HTML entities online and turn them back into readable characters. Paste entity-encoded markup and this HTML entity to text converter unescapes named entities (©), decimal numeric character references (©), and hex entities (©) — even mixed together. You get a per-entity map with exact Unicode code points, honest invalid-entity errors (unknown names, bad code points, missing semicolons), and a searchable HTML entity reference table of all 2,231 HTML5 entities.

One-way tool: this page decodes only — entities → characters. To go the other direction (characters → entities), use the HTML Entity Encoder. Want both directions in one place? Try HTML Entities.

Decode HTML entities

Entities 0 Valid 0 Invalid 0 Passes 0

Per-entity mapping

Every entity found in your input, in order — what it decoded to, its type, and its exact code point. Invalid entities are flagged with the reason.

#Entity→CharacterTypeCode pointPassStatus
Decode something above to see the mapping.

Worked examples

Click any example to load it into the decoder. All outputs verified against the decode engine.

<div>
<div>
Basic named entities: tags
&amp;lt;
<
Double-encoded → fully resolved
Tom &amp; Jerry
Tom & Jerry
Ampersand in plain text
&#72;&#101;&#108;&#108;&#111;
Hello
Decimal numeric references
&#x48;&#x65;&#x6C;&#x6C;&#x6F;
Hello
Hexadecimal references
&copy; 2026 &mdash; All rights reserved
© 2026 — All rights reserved
Symbols & dashes
Price: &euro;49 &amp; &pound;39
Price: €49 & £39
Currency + mixed forms
&frac12; + &frac14; = &frac34;
½ + ¼ = ¾
Fractions
&#128512;
😀
Astral-plane emoji (U+1F600)
&alpha; + &beta; = &gamma;
α + β = γ
Greek letters

Searchable HTML entity reference

All 2,231 WHATWG HTML5 named entities. Type to filter by name; click Copy to grab the entity text.

EntityCharacterCode point

How the decoder works

  1. Scan. The input is scanned left to right for &. Hex references (&#x41;), decimal references (&#65;), and named entities (&amp;) are recognized; the longest valid name wins, so &notit; is never misread as &not + it;.
  2. Validate. Each candidate is checked honestly: unknown names, empty digit runs, &#0;, UTF-16 surrogates, code points above U+10FFFF, and numeric references missing their ; are reported as errors with the exact position — never silently dropped.
  3. Resolve. Valid entities become characters via the full 2,231-entry WHATWG table. Legacy entities without a semicolon (&amp &lt &gt &quot) decode too, unless followed by a letter, digit, or = (the spec's ambiguous-ampersand rule). C0/C1 control references like &#128; map to their HTML5 replacement characters (€).
  4. Repeat to fixpoint. Decoding repeats until the text stops changing (max 8 passes), so double-encoded input like &amp;lt; fully resolves to <. The per-entity map shows which pass decoded what.
  5. Private. Everything runs in your browser — zero network requests, zero uploads.

Frequently asked questions

What is the difference between named and numeric HTML entities?
A named entity like © uses a memorable word defined by the HTML standard; a numeric character reference addresses the character directly by its Unicode code point — decimal (©) or hexadecimal (©). All three decode to the same character (©). Named entities are easier to read, but numeric references can represent any Unicode code point, including characters with no named form (such as emoji). This decoder handles all three forms, even mixed together in one string.
Is   the same as a normal space?
  decodes to U+00A0 NO-BREAK SPACE, not the regular U+0020 space — they look identical but are different characters. That is why a string containing   never equals the same string with a plain space, why trim() will not remove it, and why it prevents line breaks in HTML layout. The per-entity map above shows the exact code point of every decoded entity so invisible differences like this never surprise you.
What does double-encoded HTML like &lt; mean?
Double encoding happens when text is escaped twice: the character < becomes <, then its ampersand is escaped again into &lt;. A single decode pass only gets you back to <. This tool decodes repeatedly until the text stops changing (up to 8 passes), so &lt; fully resolves to <. Most online decoders stop after one pass and leave you with <.
What is the difference between this decoder and the HTML Entity Encoder?
Direction. This page is decode-only: it turns HTML entities into characters (< becomes <). To go the other way — characters into entities (< becomes <) — use the HTML Entity Encoder. For both directions in one two-way workspace, use HTML Entities. Keeping each direction on its own page keeps the interface focused and the search intent exact.
Why did my entity not decode? What counts as invalid?
This decoder reports invalid entities honestly instead of silently skipping them: unknown names (&bogus;), empty references (&#; and &#x;), null (&#0;), UTF-16 surrogates (&#xD800;), code points above U+10FFFF, and numeric references missing their trailing semicolon (&#65). A bare & followed by a space or end of text is left alone — that is valid text, not an entity. Legacy entities without a semicolon (&amp &lt &gt ") still decode, unless followed by a letter, digit, or =.
Does this decode every HTML5 named entity?
Yes — all 2,231 named character references from the WHATWG HTML standard, including the 106 legacy forms without a trailing semicolon (&AMP;, &COPY;, and friends). If an &name; is not in that list, it is reported as an unknown entity with its exact position, so you can fix the typo instead of guessing.
How do I decode HTML entities in JavaScript or PHP — and is my input uploaded anywhere?
In JavaScript, the classic one-liner is: create a textarea element, assign your string to its innerHTML, then read back its value. In PHP, use html_entity_decode($s, ENT_QUOTES | ENT_HTML5, 'UTF-8'). Nothing you paste on this page leaves your device: it runs 100% client-side JavaScript with zero network requests, so decoding even sensitive markup is private by construction.

Free tool by NRTechStudio