Which entities does this XML unescaper decode?
All five predefined XML entities — < > & " ' — plus every numeric character reference: &#NNN; (decimal) and &#xHHHH; (hexadecimal). Together those cover every escape sequence the XML 1.0 specification defines for plain text content. HTML named entities like or © are not part of XML and are not decoded.
What is the difference between a predefined entity and a numeric character reference?
Predefined entities use a name (& for ampersand). Numeric character references use the Unicode code point directly: & (decimal) and & (hexadecimal) both decode to &. Numeric references can encode any Unicode character — 😀 produces the grinning face emoji, é produces é. The tool decodes both forms in the same pass.
Why does the order of replacement matter?
The tool decodes & last on purpose. If &lt; appeared in the input and we replaced & with & first, the result would be < — which we would then incorrectly decode to <. By resolving numeric and named entities before the bare ampersand, &lt; correctly survives as the literal string < in the output.
How does it handle supplementary-plane characters and emoji?
Numeric references above U+FFFF (like 😀 — grinning face) are decoded with String.fromCodePoint, which produces the correct surrogate pair in JavaScript. The result renders as a single emoji or supplementary-plane glyph. CJK characters and accented Latin letters via é or é round-trip without loss.
Can I unescape the contents of a CDATA section?
No need — text inside <![CDATA[ … ]]> is taken literally and never escaped. If you have a value that came from a CDATA section, it is already decoded. This tool decodes entity references in regular XML text and attribute values, not CDATA blocks.
Will the output be valid XML?
No, and that is the whole point. Decoded text contains literal < > & characters that cannot appear in valid XML element content. Treat the output as plain text — for display, logging, or further string processing. If you need valid XML, re-escape with the XML Escape tool.
How do I unescape an XML attribute value?
Paste only the value — the text between the surrounding double or single quotes — into the input. The same five predefined entities and numeric references are used in attribute values, so the same decoder works. Including the attribute name and equals sign produces a result with literal name="..." text in the output.
Is my XML uploaded to a server?
No. Decoding runs in your browser using regular expressions and String.fromCodePoint. SOAP responses, configuration exports, and feed payloads — including any embedded credentials or PII — never leave the page. Verify in DevTools → Network.