Is the HTML decoder free?
Yes. It is completely free to use, with no signup, no account, and no paywall.
Do I need to install anything?
No. It runs in any modern browser on desktop or mobile, with nothing to download and nothing to configure.
Does it stay local?
Yes. The text you paste is processed entirely in your browser and never uploaded to a server.
My entity was not decoded. Why?
This tool covers the small set of entities that matter for escaping (the angle brackets, the quotes, the ampersand, and the non-breaking space) rather than the full HTML5 table of more than 2,000 named references. Entities for typographic and symbol characters, such as ©, —, …, and the accented-letter names, are outside that set and are passed through unchanged. Content that is heavy with those needs a full HTML parser rather than a substitution pass.
Is it safe to put decoded HTML back on a page?
Not without escaping it again. Decoding is the exact inverse of the operation that made the text safe, so a decoded string can contain a real script tag, a real event handler, or a real closing tag that breaks out of its element. Decoded output is for reading and for feeding into a non-HTML destination. If it goes back into a page, escape it again first.
Why do I see < in my data?
That is double escaping: the text was escaped once, producing <, and then escaped again, turning the ampersand into &. It usually means two layers of your stack both escaped the same value, for example a template engine that escapes by default sitting on top of code that escaped by hand. Decoding once here gives you back <, which is the correct single-escaped form. The real fix is to remove one of the two escaping steps.
Why does come out as a normal space?
The tool substitutes it with an ordinary space character, which is what you usually want when you are extracting readable text from scraped HTML, because a stray U+00A0 breaks string comparisons and trims in surprising ways. If your goal is to preserve the exact character, for instance because it is holding a line together, you will need to reinsert it, since a normal space will allow a line break where a non-breaking space would not.
Does the decoding happen locally?
Yes. It is a set of string replacements running in your browser, and nothing you paste is transmitted or retained.