Unicode is a standard character set that numbers and defines characters from the world’s languages, writing systems, and symbols. By giving every character a number—a code point—computers can store and mix many languages in one HTML file without guessing which legacy charset applies.
What does Unicode mean for HTML authors?
Your page text is almost always Unicode characters encoded as UTF-8 bytes. You declare that with <meta charset="UTF-8">, type characters directly in the source, or insert them with HTML character references that target a Unicode code point.
Why Unicode replaced older character sets
Before Unicode, one charset might store Japanese and another Arabic. If programs disagreed about which bytes meant which characters, text became garbled—mojibake (for example curly quotes turning into nonsense like £). Unicode + UTF-8 gives the web one shared map for letters, emoji, and symbols.
When do you use Unicode features in HTML?
On every modern page: set UTF-8, write multilingual content, and use numeric references when you need a specific code point in ASCII-only source or for reserved markup characters.
UTF-8 is the web default.
Other Unicode encodings exist (such as UTF-16), but UTF-8 is the recommended character encoding for HTML on the web.
Unicode ≠ UTF-8.
Unicode is the catalog of characters and code points. UTF-8 is one encoding of those code points into bytes. HTML pages should declare and save UTF-8.
Reserved characters in HTML text still need escaping (<, &).
Browse more on the HTML Entities hub and topic pages.
Edge Cases & Pitfalls
Most Unicode problems in HTML are encoding mismatches, not missing characters.
mojibake
File encoding ≠ meta charset
Saving as Windows-1252 while declaring UTF-8 (or the reverse) garbles accents and symbols. Align both.
late
Charset declared too late
Put <meta charset> near the top of <head> so the browser does not guess wrong while parsing.
amp
Unescaped & in text
A bare & starts a character reference. Write & for a literal ampersand.
utf16
Serving HTML as UTF-16
Possible but uncommon and easy to misconfigure. Prefer UTF-8 for HTML on the web.
http
HTTP Content-Type overrides meta
If the server sends Content-Type: text/html; charset=…, that charset wins. Keep server and HTML meta in sync.
legacy
Mixing old single-byte charsets
Latin-1 pages cannot hold emoji or most world scripts. Migrate legacy HTML to UTF-8 instead of patching per language.
Compatibility
Browser Support
UTF-8 HTML, Unicode text, and numeric character references are supported in all modern browsers.
✓ Baseline · Widely available
Unicode / UTF-8 in HTML
Browsers decode UTF-8 HTML and resolve …; / …; references to Unicode characters everywhere users browse today.
100%UTF-8 & character references
Google ChromeAll versions · Desktop & Mobile
Full support
Mozilla FirefoxAll versions · Desktop & Mobile
Full support
Apple SafariAll versions · macOS & iOS
Full support
Microsoft EdgeAll versions · Chromium & Legacy
Full support
Internet ExplorerIE 6+ · Legacy environments
Full support
OperaAll modern versions
Full support
UTF-8 HTML documentsUniversal
Bottom line: Declare UTF-8 and use valid character references—Unicode support is not the bottleneck; encoding mismatches are.
Remember
Key Takeaways
Unicode numbers the world’s characters; HTML displays them as text.
UTF-8 is the encoding to declare and save for HTML on the web.
References:&#…; / &#x…; insert a Unicode code point in markup.
Mojibake means the wrong charset decoded the bytes—fix the mismatch.
One line: Unicode catalogs characters → UTF-8 encodes them in HTML files → type them or reference code points with &#…;.
Frequently Asked Questions
Unicode is a standard that assigns a unique number (code point) to characters from the world’s writing systems and symbols. HTML documents usually store those characters with the UTF-8 encoding and can also insert them with numeric character references.
No. Unicode is the character catalog (what each code point means). UTF-8 is one way to encode those code points as bytes in a file. HTML on the web almost always uses UTF-8.
Declare <meta charset="UTF-8"> early in head, save the .html file as UTF-8 in your editor, and type the characters directly—or use &#decimal; / &#xhex; character references.
Mojibake is garbled text (for example curly quotes turning into £) when the browser or tool decodes bytes with the wrong character encoding. Matching UTF-8 in the file and in meta charset prevents it.
With UTF-8 you can type most characters directly. Use named or numeric character references for reserved markup characters (<, >, &) or when you want the code point visible in the source.