HTML Entity Decoder – Convert HTML Entities Back to Readable Text
Turn encoded HTML back into plain text. This decoder handles named, decimal, and hexadecimal entities in one pass, with an optional tag stripper, a per-entity analysis table, and a reference of 60+ common entities. Free, private, and runs entirely in your browser.
Input & Settings
Decode modeOutput
Decoded plain text| Entity | Form | Code point | Char | Count |
|---|
Common HTML entities reference
Click any row to load that character into the input. Use the search box to filter by character, name, or description.
| Char | Named | Decimal | Hex | Description |
|---|
What is HTML entity decoding?
HTML entity decoding is the reverse of entity encoding. It takes strings like <p>, <, or < and turns them back into the characters they represent — in this case <p>. The browser does this automatically when it renders a page, but when you're working with raw HTML source, API responses, scraped data, or database exports, the entities stay visible until something decodes them.
That's what this tool is for. Paste the encoded string, and the decoder returns the readable characters so you can see what the content actually says without mentally translating & to & every few words.
Everything runs locally in your browser. The text you paste never leaves your device, and there's no signup or usage limit.
When you need to decode HTML entities
Decoding comes up in a handful of recurring situations. These are the most common:
- API responses and JSON payloads. CMS APIs, RSS feeds, and e-commerce endpoints often return HTML-encoded strings inside JSON fields. Decoding makes the content readable before you inspect or reuse it.
- Scraped or copied web content. Text copied from a rendered page sometimes carries entities with it, especially from
<pre>blocks, code samples, and old CMS exports. - Double-encoded data. When content passes through multiple systems that each apply their own escaping, you end up with
&lt;instead of<. The first decode unwraps one layer; running the result through again unwraps the second. - Email templates and legacy HTML. Older email systems sometimes store content as entity-encoded HTML. Decoding lets you review the actual text before sending or editing.
- Database exports and log files. Raw column dumps and application logs often contain escaped HTML that's easier to read once decoded.
Named, decimal, and hex entities — all in one pass
The HTML spec defines three ways to write an entity reference. This decoder handles all three simultaneously, so you don't need to pick a mode or run the input through multiple times.
| Form | Example | Decodes to | Notes |
|---|---|---|---|
| Named | © | © | Human-readable, defined by the HTML standard. About 2,000 exist. |
| Decimal | © | © | Unicode code point in base 10. Works for any character. |
| Hex | © | © | Unicode code point in base 16. Common in CSS and JavaScript contexts. |
The decoder also tolerates missing semicolons for common entities like & and <, which appear in hand-written or legacy HTML that doesn't strictly follow the spec. Numeric entities above the Basic Multilingual Plane — emoji, for example — are decoded with String.fromCodePoint, so surrogate pairs are handled correctly.
Decoding vs stripping tags: what's the difference?
These two operations are often confused, and the order matters:
- Decoding entities turns
<p>into<p>. The angle brackets appear as literal text. - Stripping tags removes real HTML markup like
<p>Hello</p>and leaves only the text content:Hello.
If you strip tags first and then decode, encoded tags like <p> survive the strip (because they aren't real tags yet) and then become literal <p> text after decoding. That's usually what you want when you're extracting visible content from a fragment that mixes real markup and escaped code samples.
If you decode first and then strip, the decoded tags become real markup and get removed — which would delete exactly the code sample you were trying to preserve. This tool applies stripping before decoding for that reason, and only when you enable the option.
Frequently asked questions
<, <, and < back into the characters they represent — in this case the less-than sign. It's the reverse of HTML entity encoding and is used to turn encoded HTML, scraped data, and API responses back into readable text.©, decimal entities like ©, and hexadecimal entities like ©. It also tolerates missing semicolons for common entities such as & and <.<div> are preserved as literal text <div> after decoding, because they weren't real tags in the input.&lt; instead of <. Run the decoded output through the tool a second time to unwrap the second layer. Double-encoding commonly happens when data passes through multiple systems that each apply their own escaping." and & back into readable characters. Note that the decoder only touches entities; it doesn't parse or validate the JSON structure itself.🔥 for the fire emoji. The decoder uses String.fromCodePoint, so it correctly handles surrogate pairs and returns the actual emoji character.