How the HTML Decoder works

The decoder looks for three kinds of character references and replaces each with the character it stands for:

  • Named entities such as &,  , ©, €, —, …, arrows like →, Greek letters like α and math symbols like ≤. All 252 entities of HTML 4 plus ' are supported. Names are case-sensitive and need their closing semicolon.
  • Decimal references such as ' and 😀.
  • Hexadecimal references such as ' and 😀.

Entities the tool does not know, such as &foo;, and ampersands that are not part of an entity are left unchanged. Numeric references to invalid code points (zero, surrogates or values above U+10FFFF) become the replacement character , and references in the range 128–159 map to the Windows-1252 characters browsers show for them, for example – becomes .

How to use the HTML Decoder

  1. Paste text that contains HTML entities into the input box, open a file, or select Load example.
  2. Select Decode HTML, or press Ctrl + Enter (Cmd + Enter on a Mac).
  3. Check the status message for the number of entities decoded and any unknown entities that were left unchanged.
  4. Copy the decoded text or download it as a .txt file.

Example

This input:

<p>Tom & Jerry's café – © 2026 😀 &unknown;</p>

is decoded as:

<p>Tom & Jerry's café – © 2026 😀 &unknown;</p>

The status line reports Decoded 10 entities. 1 unknown entity was left unchanged.

Common use cases

  • Reading text scraped from web pages or RSS feeds that is full of &amp;, &quot; and &#39;.
  • Cleaning product descriptions or CMS exports that were HTML-encoded twice.
  • Turning escaped code samples back into the original HTML or XML source.
  • Converting &nbsp; and typographic entities to real characters before importing text elsewhere.
  • Finding out which character an unfamiliar numeric reference such as &#8212; stands for.

Frequently asked questions

Which entities are supported?

All 252 named entities of HTML 4 (including &nbsp;, &copy;, &reg;, &euro;, &mdash;, &ndash;, &hellip;, curly quotes, arrows, Greek letters and math symbols) plus &apos;, and any decimal (&#233;) or hexadecimal (&#xE9;) reference.

What happens to entities the tool does not know?

They are left exactly as they are, and the status message tells you how many there were. Named entities also need their closing semicolon, so text such as AT&T or &copy without ; is not changed. Names are case-sensitive: &Eacute; and &eacute; are different letters.

What happens to invalid numeric references?

References to code point 0, to surrogate values (U+D800 to U+DFFF) or to values above U+10FFFF become the replacement character �. References from 128 to 159 become the Windows-1252 characters that browsers show for them, for example &#150; becomes an en dash.

My text is still encoded after decoding. Why?

It was probably encoded twice, so &lt; appears as &amp;lt;. Decode the output again to remove the second layer.

Does the decoder run HTML or scripts?

No. It only replaces entity text with characters and shows the result as plain text. Nothing in the input is rendered or executed, and nothing is sent to our server.