HTML decode entities

HTML decode any string with HTML entities and get the original characters back. Named entities (&amp;, <, &copy;), decimal numeric references (&#65;), and hex numeric references (&#x41;) all decode in a single pass. The browser's own HTML parser does the work, so the entity table matches whatever your browser supports. The transform runs in your browser; nothing uploads.

Input
Line 1:1 LF cloud_done Saved locally
Result HTML Decode
0 lines 0 chars

HTML decoding through the browser parser

HTML decoding reverses entity encoding. &amp; becomes &amp;, < becomes <, &#65; becomes A, and &#x41; also becomes A. TextResult delegates to DOMParser: the input is parsed as HTML and the resulting body.textContent is returned. That means every entity your browser knows about decodes correctly, including the long tail of HTML5 named entities like &copy;, &hellip;, and &mdash;.

Numeric references work in both forms: decimal (&#65;) and hex (&#x41;). High codepoints work too: &#128512; and &#x1F600; both decode to ๐Ÿ˜€. The case of the leading x in hex references and the trailing ; are handled the same way the browser handles them in real HTML, which means stray missing semicolons sometimes still decode (the same lenient parsing as the address bar).

Plain text passes through untouched. If the input contains literal HTML tags, the parser reads the tags as structure and only the text content comes out. So <p>Hello</p> in the input would become Hello on output. To preserve tags, encode them first (paste the input into HTML encode) before decoding.

How to use html decode entities

  1. 1Paste your HTML-encoded string into the input panel on the left.
  2. 2The decoded text appears in the output panel on the right as you type.
  3. 3Named, decimal, and hex entities all decode in a single pass.
  4. 4Click Copy in the output header to copy the decoded text.
  5. 5If a tag-bearing input strips structure, encode the source first via HTML encode, then decode.

Keyboard shortcuts

Drive TextResult without touching the mouse.

Shortcut Action
Ctrl FOpen the find & replace panel inside the input Plus
Ctrl ZUndo the last input change
Ctrl Shift ZRedo
Ctrl Shift EnterToggle fullscreen focus on the editor Plus
EscClose find & replace, or exit fullscreen
Ctrl KOpen the command palette to jump to any tool Plus
Ctrl SSave current workflow draft Plus
Ctrl PRun a saved workflow Plus

What this tool actually does

Browser parser handles every named entity

The decoder uses DOMParser, so the named-entity table is whatever your browser ships. &amp;, <, >, &quot;, &apos;, &copy;, &hellip;, &mdash;, and the rest of HTML5's ~250 named entities all work.

Decimal and hex numeric references decode in one pass

&#65; and &#x41; both decode to A. High codepoints decode to their multibyte UTF-16 character, including emoji like &#128512; -> ๐Ÿ˜€.

Strips HTML structure to text

The input is parsed as HTML and the body's textContent is returned. Literal tags in the input are read as structure, so <p>Hi</p> in the input yields Hi in the output. To preserve tag text, encode the source first.

Plain text passes through unchanged

Text without any &amp;...; sequences comes out byte-for-byte the same. Whitespace, line breaks, accented characters, and emoji all roundtrip.

Browser-side, no upload

Decoding runs through DOMParser on each keystroke. No server round-trip, no log of what you pasted.

Worked example

< and > decode to < and >, then the parser reads the literal <p> as structure and strips it. &amp; decodes to &amp;, &eacute; decodes to รฉ.

Input
<p>Hello &amp; welcome to caf&eacute;!</p>
Output
Hello & welcome to cafรฉ!

Settings reference

Behaviour Effect on output
Named entities Every named entity in your browser's table decodes (&copy; -> (C), &hellip; -> ...).
Decimal references &#65; -> A, &#128512; -> ๐Ÿ˜€.
Hex references &#x41; -> A, &#x1F600; -> ๐Ÿ˜€. Case-insensitive on the leading x and on the hex digits.
Plain text Pass through unchanged.
Literal HTML tags Parsed as structure. Tags strip; only text content remains. Encode first to preserve them.
Stray &amp; A &amp; not followed by a recognised entity passes through as a literal &amp;.
Whitespace and newlines Preserved.

FAQ

Why does my input with literal <p> tags lose them after decode?
The decoder uses the browser's HTML parser, which reads literal tags as structure and returns only the text content. To preserve tag text as readable strings, encode the input first via HTML encode, then decode.
Does it decode named entities like &copy; and &hellip;?
Yes. The named-entity table is whatever your browser ships, which is HTML5's full set (~250 entries) in every modern browser. &copy; -> (C), &hellip; -> ..., &trade; -> (TM).
What about emoji and other high codepoints?
Both decimal (&#128512;) and hex (&#x1F600;) numeric references decode to their codepoint, including ones above U+FFFF. &#128512; decodes to ๐Ÿ˜€.
What happens if an entity is missing the trailing semicolon?
The browser parser is lenient here. Some entities decode without the semicolon (the same way they would in real HTML), others come through as a literal &amp; followed by the entity name. If the result is wrong, add the semicolon and re-paste.
Is the input sent anywhere?
No. Decoding runs entirely in your browser via DOMParser. Nothing is uploaded, nothing is logged.