You have seen them in page source: <, &, — cryptic little codes where you expected a simple character. So what are HTML entities, exactly? They are how HTML represents characters that would otherwise confuse the browser: the angle brackets that mean “this is a tag,” the ampersand that starts the codes themselves, and characters like non-breaking spaces that have no key on your keyboard.
By the end of this guide you will be able to answer “what are HTML entities” without hesitation. It explains what HTML entities are and why they exist, gives you a curated reference of the ~20 entities you will actually use (not the 2,000-symbol dump), shows the name-vs-number choice, and ends with the honest modern truth: UTF-8 has made most entities unnecessary.
To encode or decode entities instantly, use our free HTML Entity Encoder — paste text in, get entities out.
Table of Contents
- What Are HTML Entities? The 60-Second Explanation
- Why Entities Exist: The Three Problems They Solve
- The 20 HTML Entities You Will Actually Use
- Entity Names vs. Numbers: Which to Use
- The Honest Truth: UTF-8 Made Most Entities Unnecessary
- What Are HTML Entities Used For in Email Templates
- Try It: Encode Entities Instantly
- Frequently Asked Questions
What Are HTML Entities? The 60-Second Explanation
An HTML entity is a short code that represents a character in HTML. Every entity starts with & and ends with ;, with a name or number in between:
<renders as < (less-than)>renders as > (greater-than)&renders as & (ampersand)©renders as © (copyright symbol)
So what are HTML entities for, in one sentence? They let you write characters in HTML source that would otherwise be misinterpreted — either because they have structural meaning to the browser (< starts a tag), or because they cannot be typed or transmitted reliably any other way. The browser reads the entity and renders the character.
The syntax has exactly three forms you will ever meet: named (© — readable), decimal numeric (© — the character’s code point in base 10), and hexadecimal numeric (© — same code point in base 16). All three of those examples render the identical ©. Named is for humans; numeric is for machines and edge cases.
Why Entities Exist: The Three Problems They Solve
Every beginner asks what are HTML entities for — why not just type the character? Three problems, three answers:
Entities look like clutter until you see the three problems behind them:
Problem 1: Reserved characters
HTML uses <, >, and & as syntax. So how do you display them? Writing a literal < in your HTML starts a tag — the browser will not show it as text. The entities <, >, and & are the escape hatch: they tell the browser “render this character, do not interpret it.” This is the one use of entities that is mandatory, not optional. Every tutorial that writes <div> in visible text is using entities — including this article.
Problem 2: Invisible or ambiguous characters
A non-breaking space looks identical to a normal space in your editor but behaves differently: it prevents a line break. Writing makes the intent explicit and visible in source. Same for soft hyphens (­) and other formatting characters you cannot see but must control.
Problem 3: Characters outside your keyboard or encoding
Historically, if your document’s encoding could not represent € or —, the entity was the reliable fallback. This was entities’ biggest job in the 1990s — and it is the job that has mostly evaporated, as the UTF-8 section below explains.
The 20 HTML Entities You Will Actually Use
The full HTML entity list has over 2,000 entries — a reference table, not a learning tool. Here is the curated set that covers ~99% of real-world use:
| Character | Entity (name) | Numeric | When you need it |
|---|---|---|---|
| < | < |
< |
Displaying code or math; mandatory in text |
| > | > |
> |
Displaying code or math; mandatory in text |
| & | & |
& |
Any literal ampersand in text; mandatory |
| “ | " |
" |
Quotes inside attribute values |
|
  |
Non-breaking space (visible here as spacing) | |
| © | © |
© |
Copyright notices |
| ® | ® |
® |
Registered trademark |
| ™ | ™ |
™ |
Trademark symbol |
| € | € |
€ |
Euro sign (also fine as literal € in UTF-8) |
| £ | £ |
£ |
Pound sterling |
| ¥ | ¥ |
¥ |
Yen / yuan sign |
| ¢ | ¢ |
¢ |
Cent sign |
| — | — |
— |
Em dash — proper punctuation |
| – | – |
– |
En dash – ranges like 1–10 |
| … | … |
… |
Ellipsis … (one character, not three dots) |
| “ ” | “ ” |
“ ” |
Curly double quotes |
| ‘ ’ | ‘ ’ |
‘ ’ |
Curly single quotes / apostrophes |
| × | × |
× |
Multiplication sign × (not the letter x) |
| ÷ | ÷ |
÷ |
Division sign ÷ |
| ° | ° |
° |
Degree sign ° |
| • | • |
• |
Bullet • |
Learn the first five cold (< > & " ) — they are the working vocabulary. The rest you look up as needed, which is what reference tables are for.
Before/after demo: type 5 < 10 && 10 > 5 in HTML source and the browser renders “5 < 10 && 10 > 5”. Type the raw characters instead and the browser tries to parse < 10 && 10 > as a tag — swallowing your text. One missing entity can eat a whole sentence.
Entity Names vs. Numbers: Which to Use
For the characters that have names, prefer the named form: © is self-documenting; © requires a lookup table in your head. Names win on readability, which is what source code is for.
Use numeric entities when:
- No named entity exists for the character (thousands of Unicode symbols have numbers but no names).
- You are generating HTML programmatically and mapping from code points — numbers are what you have.
- You need maximum compatibility with very old or minimal parsers (numeric references are the oldest, most universal form).
Decimal vs. hexadecimal numeric is pure taste — © and © are identical to the browser. Hex aligns with how Unicode code points are usually written (U+00A9), so developers tend to prefer it; decimal is friendlier if you are counting on fingers.
One caution: ' (apostrophe) is valid in HTML5 but was not defined in HTML4 — ancient tooling may choke on it. For apostrophes in text, a literal ' is fine; inside single-quoted attributes, restructure or use '. This is the kind of trivia that only matters when it bites you — now it will not.
The Honest Truth: UTF-8 Made Most Entities Unnecessary
Here is the nuance missing from most answers to “what are HTML entities”: if your page declares UTF-8 (and it should), you can type ©, €, —, “, and nearly every character directly. No entity needed. The browser reads the UTF-8 bytes and renders the character. The entity was a workaround for encodings that could not represent the character — UTF-8 can represent all of them.
So which entities survive in the UTF-8 era? Exactly the mandatory ones plus the invisible ones:
- Still mandatory:
<,>,&(and"inside double-quoted attributes) — syntax conflicts do not care about your encoding. - Still useful:
,­— invisible characters whose intent the entity makes explicit. - Optional: everything else.
©vs. literal © is now a style choice, not a requirement. Many codebases keep entities for symbols out of habit or for source readability; many have switched to literals. Both are correct.
The one hard requirement: declare the charset. A literal © only works if the browser knows the document is UTF-8 — that is the <meta charset="utf-8"> tag in your <head>. Without it, you are back in the encoding-guessing era, and entities become load-bearing again. (The encoding story in full: our plain text vs rich text guide.) For the authoritative reference on what an entity is, MDN’s glossary is the concise source.
What Are HTML Entities Used For in Email Templates
Email HTML is stuck in 2003 — many clients render with limited or unpredictable character-encoding support, which is exactly where the question “what are HTML entities” becomes practical rather than academic. When your newsletter shows “Café” as “Café” in one client and correctly in another, the cause is an encoding mismatch between your content and the client’s declared charset.
The defensive practice: encode anything beyond plain ASCII as entities in email templates — accented characters, curly quotes, em dashes, the euro sign. é renders as é in every client ever made, because the entity is pure ASCII that the parser resolves after decoding. It is verbose, but email is the one medium where verbose-and-safe beats clean-and-sorry.
Two email-specific rules. First, always encode the ampersand in URLs: a tracking link like ?a=1&b=2 must use & for the & — a bare & in email HTML is the single most common cause of broken tracking links. Second, keep your <meta charset> declaration correct anyway; entities are a safety net, not a substitute for declaring UTF-8. Used this way, understanding what are HTML entities pays off in the least glamorous but most widely-read HTML you will ever write: the inbox.
Try It: Encode Entities Instantly
Paste any text into the free HTML Entity Encoder — it converts special characters to entities (and decodes them back), running entirely in your browser. Perfect for preparing code samples, email templates, or CMS content where raw angle brackets would break the page. If pasted content arrives with stray whitespace or formatting junk, the Text Cleaner tidies it first.
Frequently Asked Questions
What are HTML entities, with an example?
An HTML entity is a code like < that represents a character in HTML source. Example: writing <div> in your HTML displays the literal text <div> instead of creating a div element — the entities stop the browser from interpreting the brackets as a tag.
Why do we need HTML entities?
Three reasons: reserved characters (<, >, &) would be misinterpreted as HTML syntax without them; invisible characters like non-breaking spaces need an explicit, visible form; and historically they provided characters that document encodings could not represent (mostly obsolete since UTF-8).
What is the HTML entity for < and >?
< for < (less-than) and > for > (greater-than). These two plus & for & are the mandatory entities — the ones you must use rather than typing the raw character.
What is the difference between entity name and number?
They render identically: ©, ©, and © all produce ©. Named entities are readable (©); numeric entities use the character’s Unicode code point in decimal (©) or hex (©) and work for characters that have no name.
Do I still need HTML entities if my site uses UTF-8?
Only the mandatory ones: <, >, & (syntax conflicts), plus useful invisible-character entities like . For symbols like © or €, a literal character works fine in UTF-8 — entities there are a style choice. Always declare <meta charset=”utf-8″>.