What this tool does
Five characters change the meaning of HTML, so they get a name:
| Character | Output |
|---|---|
& | & |
< | < |
> | > |
" | " |
' | ' |
Everything above printable ASCII becomes a decimal numeric reference: é gives é, € gives €.
Numeric rather than named
é comes out as é, not é, and that is deliberate.
A named entity has to be defined by the document type. HTML defines a couple of thousand of them; XML defines exactly five. Paste é into an XML file, an Atom feed or an XHTML document served as XML, and the parser reports an undefined entity. é is understood by all of them.
Invisible characters become visible
A non-breaking space becomes  . That is often the whole point of running the tool: a U+00A0 pasted out of Word looks exactly like a space in your editor and behaves nothing like one, and encoding is how you find it.
Tab and newline stay literal. They are legal in HTML text, and turning them into references would make the source harder to read for no gain.
The apostrophe
' becomes ' rather than '. ' is defined in XML and in HTML5, but not in HTML 4 — a document in that mode renders the seven characters instead of the quote. The numeric form has no such gap.
One reference per character, not per unit
An emoji comes out as 😀, a single reference. Characters outside the Basic Multilingual Plane are stored as two units internally, and a naive escaper emits two broken references for them. This one iterates code points.
Private by design
Everything runs locally in your browser with JavaScript. Your data is never uploaded, which makes the tool safe for sensitive content, and it keeps working offline.