Turn & back into &
You’re scraping a web page and the text comes back as He said "hello" & goodbye. Or you exported blog posts from WordPress and every apostrophe is '. Or an API returned HTML-encoded strings because someone was being cautious about XSS.
The content is all there, it’s just wrapped in entity codes that make it unreadable. Paste it here, click decode, and & becomes &, < becomes <, " becomes ". All named entities, decimal entities (&), and hex entities (&) are handled.
The usual suspects
& → & … < → < … > → > … " → ” … ' → ’ … → non-breaking space … © → © … — → em dash … € → €
You’ll run into these constantly when working with HTML source, CMS exports, web scraping results, and email template code. The decoder handles them all, including the more obscure ones like math operators, arrows, and Greek letters.
Double-encoded text
Here’s an annoying scenario: you find &amp; in your data. That’s an ampersand that got encoded twice. The first decode turns it into &. Run the decoder a second time to get the actual &. Double encoding happens when text passes through multiple encoding layers, common in CMS systems and API chains.
Where you’ll need this
Web scraping: extracting readable text from HTML means decoding all those entities.
CMS migrations: moving content between platforms often surfaces entity-encoded text that needs cleaning.
API debugging: some endpoints return HTML-encoded strings as a security measure. You need to decode them to read the actual values.
Database forensics: someone stored HTML-encoded content in a TEXT column and now you need to read it.
For the reverse operation, the HTML Encoder converts characters to entities. The HTML Entities Reference has a searchable table of all available entities.
FAQ
HTML decoding vs URL decoding?
Different encoding systems. HTML decoding handles entities like &. URL decoding handles percent-encoded sequences like %26. Use the URL Decoder for URLs.
Is there a size limit?
No practical limit. Runs in your browser, so it handles large blocks of encoded text fine.
Does my data go anywhere?
Client-side only, uses the browser’s DOM for decoding. Nothing gets transmitted.