HTML Entity Decoder

Turn HTML character entities back into the characters they stand for — named, decimal, and hex references. Runs entirely in your browser, no server, no sign-up.

Try:
Decoded text

What this tool does

Paste text that contains HTML character entities and get back the real characters they stand for. It decodes:

Everything runs locally in your browser. Nothing is uploaded, it works offline once loaded, and there is no sign-up.

Worked example

Input

Fish & Chips — © 2026 ™

Output

Fish & Chips — © 2026 ™

The named &, the named —, the decimal ©, and the hex ™ are all resolved in one pass.

Unknown references

The Unknown references option decides what happens when a reference can't be decoded — an unrecognized name or a malformed numeric reference:

SettingBehavior
keep (default)Leaves the text exactly as written, so &notreal; stays &notreal;. Best for real-world HTML where a stray & shouldn't break the whole string.
errorStops and names the first reference it can't decode. Use it to validate that every entity in a snippet is legitimate.

Details worth knowing

Common entities

EntityCharacterEntityCharacter
&&—
&lt;<&ndash;
&gt;>&hellip;
&quot;"&copy;©
&apos;'&reg;®
&nbsp;(non-breaking space)&trade;
&euro;&pound;£
&ldquo; / &rdquo;" "&lsquo; / &rsquo;' '

FAQ

Is my text uploaded anywhere?

No. Decoding happens entirely in your browser with WebAssembly — your input never leaves your device, and the tool keeps working offline once the page has loaded.

What's the difference between named and numeric entities?

A named entity uses a keyword between & and ; (&copy;), while a numeric reference uses a code point — decimal (&#169;) or hexadecimal (&#xA9; / &#XA9;). All three forms above decode to the same character, ©, and this tool handles all of them.

Why did turn into an em dash instead of a control character?

Numeric references in the range 128–159 are interpreted as Windows-1252 bytes by the HTML standard, so &#151; is an em dash (—) and &#128; is the euro sign (€). Every browser does the same remap, and this tool follows it.

What happens to an entity I mistyped, like &notreal;?

With Unknown references set to keep (the default) it's left exactly as written, so the rest of your text still decodes cleanly. Switch to error if you'd rather the tool stop and tell you which reference it couldn't resolve.

Is the decoded output safe to drop straight into a web page?

Treat it as untrusted. Decoding turns &lt;script&gt; back into <script>, so decoded text can become active HTML if you inject it into a page. Escape or sanitize it again before rendering it as markup.

How do I go the other way and encode characters into entities?

This tool only decodes. To turn characters like <, >, and & into entities, use the companion string-escaper tool with its HTML escape mode.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool html-entity-decoder "Fish &amp; Chips &mdash; &#169; 2026 &#x2122;"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/html-entity-decoder/?text=Fish%20%26amp%3B%20Chips%20%26mdash%3B%20%26%23169%3B%202026%20%26%23x2122%3B&unknown=keep

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.