HTML Entity Encoder/Decoder
Convert characters to HTML entities and back — named, decimal or hex — with a searchable reference table, entirely on this device.
Minimal escapes & < > " ' · Non-ASCII adds everything above U+007F · Everything spares only ASCII letters and digits. Named falls back to hex where no name exists.
Press ? for shortcuts
HTML entity reference
The 196 named references you will actually meet, grouped from the five reserved characters outward — each row shows the glyph with all three spellings the decoder above accepts.
| Char | Hex | Description | Group | ||
|---|---|---|---|---|---|
| AMPERSAND | & | & | & | AMPERSAND | reserved |
| LESS-THAN SIGN | < | < | < | LESS-THAN SIGN | reserved |
| GREATER-THAN SIGN | > | > | > | GREATER-THAN SIGN | reserved |
| QUOTATION MARK | " | " | " | QUOTATION MARK | reserved |
| APOSTROPHE | ' | ' | ' | APOSTROPHE | reserved |
| NO-BREAK SPACE | |   |   | NO-BREAK SPACE | typography |
| EN SPACE |   |   |   | EN SPACE | typography |
| EM SPACE |   |   |   | EM SPACE | typography |
| THIN SPACE |   |   |   | THIN SPACE | typography |
| SOFT HYPHEN | ­ | ­ | ­ | SOFT HYPHEN | typography |
| HYPHEN | ‐ | ‐ | ‐ | HYPHEN | typography |
| EN DASH | – | – | – | EN DASH | typography |
| EM DASH | — | — | — | EM DASH | typography |
| LEFT SINGLE QUOTATION MARK | ‘ | ‘ | ‘ | LEFT SINGLE QUOTATION MARK | typography |
| RIGHT SINGLE QUOTATION MARK | ’ | ’ | ’ | RIGHT SINGLE QUOTATION MARK | typography |
| SINGLE LOW-9 QUOTATION MARK | ‚ | ‚ | ‚ | SINGLE LOW-9 QUOTATION MARK | typography |
| LEFT DOUBLE QUOTATION MARK | “ | “ | “ | LEFT DOUBLE QUOTATION MARK | typography |
| RIGHT DOUBLE QUOTATION MARK | ” | ” | ” | RIGHT DOUBLE QUOTATION MARK | typography |
| DOUBLE LOW-9 QUOTATION MARK | „ | „ | „ | DOUBLE LOW-9 QUOTATION MARK | typography |
| LEFT-POINTING DOUBLE ANGLE QUOTATION MARK | « | « | « | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK | typography |
| RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK | » | » | » | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK | typography |
| SINGLE LEFT-POINTING ANGLE QUOTATION MARK | ‹ | ‹ | ‹ | SINGLE LEFT-POINTING ANGLE QUOTATION MARK | typography |
| SINGLE RIGHT-POINTING ANGLE QUOTATION MARK | › | › | › | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK | typography |
| PRIME | ′ | ′ | ′ | PRIME | typography |
| DOUBLE PRIME | ″ | ″ | ″ | DOUBLE PRIME | typography |
| HORIZONTAL ELLIPSIS | … | … | … | HORIZONTAL ELLIPSIS | typography |
| BULLET | • | • | • | BULLET | typography |
| MIDDLE DOT | · | · | · | MIDDLE DOT | typography |
| DAGGER | † | † | † | DAGGER | typography |
| DOUBLE DAGGER | ‡ | ‡ | ‡ | DOUBLE DAGGER | typography |
| PER MILLE SIGN | ‰ | ‰ | ‰ | PER MILLE SIGN | typography |
| SECTION SIGN | § | § | § | SECTION SIGN | typography |
| PILCROW SIGN | ¶ | ¶ | ¶ | PILCROW SIGN | typography |
| INVERTED EXCLAMATION MARK | ¡ | ¡ | ¡ | INVERTED EXCLAMATION MARK | typography |
| INVERTED QUESTION MARK | ¿ | ¿ | ¿ | INVERTED QUESTION MARK | typography |
| DOLLAR SIGN | $ | $ | $ | DOLLAR SIGN | currency |
| CENT SIGN | ¢ | ¢ | ¢ | CENT SIGN | currency |
| POUND SIGN | £ | £ | £ | POUND SIGN | currency |
| CURRENCY SIGN | ¤ | ¤ | ¤ | CURRENCY SIGN | currency |
| YEN SIGN | ¥ | ¥ | ¥ | YEN SIGN | currency |
| EURO SIGN | € | € | € | EURO SIGN | currency |
| PLUS SIGN | + | + | + | PLUS SIGN | math |
| MINUS SIGN | − | − | − | MINUS SIGN | math |
| MULTIPLICATION SIGN | × | × | × | MULTIPLICATION SIGN | math |
| DIVISION SIGN | ÷ | ÷ | ÷ | DIVISION SIGN | math |
| PLUS-MINUS SIGN | ± | ± | ± | PLUS-MINUS SIGN | math |
| EQUALS SIGN | = | = | = | EQUALS SIGN | math |
| NOT EQUAL TO | ≠ | ≠ | ≠ | NOT EQUAL TO | math |
| LESS-THAN OR EQUAL TO | ≤ | ≤ | ≤ | LESS-THAN OR EQUAL TO | math |
| GREATER-THAN OR EQUAL TO | ≥ | ≥ | ≥ | GREATER-THAN OR EQUAL TO | math |
| IDENTICAL TO | ≡ | ≡ | ≡ | IDENTICAL TO | math |
| ALMOST EQUAL TO | ≈ | ≈ | ≈ | ALMOST EQUAL TO | math |
| TILDE OPERATOR | ∼ | ∼ | ∼ | TILDE OPERATOR | math |
| APPROXIMATELY EQUAL TO | ≅ | ≅ | ≅ | APPROXIMATELY EQUAL TO | math |
| PROPORTIONAL TO | ∝ | ∝ | ∝ | PROPORTIONAL TO | math |
| INFINITY | ∞ | ∞ | ∞ | INFINITY | math |
| SQUARE ROOT | √ | √ | √ | SQUARE ROOT | math |
| N-ARY SUMMATION | ∑ | ∑ | ∑ | N-ARY SUMMATION | math |
| N-ARY PRODUCT | ∏ | ∏ | ∏ | N-ARY PRODUCT | math |
| INTEGRAL | ∫ | ∫ | ∫ | INTEGRAL | math |
| PARTIAL DIFFERENTIAL | ∂ | ∂ | ∂ | PARTIAL DIFFERENTIAL | math |
| NABLA | ∇ | ∇ | ∇ | NABLA | math |
| FOR ALL | ∀ | ∀ | ∀ | FOR ALL | math |
| THERE EXISTS | ∃ | ∃ | ∃ | THERE EXISTS | math |
| EMPTY SET | ∅ | ∅ | ∅ | EMPTY SET | math |
| ELEMENT OF | ∈ | ∈ | ∈ | ELEMENT OF | math |
| NOT AN ELEMENT OF | ∉ | ∉ | ∉ | NOT AN ELEMENT OF | math |
| CONTAINS AS MEMBER | ∋ | ∋ | ∋ | CONTAINS AS MEMBER | math |
| INTERSECTION | ∩ | ∩ | ∩ | INTERSECTION | math |
| UNION | ∪ | ∪ | ∪ | UNION | math |
| SUBSET OF | ⊂ | ⊂ | ⊂ | SUBSET OF | math |
| SUPERSET OF | ⊃ | ⊃ | ⊃ | SUPERSET OF | math |
| SUBSET OF OR EQUAL TO | ⊆ | ⊆ | ⊆ | SUBSET OF OR EQUAL TO | math |
| SUPERSET OF OR EQUAL TO | ⊇ | ⊇ | ⊇ | SUPERSET OF OR EQUAL TO | math |
| NOT A SUBSET OF | ⊄ | ⊄ | ⊄ | NOT A SUBSET OF | math |
| CIRCLED PLUS | ⊕ | ⊕ | ⊕ | CIRCLED PLUS | math |
| CIRCLED TIMES | ⊗ | ⊗ | ⊗ | CIRCLED TIMES | math |
| UP TACK | ⊥ | ⊥ | ⊥ | UP TACK | math |
| ANGLE | ∠ | ∠ | ∠ | ANGLE | math |
| LOGICAL AND | ∧ | ∧ | ∧ | LOGICAL AND | math |
| LOGICAL OR | ∨ | ∨ | ∨ | LOGICAL OR | math |
| THEREFORE | ∴ | ∴ | ∴ | THEREFORE | math |
| ASTERISK OPERATOR | ∗ | ∗ | ∗ | ASTERISK OPERATOR | math |
| DOT OPERATOR | ⋅ | ⋅ | ⋅ | DOT OPERATOR | math |
| MICRO SIGN | µ | µ | µ | MICRO SIGN | math |
| DEGREE SIGN | ° | ° | ° | DEGREE SIGN | math |
| NOT SIGN | ¬ | ¬ | ¬ | NOT SIGN | math |
| VULGAR FRACTION ONE QUARTER | ¼ | ¼ | ¼ | VULGAR FRACTION ONE QUARTER | math |
| VULGAR FRACTION ONE HALF | ½ | ½ | ½ | VULGAR FRACTION ONE HALF | math |
| VULGAR FRACTION THREE QUARTERS | ¾ | ¾ | ¾ | VULGAR FRACTION THREE QUARTERS | math |
| SUPERSCRIPT ONE | ¹ | ¹ | ¹ | SUPERSCRIPT ONE | math |
| SUPERSCRIPT TWO | ² | ² | ² | SUPERSCRIPT TWO | math |
| SUPERSCRIPT THREE | ³ | ³ | ³ | SUPERSCRIPT THREE | math |
| LATIN SMALL LETTER F WITH HOOK | ƒ | ƒ | ƒ | LATIN SMALL LETTER F WITH HOOK | math |
| LEFTWARDS ARROW | ← | ← | ← | LEFTWARDS ARROW | arrows |
| UPWARDS ARROW | ↑ | ↑ | ↑ | UPWARDS ARROW | arrows |
| RIGHTWARDS ARROW | → | → | → | RIGHTWARDS ARROW | arrows |
| DOWNWARDS ARROW | ↓ | ↓ | ↓ | DOWNWARDS ARROW | arrows |
| LEFT RIGHT ARROW | ↔ | ↔ | ↔ | LEFT RIGHT ARROW | arrows |
| DOWNWARDS ARROW WITH CORNER LEFTWARDS | ↵ | ↵ | ↵ | DOWNWARDS ARROW WITH CORNER LEFTWARDS | arrows |
| LEFTWARDS DOUBLE ARROW | ⇐ | ⇐ | ⇐ | LEFTWARDS DOUBLE ARROW | arrows |
| UPWARDS DOUBLE ARROW | ⇑ | ⇑ | ⇑ | UPWARDS DOUBLE ARROW | arrows |
| RIGHTWARDS DOUBLE ARROW | ⇒ | ⇒ | ⇒ | RIGHTWARDS DOUBLE ARROW | arrows |
| DOWNWARDS DOUBLE ARROW | ⇓ | ⇓ | ⇓ | DOWNWARDS DOUBLE ARROW | arrows |
| LEFT RIGHT DOUBLE ARROW | ⇔ | ⇔ | ⇔ | LEFT RIGHT DOUBLE ARROW | arrows |
| LATIN CAPITAL LETTER A WITH GRAVE | À | À | À | LATIN CAPITAL LETTER A WITH GRAVE | accented-Latin |
| LATIN CAPITAL LETTER A WITH ACUTE | Á | Á | Á | LATIN CAPITAL LETTER A WITH ACUTE | accented-Latin |
| LATIN CAPITAL LETTER A WITH CIRCUMFLEX | Â | Â | Â | LATIN CAPITAL LETTER A WITH CIRCUMFLEX | accented-Latin |
| LATIN CAPITAL LETTER A WITH TILDE | Ã | Ã | Ã | LATIN CAPITAL LETTER A WITH TILDE | accented-Latin |
| LATIN CAPITAL LETTER A WITH DIAERESIS | Ä | Ä | Ä | LATIN CAPITAL LETTER A WITH DIAERESIS | accented-Latin |
| LATIN CAPITAL LETTER A WITH RING ABOVE | Å | Å | Å | LATIN CAPITAL LETTER A WITH RING ABOVE | accented-Latin |
| LATIN CAPITAL LETTER AE | Æ | Æ | Æ | LATIN CAPITAL LETTER AE | accented-Latin |
| LATIN CAPITAL LETTER C WITH CEDILLA | Ç | Ç | Ç | LATIN CAPITAL LETTER C WITH CEDILLA | accented-Latin |
| LATIN CAPITAL LETTER E WITH GRAVE | È | È | È | LATIN CAPITAL LETTER E WITH GRAVE | accented-Latin |
| LATIN CAPITAL LETTER E WITH ACUTE | É | É | É | LATIN CAPITAL LETTER E WITH ACUTE | accented-Latin |
| LATIN CAPITAL LETTER E WITH CIRCUMFLEX | Ê | Ê | Ê | LATIN CAPITAL LETTER E WITH CIRCUMFLEX | accented-Latin |
| LATIN CAPITAL LETTER E WITH DIAERESIS | Ë | Ë | Ë | LATIN CAPITAL LETTER E WITH DIAERESIS | accented-Latin |
| LATIN CAPITAL LETTER I WITH GRAVE | Ì | Ì | Ì | LATIN CAPITAL LETTER I WITH GRAVE | accented-Latin |
| LATIN CAPITAL LETTER I WITH ACUTE | Í | Í | Í | LATIN CAPITAL LETTER I WITH ACUTE | accented-Latin |
| LATIN CAPITAL LETTER I WITH CIRCUMFLEX | Î | Î | Î | LATIN CAPITAL LETTER I WITH CIRCUMFLEX | accented-Latin |
| LATIN CAPITAL LETTER I WITH DIAERESIS | Ï | Ï | Ï | LATIN CAPITAL LETTER I WITH DIAERESIS | accented-Latin |
| LATIN CAPITAL LETTER ETH | Ð | Ð | Ð | LATIN CAPITAL LETTER ETH | accented-Latin |
| LATIN CAPITAL LETTER N WITH TILDE | Ñ | Ñ | Ñ | LATIN CAPITAL LETTER N WITH TILDE | accented-Latin |
| LATIN CAPITAL LETTER O WITH GRAVE | Ò | Ò | Ò | LATIN CAPITAL LETTER O WITH GRAVE | accented-Latin |
| LATIN CAPITAL LETTER O WITH ACUTE | Ó | Ó | Ó | LATIN CAPITAL LETTER O WITH ACUTE | accented-Latin |
| LATIN CAPITAL LETTER O WITH CIRCUMFLEX | Ô | Ô | Ô | LATIN CAPITAL LETTER O WITH CIRCUMFLEX | accented-Latin |
| LATIN CAPITAL LETTER O WITH TILDE | Õ | Õ | Õ | LATIN CAPITAL LETTER O WITH TILDE | accented-Latin |
| LATIN CAPITAL LETTER O WITH DIAERESIS | Ö | Ö | Ö | LATIN CAPITAL LETTER O WITH DIAERESIS | accented-Latin |
| LATIN CAPITAL LETTER O WITH STROKE | Ø | Ø | Ø | LATIN CAPITAL LETTER O WITH STROKE | accented-Latin |
| LATIN CAPITAL LETTER U WITH GRAVE | Ù | Ù | Ù | LATIN CAPITAL LETTER U WITH GRAVE | accented-Latin |
| LATIN CAPITAL LETTER U WITH ACUTE | Ú | Ú | Ú | LATIN CAPITAL LETTER U WITH ACUTE | accented-Latin |
| LATIN CAPITAL LETTER U WITH CIRCUMFLEX | Û | Û | Û | LATIN CAPITAL LETTER U WITH CIRCUMFLEX | accented-Latin |
| LATIN CAPITAL LETTER U WITH DIAERESIS | Ü | Ü | Ü | LATIN CAPITAL LETTER U WITH DIAERESIS | accented-Latin |
| LATIN CAPITAL LETTER Y WITH ACUTE | Ý | Ý | Ý | LATIN CAPITAL LETTER Y WITH ACUTE | accented-Latin |
| LATIN CAPITAL LETTER THORN | Þ | Þ | Þ | LATIN CAPITAL LETTER THORN | accented-Latin |
| LATIN SMALL LETTER SHARP S | ß | ß | ß | LATIN SMALL LETTER SHARP S | accented-Latin |
| LATIN SMALL LETTER A WITH GRAVE | à | à | à | LATIN SMALL LETTER A WITH GRAVE | accented-Latin |
| LATIN SMALL LETTER A WITH ACUTE | á | á | á | LATIN SMALL LETTER A WITH ACUTE | accented-Latin |
| LATIN SMALL LETTER A WITH CIRCUMFLEX | â | â | â | LATIN SMALL LETTER A WITH CIRCUMFLEX | accented-Latin |
| LATIN SMALL LETTER A WITH TILDE | ã | ã | ã | LATIN SMALL LETTER A WITH TILDE | accented-Latin |
| LATIN SMALL LETTER A WITH DIAERESIS | ä | ä | ä | LATIN SMALL LETTER A WITH DIAERESIS | accented-Latin |
| LATIN SMALL LETTER A WITH RING ABOVE | å | å | å | LATIN SMALL LETTER A WITH RING ABOVE | accented-Latin |
| LATIN SMALL LETTER AE | æ | æ | æ | LATIN SMALL LETTER AE | accented-Latin |
| LATIN SMALL LETTER C WITH CEDILLA | ç | ç | ç | LATIN SMALL LETTER C WITH CEDILLA | accented-Latin |
| LATIN SMALL LETTER E WITH GRAVE | è | è | è | LATIN SMALL LETTER E WITH GRAVE | accented-Latin |
| LATIN SMALL LETTER E WITH ACUTE | é | é | é | LATIN SMALL LETTER E WITH ACUTE | accented-Latin |
| LATIN SMALL LETTER E WITH CIRCUMFLEX | ê | ê | ê | LATIN SMALL LETTER E WITH CIRCUMFLEX | accented-Latin |
| LATIN SMALL LETTER E WITH DIAERESIS | ë | ë | ë | LATIN SMALL LETTER E WITH DIAERESIS | accented-Latin |
| LATIN SMALL LETTER I WITH GRAVE | ì | ì | ì | LATIN SMALL LETTER I WITH GRAVE | accented-Latin |
| LATIN SMALL LETTER I WITH ACUTE | í | í | í | LATIN SMALL LETTER I WITH ACUTE | accented-Latin |
| LATIN SMALL LETTER I WITH CIRCUMFLEX | î | î | î | LATIN SMALL LETTER I WITH CIRCUMFLEX | accented-Latin |
| LATIN SMALL LETTER I WITH DIAERESIS | ï | ï | ï | LATIN SMALL LETTER I WITH DIAERESIS | accented-Latin |
| LATIN SMALL LETTER ETH | ð | ð | ð | LATIN SMALL LETTER ETH | accented-Latin |
| LATIN SMALL LETTER N WITH TILDE | ñ | ñ | ñ | LATIN SMALL LETTER N WITH TILDE | accented-Latin |
| LATIN SMALL LETTER O WITH GRAVE | ò | ò | ò | LATIN SMALL LETTER O WITH GRAVE | accented-Latin |
| LATIN SMALL LETTER O WITH ACUTE | ó | ó | ó | LATIN SMALL LETTER O WITH ACUTE | accented-Latin |
| LATIN SMALL LETTER O WITH CIRCUMFLEX | ô | ô | ô | LATIN SMALL LETTER O WITH CIRCUMFLEX | accented-Latin |
| LATIN SMALL LETTER O WITH TILDE | õ | õ | õ | LATIN SMALL LETTER O WITH TILDE | accented-Latin |
| LATIN SMALL LETTER O WITH DIAERESIS | ö | ö | ö | LATIN SMALL LETTER O WITH DIAERESIS | accented-Latin |
| LATIN SMALL LETTER O WITH STROKE | ø | ø | ø | LATIN SMALL LETTER O WITH STROKE | accented-Latin |
| LATIN SMALL LETTER U WITH GRAVE | ù | ù | ù | LATIN SMALL LETTER U WITH GRAVE | accented-Latin |
| LATIN SMALL LETTER U WITH ACUTE | ú | ú | ú | LATIN SMALL LETTER U WITH ACUTE | accented-Latin |
| LATIN SMALL LETTER U WITH CIRCUMFLEX | û | û | û | LATIN SMALL LETTER U WITH CIRCUMFLEX | accented-Latin |
| LATIN SMALL LETTER U WITH DIAERESIS | ü | ü | ü | LATIN SMALL LETTER U WITH DIAERESIS | accented-Latin |
| LATIN SMALL LETTER Y WITH ACUTE | ý | ý | ý | LATIN SMALL LETTER Y WITH ACUTE | accented-Latin |
| LATIN SMALL LETTER THORN | þ | þ | þ | LATIN SMALL LETTER THORN | accented-Latin |
| LATIN SMALL LETTER Y WITH DIAERESIS | ÿ | ÿ | ÿ | LATIN SMALL LETTER Y WITH DIAERESIS | accented-Latin |
| LATIN CAPITAL LIGATURE OE | Œ | Œ | Œ | LATIN CAPITAL LIGATURE OE | accented-Latin |
| LATIN SMALL LIGATURE OE | œ | œ | œ | LATIN SMALL LIGATURE OE | accented-Latin |
| LATIN CAPITAL LETTER S WITH CARON | Š | Š | Š | LATIN CAPITAL LETTER S WITH CARON | accented-Latin |
| LATIN SMALL LETTER S WITH CARON | š | š | š | LATIN SMALL LETTER S WITH CARON | accented-Latin |
| LATIN CAPITAL LETTER Y WITH DIAERESIS | Ÿ | Ÿ | Ÿ | LATIN CAPITAL LETTER Y WITH DIAERESIS | accented-Latin |
| COPYRIGHT SIGN | © | © | © | COPYRIGHT SIGN | symbols |
| REGISTERED SIGN | ® | ® | ® | REGISTERED SIGN | symbols |
| TRADE MARK SIGN | ™ | ™ | ™ | TRADE MARK SIGN | symbols |
| FEMININE ORDINAL INDICATOR | ª | ª | ª | FEMININE ORDINAL INDICATOR | symbols |
| MASCULINE ORDINAL INDICATOR | º | º | º | MASCULINE ORDINAL INDICATOR | symbols |
| BROKEN BAR | ¦ | ¦ | ¦ | BROKEN BAR | symbols |
| DIAERESIS | ¨ | ¨ | ¨ | DIAERESIS | symbols |
| MACRON | ¯ | ¯ | ¯ | MACRON | symbols |
| ACUTE ACCENT | ´ | ´ | ´ | ACUTE ACCENT | symbols |
| CEDILLA | ¸ | ¸ | ¸ | CEDILLA | symbols |
| BLACK SPADE SUIT | ♠ | ♠ | ♠ | BLACK SPADE SUIT | symbols |
| BLACK CLUB SUIT | ♣ | ♣ | ♣ | BLACK CLUB SUIT | symbols |
| BLACK HEART SUIT | ♥ | ♥ | ♥ | BLACK HEART SUIT | symbols |
| BLACK DIAMOND SUIT | ♦ | ♦ | ♦ | BLACK DIAMOND SUIT | symbols |
| LOZENGE | ◊ | ◊ | ◊ | LOZENGE | symbols |
| OVERLINE | ‾ | ‾ | ‾ | OVERLINE | symbols |
| FRACTION SLASH | ⁄ | ⁄ | ⁄ | FRACTION SLASH | symbols |
| SCRIPT CAPITAL P | ℘ | ℘ | ℘ | SCRIPT CAPITAL P | symbols |
| BLACK-LETTER CAPITAL I | ℑ | ℑ | ℑ | BLACK-LETTER CAPITAL I | symbols |
| BLACK-LETTER CAPITAL R | ℜ | ℜ | ℜ | BLACK-LETTER CAPITAL R | symbols |
| ALEF SYMBOL | ℵ | ℵ | ℵ | ALEF SYMBOL | symbols |
| WHITE STAR | ☆ | ☆ | ☆ | WHITE STAR | symbols |
| BLACK STAR | ★ | ★ | ★ | BLACK STAR | symbols |
| CHECK MARK | ✓ | ✓ | ✓ | CHECK MARK | symbols |
Do it offline:$ python3 -c 'import html,sys; sys.stdout.write(html.unescape(sys.stdin.read()))'
How to use it
- Paste your text. A character reference anywhere in it preselects decoding, raw markup preselects encoding, and the badge states which call was made — click it, or press the s key, to overrule.
- For encoding, set the two options above the output: Scope decides which characters become references (Minimal for the five markup-significant ones, Non-ASCII for everything past U+007F, Everything for all but ASCII letters and digits), and Style decides their spelling (Named where a name exists, Decimal, or Hex). Your choices survive swaps and re-runs.
- For decoding there is nothing to configure — every recognized spelling is resolved in one pass, and chips report whatever needed tolerance: legacy names without semicolons, numeric remaps, or references the standard simply does not define.
- Take the result with Copy or the .txt download, or fold the current state into a shareable link. To look up one character instead of converting a block, filter the reference table below by its glyph, name, codepoint or description.
Turn markup-significant characters into HTML entities, or collapse entity soup back into readable text. Direction is picked from what you paste, the encoder writes named, decimal or hex references at the scope you choose, and the decoder resolves all three spellings — including the legacy semicolon-less names — while declaring every tolerance as a chip. A searchable reference table of the common entities sits right below, and nothing you paste leaves this tab.
How it works
HTML keeps a few characters for itself: an ampersand opens a reference, angle brackets open and close tags, quotes delimit attribute values. To show those characters as content, a document spells them as character references — an ampersand, a payload, usually a semicolon. The payload comes in three forms: a name drawn from the standard's fixed table (—), the decimal codepoint (—), or the hexadecimal codepoint (—). All three mean the same em dash, and the decoder on this page resolves all three in a single pass, counting what it changed.
The name table is not open-ended. The WHATWG HTML Living Standard froze it at 2,231 entries — 2,125 names terminated by a semicolon plus 106 legacy exceptions — and publishes it as a machine-readable file, entities.json, from which this page's own table is generated. The 106 exceptions are an inheritance from the SGML era, when browsers accepted © or < with no terminator; retiring them would have broken decades of pages, so the standard instead fixed the rule: only names on that legacy list may match without a semicolon, and the tokenizer consumes the longest name it can. That rule is why ¬anentity; decodes to ¬anentity; — ¬ is a legitimate legacy match, and the rest is ordinary text. When it happens here, a chip names the semicolon-less match rather than leaving you to puzzle over a stray ¬.
Numeric references carry their own compatibility layer. Windows tooling spent years emitting “ and — for curly quotes and em dashes; those numbers sit in the C1 control block, 0x80 through 0x9F, which contains no printable characters at all. HTML5 resolves that block through the Windows-1252 mapping — € comes out as € — because that is what the authors meant. NULL, unpaired surrogate codepoints and values past U+10FFFF become U+FFFD, the replacement character, since no document may carry them. Every such remap is declared as a chip instead of being silently absorbed.
Encoding is a policy question — which characters, spelled how. Minimal scope converts exactly the five markup-significant characters and leaves prose readable; Non-ASCII additionally converts everything above U+007F, for channels that mangle bytes; Everything converts all but ASCII letters and digits, the maximal form that makes invisible characters auditable. Style then picks the spelling. Named prefers the standard's name where one exists, settling ties for a codepoint by taking the shortest, lowercase-leaning candidate; the many codepoints without any name fall back to hex. And an astral character is always one reference for its full codepoint — 😀 is 😀, never a pair of surrogate references, because surrogates are a UTF-16 storage detail with no standing in a document.
Examples
<a href="?a=1&b=2"><a href="?a=1&b=2">The defaults at work: Minimal scope, Named style. The two angle brackets, both double quotes and the ampersand become references — the count chip reads Encoded 5 characters — while letters, digits and URL punctuation pass through untouched, so the result can sit inside a code sample or an attribute without being parsed as markup.
© 2026 — café© 2026 — caféThree named references from three corners of the table — a symbol, a dash, an accented letter — resolved in one decode pass. The year and the spaces were never encoded and are left exactly as pasted.
™™One character, three valid spellings. Under Non-ASCII scope the trademark sign becomes ™ in Named style, ™ in Decimal and ™ in Hex — 8482 and 2122 are the same codepoint in two bases. Minimal scope would leave ™ alone, since it cannot break markup.
Every example on this page is executed against the same engine that powers the tool, on every build.
Gotchas worth knowing
A bare © inside a URL is live ammunition
Write ?a=1©=2 into a page and the text between the ampersand and the equals sign is a legacy name that matches without its semicolon — browsers applying text rules will render ?a=1©=2, and your copy parameter is gone. The fix is mechanical: every ampersand in document text should be written as &, query strings included. Paste a suspect URL into the decoder here and the legacy-name chip will point at exactly which parameter names double as entities.
Astral characters take one reference, not two
An emoji or a rare CJK character occupies two UTF-16 code units, and plenty of ad-hoc encoders leak that detail as two references of surrogate halves — a form the HTML standard treats as an error and a decoder must map to replacement characters. The encoder here always emits the full codepoint as a single reference, so 😀 is 😀 and nothing else. If a JSON escaper is what you actually need — that format does use surrogate pairs — this is the wrong tool in an instructive way.
Encoding entities is not sanitizing HTML
Converting markup-significant characters makes text display as text — that is a presentation transform, not a security boundary. Escaping protects only the context it was designed for: text encoded for an element body can still be dangerous inside an event-handler attribute, a URL, or a style block, and no character-level transform can make untrusted markup safe to render as markup. For that job you need a sanitizer that parses and rebuilds the document tree; OWASP's prevention cheat sheet, cited below, maps which defense belongs to which context.
' is standard now, but its past lingers
The apostrophe's name entered HTML with HTML5, imported from XML; HTML 4 never defined it, which is why veterans of that era reach for ' instead. Named style here writes ' — the evergreen baseline this site targets — but if your output must feed an HTML 4-only consumer, an elderly email client, or a template engine with its own opinions, switch Style to Decimal or Hex and the question disappears: numeric spellings have worked everywhere since before the name existed.
&mdash; is a fingerprint, not a typo
When a page displays — as literal text, the reference was encoded twice: some pipeline took the already-escaped string and escaped its ampersand again, producing &mdash;. One decode pass peels one layer and stops. This page recognizes the &-prefixed shape, offers the second pass as a banner action, and keeps it single-level undoable — so you can count the layers, which tells you how many systems in the chain applied their own escaping.
Numbers in the 128–159 range are Windows-1252 ghosts
References like “ and ” around quoted phrases are the signature of text that passed through old Windows software — codepoints 128 through 159 are control codes with no glyphs, but Windows-1252 put the typographic quotes, dashes and the euro sign there. The decoder follows the standard's remap and shows the intended “ ” — with a chip on each remap, so a document that is quietly full of legacy-encoded punctuation announces itself the moment you paste it.
Common errors
Input is larger than the 4 MB limit for this tool. For bigger payloads use the CLI: python3 -c 'import html,sys; sys.stdout.write(html.unescape(sys.stdin.read()))' < file.html- Four megabytes of entities is a scraped site or a template dump, not a snippet, and a browser tab is the wrong place to churn through it. The page refuses the whole paste — converting a truncated slice would produce a plausible-looking wrong answer — and your input stays put. Python's html module applies the same WHATWG table on your own machine; html.escape covers the encode direction.
`&nosuchentity;` at position 1 is not a known reference — left unchanged- The name between & and ; is not one of the standard's 2,231 entries, so the decoder passes it through byte-for-byte and points at it — one warning per distinct name, up to twenty, with an overflow note past that. Check the spelling and the case: names are case-sensitive, and while © and © both exist, mixed-case variants of most names do not.
This looks double-encoded — decode twice?- The input is full of &-prefixed reference shapes — the residue of a string that was escaped, then escaped again by a second system. Accepting the banner runs one more decode pass on the current output, and the action is undoable, so peeling a layer too many is a one-keystroke recovery rather than a re-paste.
FAQ
What is an HTML entity, exactly?
A spelled-out stand-in for one character, written between an ampersand and a semicolon so the parser reads it as content rather than syntax. The HTML standard calls them character references and admits three payloads — a name from its fixed table, a decimal codepoint, a hex codepoint. Entities exist because a handful of characters have jobs inside markup; for every other character they are optional, a readability and transport convenience rather than a requirement.
Which characters do I actually have to encode?
In document text, the ampersand always, and the angle brackets wherever they could open something tag-shaped. Inside attribute values, add whichever quote delimits the attribute. That is the whole mandatory list — Minimal scope here, five characters — and everything beyond it is discretionary. Encode non-ASCII characters only when some hop in your toolchain cannot be trusted with UTF-8; a modern stack with correct charset declarations does not need café spelled as café.
Named, decimal or hex — when does each style make sense?
Named references read best in source and in diffs, which is their entire advantage; only about two thousand codepoints have one. Hex tracks how Unicode itself writes codepoints — U+2122 and ™ line up digit for digit — so it suits generated output and anything a human will cross-reference against a character database. Decimal is the oldest spelling and survives everywhere, including consumers that predate the named table's later additions. When several names exist for one codepoint, Named style here picks the shortest, lowercase-leaning one.
Why did € decode to € instead of failing?
Because the standard says so, deliberately. Codepoint U+0080 is an unprintable control code, but a generation of software wrote numeric references straight from Windows-1252 byte values, where 0x80 is the euro sign. HTML5 codified the rescue: numeric references in the 0x80–0x9F block resolve through the Windows-1252 table. This page follows that rule and flags each remap with a chip, so you get the character the author intended and a record of the liberty taken.
Is decoding entities the same as stripping HTML tags?
No — the two operate on different layers. Decoding turns <b> into the four characters <b>, which is still markup once rendered; it never removes anything. Stripping deletes tags and keeps their text. Run this decoder over exported markup and the tags come back as tags; whether to then parse, strip or sanitize them is a separate decision, made with a different tool, after this one has done its honest character-level work.
My page shows &copy; as literal text — what happened?
Somewhere between your source and the screen, the string was escaped twice — a CMS that escapes on save feeding a template that escapes on render is the classic pairing. The browser decodes one layer, displays the remainder, and the visitor reads raw entity syntax. Paste the offending text here: the double-encoding banner names the shape, and repeated decode passes count exactly how many escaping layers your pipeline is stacking.
Can I decode a whole saved page here?
Up to the 4 MB cap, yes — inputs past 64 KB move to a background worker and the largest band asks for an explicit run with ⌘/Ctrl + Enter, so the tab never freezes mid-paste. One nuance at document scale: this tool applies text rules everywhere, while a real parser treats a handful of semicolon-less legacy cases inside attribute values differently. For files beyond the cap, the command line under the tool streams the identical table through Python on your own machine.
Keyboard shortcuts
- ⌘/Ctrl + Enter
- Run the conversion now — and the required confirmation once an input crosses the 2 MB manual band.
- ⌘/Ctrl + S
- Download the current output as a .txt file; the help overlay notes that this overrides the browser's own save shortcut.
- ⌘/Ctrl + C
- With focus in the tool and nothing selected, copy the whole output and announce it; any real selection copies just itself, natively.
- ⌘/Ctrl + Shift + C
- Copy the complete output regardless of selection state.
- s
- Swap encode and decode (inert while typing in a field, during IME composition, and when single-key shortcuts are switched off).
- t
- Advance to the next color theme, under the same single-key guards.
- ? or ⌘/Ctrl + /
- Open the shortcut overlay, browser-conflict notes included — and the reference table's filter field is reachable by Tab from the table heading.
- Esc
- Dismiss the topmost overlay only; pasted work is never touched.