HTML Entity Converter
Paste entities into the Entities box and read the text in the Text box: <p> comes back as a literal tag, é as an accented e and 😀 as an emoji. What is different here is that the decoding happens once and says what it did. The text is read by a plain string scanner with no parser to hand markup to, so a script tag spelled out in entities comes back as characters in a text box and nothing else. &lt; loses exactly one layer and becomes <, which is the answer a double-escaped page needs. A reference is decoded when it ends in a semicolon, and anything else is left as the text it already was: a name outside the 253 carried names, a reference with no semicolon, or a number no character answers to, each listed underneath with the position it was found at. Encoding runs the other way with three policies: names where HTML has one, numbers for everything covered, or the five markup characters and nothing else. The reference chart below lists the named set this tool carries and useful decimal/hexadecimal codes for common symbols. URL percent encoding and Base64 use separate formats.
- Direction
- Entities
- 7
- Length
- 19
- Policy
Decoding reads the text once: a reference becomes the character it names when it ends in a semicolon, and anything else is left as text and listed below. The result is text, never markup this page runs. The policy applies when you encode.
Worked examples
Type in either box: editing the entities side decodes, editing the text side encodes. Swap sends the text you have to the other box, which is the fix for a paste that went in the wrong one. Positions count characters from the start of the box, beginning at 1, and an emoji counts as one character.
HTML entity chart: named references and common numeric codes
This chart covers the converter's 253 named references plus selected numeric characters, rather than every HTML 5 name. Semicolons are required here. Decoded whitespace remains text; it does not create HTML layout. apos is accepted on decode; encoding writes ' for an apostrophe.
| Character | Meaning/name | Named reference | Decimal | Hexadecimal |
|---|---|---|---|---|
| & | Ampersand | & | & | & |
| < | Less-than sign | < | < | < |
| > | Greater-than sign | > | > | > |
| " | Double quote | " | " | " |
| ' | Apostrophe | ' | ' | ' |
| % | Percent sign | (numeric) | % | % |
| SPACE | Space | (numeric) |   |   |
| NBSP | Nonbreaking space | |   |   |
| LF | Line feed | (numeric) | | 
 |
| TAB | Tab | (numeric) | 	 | 	 |
| \ | Backslash | (numeric) | \ | \ |
| , | Comma | (numeric) | , | , |
| $ | Dollar sign | (numeric) | $ | $ |
| + | Plus sign | (numeric) | + | + |
| ^ | Caret | (numeric) | ^ | ^ |
| © | Copyright | © | © | © |
| ® | Registered mark | ® | ® | ® |
| ™ | Trademark | ™ | ™ | ™ |
| € | Euro | € | € | € |
| ° | Degree | ° | ° | ° |
| · | Middle dot | · | · | · |
| • | Bullet | • | • | • |
| … | Ellipsis | … | … | … |
| → | Right arrow | → | → | → |
| ↓ | Down arrow | ↓ | ↓ | ↓ |
| ♥ | Heart | ♥ | ♥ | ♥ |
| ★ | Filled star | (numeric) | ★ | ★ |
| ✓ | Checkmark | (numeric) | ✓ | ✓ |
| ✕ | Cross | (numeric) | ✕ | ✕ |
| ○ | Circle | (numeric) | ○ | ○ |
| ☃ | Snowman | (numeric) | ☃ | ☃ |
| ☁ | Cloud | (numeric) | ☁ | ☁ |
| ▲ | Triangle | (numeric) | ▲ | ▲ |
| á | aacute | á | á | á |
| Á | Aacute | Á | Á | Á |
| â | acirc | â | â | â |
| Â | Acirc | Â | Â | Â |
| ´ | acute | ´ | ´ | ´ |
| æ | aelig | æ | æ | æ |
| Æ | AElig | Æ | Æ | Æ |
| à | agrave | à | à | à |
| À | Agrave | À | À | À |
| ℵ | alefsym | ℵ | ℵ | ℵ |
| α | alpha | α | α | α |
| Α | Alpha | Α | Α | Α |
| ∧ | and | ∧ | ∧ | ∧ |
| ∠ | ang | ∠ | ∠ | ∠ |
| å | aring | å | å | å |
| Å | Aring | Å | Å | Å |
| ≈ | asymp | ≈ | ≈ | ≈ |
| ã | atilde | ã | ã | ã |
| Ã | Atilde | Ã | Ã | Ã |
| ä | auml | ä | ä | ä |
| Ä | Auml | Ä | Ä | Ä |
| „ | bdquo | „ | „ | „ |
| β | beta | β | β | β |
| Β | Beta | Β | Β | Β |
| ¦ | brvbar | ¦ | ¦ | ¦ |
| ∩ | cap | ∩ | ∩ | ∩ |
| ç | ccedil | ç | ç | ç |
| Ç | Ccedil | Ç | Ç | Ç |
| ¸ | cedil | ¸ | ¸ | ¸ |
| ¢ | cent | ¢ | ¢ | ¢ |
| χ | chi | χ | χ | χ |
| Χ | Chi | Χ | Χ | Χ |
| ˆ | circ | ˆ | ˆ | ˆ |
| ♣ | clubs | ♣ | ♣ | ♣ |
| ≅ | cong | ≅ | ≅ | ≅ |
| ↵ | crarr | ↵ | ↵ | ↵ |
| ∪ | cup | ∪ | ∪ | ∪ |
| ¤ | curren | ¤ | ¤ | ¤ |
| † | dagger | † | † | † |
| ‡ | Dagger | ‡ | ‡ | ‡ |
| ⇓ | dArr | ⇓ | ⇓ | ⇓ |
| δ | delta | δ | δ | δ |
| Δ | Delta | Δ | Δ | Δ |
| ♦ | diams | ♦ | ♦ | ♦ |
| ÷ | divide | ÷ | ÷ | ÷ |
| é | eacute | é | é | é |
| É | Eacute | É | É | É |
| ê | ecirc | ê | ê | ê |
| Ê | Ecirc | Ê | Ê | Ê |
| è | egrave | è | è | è |
| È | Egrave | È | È | È |
| ∅ | empty | ∅ | ∅ | ∅ |
| emsp |   |   |   | |
| ensp |   |   |   | |
| ε | epsilon | ε | ε | ε |
| Ε | Epsilon | Ε | Ε | Ε |
| ≡ | equiv | ≡ | ≡ | ≡ |
| η | eta | η | η | η |
| Η | Eta | Η | Η | Η |
| ð | eth | ð | ð | ð |
| Ð | ETH | Ð | Ð | Ð |
| ë | euml | ë | ë | ë |
| Ë | Euml | Ë | Ë | Ë |
| ∃ | exist | ∃ | ∃ | ∃ |
| ƒ | fnof | ƒ | ƒ | ƒ |
| ∀ | forall | ∀ | ∀ | ∀ |
| ½ | frac12 | ½ | ½ | ½ |
| ¼ | frac14 | ¼ | ¼ | ¼ |
| ¾ | frac34 | ¾ | ¾ | ¾ |
| ⁄ | frasl | ⁄ | ⁄ | ⁄ |
| γ | gamma | γ | γ | γ |
| Γ | Gamma | Γ | Γ | Γ |
| ≥ | ge | ≥ | ≥ | ≥ |
| ↔ | harr | ↔ | ↔ | ↔ |
| ⇔ | hArr | ⇔ | ⇔ | ⇔ |
| í | iacute | í | í | í |
| Í | Iacute | Í | Í | Í |
| î | icirc | î | î | î |
| Î | Icirc | Î | Î | Î |
| ¡ | iexcl | ¡ | ¡ | ¡ |
| ì | igrave | ì | ì | ì |
| Ì | Igrave | Ì | Ì | Ì |
| ℑ | image | ℑ | ℑ | ℑ |
| ∞ | infin | ∞ | ∞ | ∞ |
| ∫ | int | ∫ | ∫ | ∫ |
| ι | iota | ι | ι | ι |
| Ι | Iota | Ι | Ι | Ι |
| ¿ | iquest | ¿ | ¿ | ¿ |
| ∈ | isin | ∈ | ∈ | ∈ |
| ï | iuml | ï | ï | ï |
| Ï | Iuml | Ï | Ï | Ï |
| κ | kappa | κ | κ | κ |
| Κ | Kappa | Κ | Κ | Κ |
| λ | lambda | λ | λ | λ |
| Λ | Lambda | Λ | Λ | Λ |
| 〈 | lang | ⟨ | 〈 | 〈 |
| « | laquo | « | « | « |
| ← | larr | ← | ← | ← |
| ⇐ | lArr | ⇐ | ⇐ | ⇐ |
| ⌈ | lceil | ⌈ | ⌈ | ⌈ |
| “ | ldquo | “ | “ | “ |
| ≤ | le | ≤ | ≤ | ≤ |
| ⌊ | lfloor | ⌊ | ⌊ | ⌊ |
| ∗ | lowast | ∗ | ∗ | ∗ |
| ◊ | loz | ◊ | ◊ | ◊ |
| LRM | lrm | ‎ | ‎ | ‎ |
| ‹ | lsaquo | ‹ | ‹ | ‹ |
| ‘ | lsquo | ‘ | ‘ | ‘ |
| ¯ | macr | ¯ | ¯ | ¯ |
| U+2014 | mdash | — | — | — |
| µ | micro | µ | µ | µ |
| − | minus | − | − | − |
| μ | mu | μ | μ | μ |
| Μ | Mu | Μ | Μ | Μ |
| ∇ | nabla | ∇ | ∇ | ∇ |
| – | ndash | – | – | – |
| ≠ | ne | ≠ | ≠ | ≠ |
| ∋ | ni | ∋ | ∋ | ∋ |
| ¬ | not | ¬ | ¬ | ¬ |
| ∉ | notin | ∉ | ∉ | ∉ |
| ⊄ | nsub | ⊄ | ⊄ | ⊄ |
| ñ | ntilde | ñ | ñ | ñ |
| Ñ | Ntilde | Ñ | Ñ | Ñ |
| ν | nu | ν | ν | ν |
| Ν | Nu | Ν | Ν | Ν |
| ó | oacute | ó | ó | ó |
| Ó | Oacute | Ó | Ó | Ó |
| ô | ocirc | ô | ô | ô |
| Ô | Ocirc | Ô | Ô | Ô |
| œ | oelig | œ | œ | œ |
| Œ | OElig | Œ | Œ | Œ |
| ò | ograve | ò | ò | ò |
| Ò | Ograve | Ò | Ò | Ò |
| ‾ | oline | ‾ | ‾ | ‾ |
| ω | omega | ω | ω | ω |
| Ω | Omega | Ω | Ω | Ω |
| ο | omicron | ο | ο | ο |
| Ο | Omicron | Ο | Ο | Ο |
| ⊕ | oplus | ⊕ | ⊕ | ⊕ |
| ∨ | or | ∨ | ∨ | ∨ |
| ª | ordf | ª | ª | ª |
| º | ordm | º | º | º |
| ø | oslash | ø | ø | ø |
| Ø | Oslash | Ø | Ø | Ø |
| õ | otilde | õ | õ | õ |
| Õ | Otilde | Õ | Õ | Õ |
| ⊗ | otimes | ⊗ | ⊗ | ⊗ |
| ö | ouml | ö | ö | ö |
| Ö | Ouml | Ö | Ö | Ö |
| ¶ | para | ¶ | ¶ | ¶ |
| ∂ | part | ∂ | ∂ | ∂ |
| ‰ | permil | ‰ | ‰ | ‰ |
| ⊥ | perp | ⊥ | ⊥ | ⊥ |
| φ | phi | φ | φ | φ |
| Φ | Phi | Φ | Φ | Φ |
| π | pi | π | π | π |
| Π | Pi | Π | Π | Π |
| ϖ | piv | ϖ | ϖ | ϖ |
| ± | plusmn | ± | ± | ± |
| £ | pound | £ | £ | £ |
| ′ | prime | ′ | ′ | ′ |
| ″ | Prime | ″ | ″ | ″ |
| ∏ | prod | ∏ | ∏ | ∏ |
| ∝ | prop | ∝ | ∝ | ∝ |
| ψ | psi | ψ | ψ | ψ |
| Ψ | Psi | Ψ | Ψ | Ψ |
| √ | radic | √ | √ | √ |
| 〉 | rang | ⟩ | 〉 | 〉 |
| » | raquo | » | » | » |
| ⇒ | rArr | ⇒ | ⇒ | ⇒ |
| ⌉ | rceil | ⌉ | ⌉ | ⌉ |
| ” | rdquo | ” | ” | ” |
| ℜ | real | ℜ | ℜ | ℜ |
| ⌋ | rfloor | ⌋ | ⌋ | ⌋ |
| ρ | rho | ρ | ρ | ρ |
| Ρ | Rho | Ρ | Ρ | Ρ |
| RLM | rlm | ‏ | ‏ | ‏ |
| › | rsaquo | › | › | › |
| ’ | rsquo | ’ | ’ | ’ |
| ‚ | sbquo | ‚ | ‚ | ‚ |
| š | scaron | š | š | š |
| Š | Scaron | Š | Š | Š |
| ⋅ | sdot | ⋅ | ⋅ | ⋅ |
| § | sect | § | § | § |
| | shy | ­ | ­ | ­ |
| σ | sigma | σ | σ | σ |
| Σ | Sigma | Σ | Σ | Σ |
| ς | sigmaf | ς | ς | ς |
| ∼ | sim | ∼ | ∼ | ∼ |
| ♠ | spades | ♠ | ♠ | ♠ |
| ⊂ | sub | ⊂ | ⊂ | ⊂ |
| ⊆ | sube | ⊆ | ⊆ | ⊆ |
| ∑ | sum | ∑ | ∑ | ∑ |
| ⊃ | sup | ⊃ | ⊃ | ⊃ |
| ¹ | sup1 | ¹ | ¹ | ¹ |
| ² | sup2 | ² | ² | ² |
| ³ | sup3 | ³ | ³ | ³ |
| ⊇ | supe | ⊇ | ⊇ | ⊇ |
| ß | szlig | ß | ß | ß |
| τ | tau | τ | τ | τ |
| Τ | Tau | Τ | Τ | Τ |
| ∴ | there4 | ∴ | ∴ | ∴ |
| θ | theta | θ | θ | θ |
| Θ | Theta | Θ | Θ | Θ |
| ϑ | thetasym | ϑ | ϑ | ϑ |
| thinsp |   |   |   | |
| þ | thorn | þ | þ | þ |
| Þ | THORN | Þ | Þ | Þ |
| ˜ | tilde | ˜ | ˜ | ˜ |
| × | times | × | × | × |
| ú | uacute | ú | ú | ú |
| Ú | Uacute | Ú | Ú | Ú |
| ↑ | uarr | ↑ | ↑ | ↑ |
| ⇑ | uArr | ⇑ | ⇑ | ⇑ |
| û | ucirc | û | û | û |
| Û | Ucirc | Û | Û | Û |
| ù | ugrave | ù | ù | ù |
| Ù | Ugrave | Ù | Ù | Ù |
| ¨ | uml | ¨ | ¨ | ¨ |
| ϒ | upsih | ϒ | ϒ | ϒ |
| υ | upsilon | υ | υ | υ |
| Υ | Upsilon | Υ | Υ | Υ |
| ü | uuml | ü | ü | ü |
| Ü | Uuml | Ü | Ü | Ü |
| ℘ | weierp | ℘ | ℘ | ℘ |
| ξ | xi | ξ | ξ | ξ |
| Ξ | Xi | Ξ | Ξ | Ξ |
| ý | yacute | ý | ý | ý |
| Ý | Yacute | Ý | Ý | Ý |
| ¥ | yen | ¥ | ¥ | ¥ |
| ÿ | yuml | ÿ | ÿ | ÿ |
| Ÿ | Yuml | Ÿ | Ÿ | Ÿ |
| ζ | zeta | ζ | ζ | ζ |
| Ζ | Zeta | Ζ | Ζ | Ζ |
| ZWJ | zwj | ‍ | ‍ | ‍ |
| ZWNJ | zwnj | ‌ | ‌ | ‌ |
Common questions
- What does < mean, and how do I decode it?
- < is how a page writes a less-than sign when it needs the character rather than the start of a tag. Paste it into the entities box and the text box shows the character itself. The same rule covers the rest of the set: > is a greater-than sign, & an ampersand, " a double quote, a space that does not break a line, and é an e with an acute accent. A number works as well as a name: < and < are both the less-than sign, written in decimal and in hexadecimal, and 😀 is a grinning face. This tool decodes a reference when it ends in a semicolon, so < decodes and < on its own is left as text with a line saying why.
- Why does the result still show < after decoding?
- Because the text was escaped twice, and this tool takes exactly one layer off. &lt; is the way a page writes the four characters <, so decoding it once gives you those four characters back, not a tag. That is the correct answer, and it is usually the thing you were trying to find out: text that arrives double-escaped came through one encoder too many, and seeing one layer disappear tells you how many are left. Paste the result back in and the next layer comes off. A decoder that keeps going until nothing changes will happily turn text somebody deliberately escaped into live markup, which is why this one stops after a single pass.
- Which entities does it know?
- The HTML 4 named set plus apos, for 253 carried names in total: the markup five, the Latin-1 accents and symbols, the Greek letters, the arrows, the mathematical operators and the punctuation such as … and ’. Numeric references are not limited to a table at all, so any code point up to U+10FFFF decodes, in decimal or in hexadecimal, with leading zeros allowed. Names are case sensitive, so é and É are two different letters, and a name the table does not carry, such as ⌣, is left exactly as it was written and listed underneath with its position instead of being quietly dropped.
- Is it safe to decode HTML that contains a script tag?
- Yes, and that is the reason this tool is built the way it is. The decoder is a plain string scanner: it has no parser, no page fragment and no element to set markup on, so there is nothing in the path that could run what the text spells. Decoding <script>alert(1)</script> gives you those characters as text in a text box, and the box shows them the way it would show any other line you typed. The same holds for the worked examples and for the explanation list under the result: everything on this page is text, printed as text.
- What do the three encoding policies change?
- They choose which characters are covered, and nothing else moves. Named covers the five markup characters and everything outside plain ASCII, writing the HTML name where there is one and a number where there is not, so an accented e becomes é and an emoji becomes 😀. Numeric covers the same characters and writes all of them as decimal numbers, which needs no name table at the far end. Markup only covers the ampersand, the two angle brackets and the two quote characters, leaving accents, emoji and everything else exactly as they were, which is what you want when the page is already UTF-8. Under every policy an apostrophe is written ' rather than ', because ' is an HTML 5 name that an HTML 4 parser prints as text instead of an apostrophe, and a tab, a line feed and a carriage return are left alone so a paste keeps its lines.
- What happens to a number no character answers to, such as � or �?
- It becomes the replacement character U+FFFD and the tool says why, with the position it was found at. Three cases get that treatment: zero, a surrogate half such as �, which is part of a character rather than a character, and any number above U+10FFFF, the highest code point Unicode defines. Numbers in the 128 to 159 range are a different case and are remapped, not replaced: € is a Windows-1252 number written as though it were Unicode, and browsers read it as the euro sign, so that is what comes out here, with a line saying so. A decoded control character that does not print is reported too, because a result that looks unchanged should never be hiding something invisible.
- Is my text sent anywhere, and is there a size limit?
- The conversion happens in your browser, so there is no server in this, no account and nothing logged. The tool remembers two things in this browser, the direction and the encoding policy, so it opens the way you left it, and the text in the boxes is never written to storage or sent anywhere. The Start over button above the tool forgets those two settings. There is no length limit: a line is as welcome as a log file with a hundred thousand references in it, and the only ceiling is your own device. When a paste produces thousands of explanations the count stays exact and the list shows the first fifty, so a large file never fills the page with the same sentence.
- Where can I look up HTML entity codes for symbols or whitespace?
- The chart lists the 253 names carried by this converter, including the HTML 4 set and apos, plus common numeric references. Decimal % and hexadecimal % represent a percent sign; ★ is a filled star, ✓ a checkmark and ☃ a snowman. Numeric references do not require a named entry. The chart is not a complete list of every HTML 5 name; unknown names remain unchanged with a note.
- Do newline entities create a new line on the rendered page?
- is a line feed and 	 is a tab in the decoded text. HTML normally collapses whitespace, so a visible page line break needs suitable CSS or a br element. is a nonbreaking space. This converter returns text; it does not render a page, inspect a PDF or export a reference-sheet PDF.
- Is HTML entity encoding the same as URL encoding, JSON escaping or email obfuscation?
- No. URL Encoder and Decoder handles percent escapes; this tool handles ampersand references. JSON/XML escaping and serialization have their own syntax and are not performed here. Encoding an email address as entities is still readable text, not spam protection. There is no arbitrary obfuscated-script decoder, complete HTML 5 parser, hexadecimal-output policy or programming-language integration.
Decoding is done by an inert parser that never runs the markup, and the result is always text rather than something the page renders. Encoding covers the characters you choose, and every other character is left exactly as it was.