HTML entity decoder: decode and unescape HTML entities, free and private
An HTML entity decoder converts character references such as <, © and € back into the characters they stand for: <, ยฉ and โฌ. To decode HTML entities free and privately, paste the text into Encoded HTML Entities and read the result in Decoded Output, which updates as you type. Nothing is uploaded: the decoding runs in your browser, and you can confirm that in the Network tab of DevTools.
Decoding is done by the browser's own HTML parser, so it understands every named entity in the HTML standard, plus decimal and hex references. In Decoded Output, tags stay as text; only Show Preview renders them, inside an isolated frame. Text that was escaped twice needs Handle nested entities, which repeats the decoding until nothing changes.
To go the other way and escape characters, use the HTML entity encoder. If your text contains percent codes such as %20 instead, you want the URL decoder.
Table of Use: encoded input and decoded output
| You paste | Setting | You get |
|---|---|---|
| <div>Hello</div> | Default | <div>Hello</div> |
| Tom & Jerry | Default | Tom & Jerry |
| © ® ™ | Default | ยฉ ยฎ โข |
| © | Default (decimal entity) | ยฉ |
| € | Default (hex entity) | โฌ |
| 😀 | Default (hex entity, emoji) | ๐ |
| &lt; | Default: one layer removed | < |
| &lt; | Handle nested entities ticked | < |
| © 2026 | Default: semicolon is optional for old names | ยฉ 2026 |
| &foo; | Default: unknown name | &foo; |
| € | Default: numbers 128-159 follow browser rules | โฌ |
| � | Default: invalid code point | ๏ฟฝ (replacement character) |
A common source of encoded text is JSON or XML copied from an API. Format it first with the JSON formatter or the XML formatter, then decode the strings that still carry entities. To see exactly what decoding changed, paste both versions into the text diff tool.
Features
- Decodes as you type. There is no Decode button; the output is recalculated on every change.
- Named, decimal and hex entities. Any named reference in the HTML standard, plus forms such as © and 😀, including old names written without a semicolon.
- Handle nested entities. Repeats decoding until the text stops changing, up to 20 passes, and shows the pass count next to the character counter.
- Show Preview. Renders the decoded text as HTML in an isolated frame with scripts, forms and network requests blocked. Hide Preview brings back Decoded Output.
- Show Lookup. A reference table of 30 common entities with the character, numeric and hex forms and a description.
- Copy, Download and Clear. Download saves decoded-html.txt.
- Counters. Characters and lines in, characters out, and how much shorter the result is.
- Multi-line input. Paste whole documents; line breaks are preserved.
It decodes HTML entities only. It does not strip tags, convert percent codes or read JavaScript escapes such as \u00e9. For tag clean-up, the HTML beautifier lays markup out readably and the HTML minifier does the opposite.
How to decode HTML entities, step by step
- Paste or type the encoded text into Encoded HTML Entities.
- Read the result in Decoded Output. It updates immediately, and the line under the box says Decodes as you type.
- If entities such as &lt; are still visible, tick Handle nested entities. The line then reports how many passes were needed.
- Click Show Preview to see the decoded HTML rendered. Click Hide Preview to return to the text.
- Click Show Lookup if you want the table of common entities to check a character against.
- Click Copy to put the result on your clipboard, Download to save decoded-html.txt, or Clear to start over.
Who can use it
- Web developers debugging double-escaped output from templates and APIs, and checking markup afterwards with the HTML previewer.
- Content editors cleaning posts where an import left & and ’ showing up as literal text.
- SEO specialists reading page titles and meta descriptions that were scraped with entities still in them.
- Data analysts and scrapers tidying text pulled from web pages or feeds before a find and replace pass.
- Developers inspecting payloads that are Base64 first and entity-encoded second: run the Base64 decoder, then paste the result here.
- Students learning how character references work, using the lookup table.
FAQs
What are HTML entities?
HTML entities, also called character references, are codes that stand for a character in HTML. They start with & and normally end with ;. A named entity uses a name (< is <), a decimal entity uses the Unicode code point (<) and a hex entity uses the code point in hexadecimal (<). They let markup carry characters that would otherwise be read as code.
How do I decode HTML entities online?
Paste the encoded text into the Encoded HTML Entities box. The decoded text appears in Decoded Output immediately, with no button to press, and you can copy it or download it as decoded-html.txt. If the output still contains entities such as &, the text was encoded more than once, so tick Handle nested entities.
Why do I still see &amp; after decoding?
The text was encoded more than once. A less-than sign encoded twice is &lt;, and one round of decoding gives <, not <. Tick Handle nested entities and the tool repeats the decoding until nothing changes, up to 20 passes, and shows how many it used. Only tick it when the text really is double-encoded.
What is the difference between ©, © and ©?
Nothing in the result: all three decode to the copyright sign. © is a named entity, © gives the Unicode code point in decimal, and © gives it in hexadecimal. Named entities exist only for some characters, while numeric and hex forms can write almost any character, including emoji such as 😀 (not U+0000, the surrogates, or 27 of the codes 128-159, which browsers read as Windows-1252 characters such as โฌ).
Does the decoder handle entities without a semicolon, or unknown names?
It follows the same rules as a browser. Old named entities such as © and & are decoded even without a semicolon, a numeric reference such as A is decoded too, and an unknown name such as &foo; is left exactly as typed. Code points that are invalid, such as �, become the replacement character.
Is it safe to preview decoded HTML?
Yes. Show Preview renders the result in a sandboxed frame that cannot run scripts, submit forms or open pop-ups, with a policy that blocks network requests. Remote images, fonts and stylesheets are therefore not loaded. A script tag in your text shows up as markup in Decoded Output and never executes.
What is the difference between HTML decoding and URL decoding?
HTML decoding reverses entities such as & and ©, which are used inside web pages. URL decoding reverses percent codes such as %20 and %26, which are used inside web addresses. The two are not interchangeable: this tool leaves %20 untouched, and the URL decoder leaves & untouched. Use whichever matches the escaping you see.
Is my text uploaded anywhere?
No. Decoding runs in your browser, using its built-in HTML parser, so the text you paste is never uploaded or stored by ZipConvert. You can check this yourself by opening the Network tab in your browser DevTools while you paste text: no request carrying it is sent.