About the HTML Decode
Text that has been through a CMS, a scraper or a poorly configured API often arrives littered with &, ’ and ". This tool converts all three entity forms back to plain characters: named entities from the common set, decimal references such as é and hexadecimal ones such as 🎉, including code points above the basic plane so emoji come back whole.
Anything that is not a recognised entity is left exactly as it was rather than being quietly deleted, and the status line reports how many were decoded and how many were skipped. That count is the fastest way to spot a truncated entity where a semicolon went missing, since it will show up as one left untouched.
The repeat option handles double encoding, where &lt; should end up as < rather than <. That pattern appears when content passes through two systems that each escape it. Decoding is applied up to four times, stopping as soon as nothing changes, so a triple encoded string unwinds fully.
Decoded text is plain text, not markup: if it contains tags, they are literal characters here and only become active when written into a page, which is worth remembering before pasting the result somewhere. Encode text again with HTML Encode, or strip tags entirely with HTML to Text.
How to use
- Paste the entity laden text into the left pane.
- Tick Decode repeatedly when the source has been escaped more than once.
- Read the skipped count in the status line to catch malformed entities, then copy the text.
Common questions
- Why is one entity left untouched?
- It is not in the recognised name list or it is malformed, usually a missing semicolon. It stays as written so you can see what went wrong.
- What does double encoded mean?
- The ampersand of an existing entity was escaped again, giving &lt; instead of <. The repeat option unwinds it.
- Are emoji entities supported?
- Yes. Hexadecimal references such as 🎉 are converted to the full code point rather than a broken surrogate.
- Is the decoded output safe to insert into a page?
- Not automatically. If it contains tags they will become live markup, so re-encode before rendering untrusted content.