Developer Tools

HTML Decode

Turn HTML entities back into normal characters.

Rate this tool

How to use the HTML Decode

  1. Paste text containing HTML entities.
  2. Copy the decoded characters.

About the HTML Decode

Decoding turns entities back into the characters they stand for: & into an ampersand, < into a less-than sign, ' into an apostrophe. It is what you need when content arrives escaped — or double-escaped — from a database, a feed, an API or a scraped page, and you want to see the original text.

Rather than a hand-written lookup table, this tool hands the job to your browser’s own HTML parser, so it knows the complete named entity set —  , ©, é and hundreds more — along with decimal numeric references like — and hexadecimal ones like —. Named and numeric forms are interchangeable; the numeric form just names the Unicode code point directly. Text with no entities in it passes through unchanged.

Actual markup comes out as plain text: decode an escaped <b> tag and you get the literal characters back, not bold text. Nothing is rendered or executed here, and nothing is uploaded — it happens locally in the page. Worth remembering that decoded output is raw text again, so if it is heading back into a web page it needs re-escaping, in the right context, with the HTML encoder.

Frequently asked questions

Which entities are supported?

All of them, effectively. Decoding uses your browser's built-in HTML parser rather than a fixed list, so the full named set works alongside decimal references like &#8212; and hexadecimal ones like &#x2014;.

Will it render or run the HTML I paste?

No. The output is plain text — an escaped tag decodes to the literal characters of that tag, not to a rendered element. Nothing in your input is executed.

My text still shows an entity after decoding. Why?

It was double-encoded: the sequence &amp;lt; decodes to &lt;, which decodes again to a less-than sign. Run the decode a second time to get the original, then look at why the value passed through two escaping steps upstream.

Is &nbsp; just a normal space?

Not quite. It decodes to a non-breaking space, U+00A0 — a different character from the ordinary space, even though it looks identical. That difference trips up string comparisons and regex matching surprisingly often.

Is my content sent to a server?

No. The decoding happens in your browser, so pasted content stays on your machine.