Unicode is a standard that gives every character its own number, called a code point, written like U+0041 for the letter A. Software turns that number into bytes using an encoding, usually UTF-8. Understanding how Unicode works explains why one file can hold English, Arabic, math symbols and emoji without them clashing.
Before Unicode, each language had its own byte scheme and they collided. Unicode replaced that mess with a single map big enough for every writing system. This guide covers what a code point is, how encodings store it, and how to type any character from its code point on Windows, Mac, and the web.
Code points versus encodings
Two ideas get mixed up constantly, so keep them separate.
A code point is the identity of a character. The euro sign is U+20AC. The number after U+ is always hexadecimal. Unicode has room for 1,114,112 code points and has assigned over 150,000 of them so far, spread across 17 blocks called planes.
An encoding is how that code point gets written to disk as bytes. UTF-8 is the common one and runs about 98% of the web. It uses one byte for the old ASCII characters and up to four bytes for the rest, which is why it stayed backward compatible with plain English text. UTF-16 and UTF-32 exist too, but you rarely pick them by hand.
The first 128 code points are identical to ASCII, so a file of plain letters and digits reads the same whether it was saved as ASCII or UTF-8. Problems start above that line, which is where emoji versus plain text symbols also gets confusing.
How to type a character from its code point
Every platform has a way to enter a character by its Unicode value. The catch is that some methods want the number in decimal and some want it in hex. Get that wrong and you get the wrong character or nothing.
| Method | Input | Works in |
|---|---|---|
| Word / Outlook / OneNote (Alt+X) | Type the hex code point, press Alt+X | Word, Outlook, OneNote |
| Chromebook & Linux | Ctrl+Shift+U, type hex, Enter or Space | ChromeOS, many Linux apps |
| Mac Unicode Hex Input | Hold Option, type the 4-digit hex | Mac apps (keyboard enabled) |
| Excel & Google Sheets | =UNICHAR(decimal) | Excel, Google Sheets |
| Windows Alt code | Alt + decimal on the numeric keypad | Most Windows apps |
| HTML | &#decimal; or &#xhex; | Web pages |
The Unicode code point in U+ notation is always hex. Do not paste that hex number into a decimal-only field. The euro sign is U+20AC in hex but 8364 in decimal, so it is 20AC then Alt+X in Word, but =UNICHAR(8364) in a spreadsheet.
Windows
Windows Alt codes take a decimal number typed on the numeric keypad while you hold Alt. They will not work off the top-row number keys. The leading zero matters above 127: Alt+0128 and up reads the modern Windows-1252 set, while Alt+128 and up reads the old DOS code page 437. Alt+0169 gives © and Alt+0169 gives ®, so the zero is not optional. Use the leading-zero form for anything going into a document.
One more wrinkle: the zero-less codes read from whichever OEM code page the machine uses. CP437 is the US default, but CP850 is standard in the UK, Ireland, Canada, and Australia, so the same zero-less code can produce different characters for different readers. The leading-zero form does not have that problem. For anything not on a code page, use Win+. to open the emoji and symbol panel, or search Character Map. Our Alt codes finder tool looks up the decimal value for you.
Mac
Mac has no Alt codes at all. It uses Option-key combinations and a picker. For code-point entry, turn on the Unicode Hex Input keyboard in System Settings under Keyboard, then Input Sources. With it selected, hold Option and type the four-digit hex code. That covers the Basic Multilingual Plane, the block that holds most everyday characters.
For everything else, press Ctrl+Cmd+Space to open the Character Viewer, where you can search by name or code point. The Mac Character Viewer guide walks through the search and favorites setup.
Word, Excel, and PowerPoint
In Word, type the hex code point and press Alt+X. Press Alt+X again right after and it toggles back to show the code. This works in Word, Outlook, and OneNote, and the same Insert → Symbol dialog works in PowerPoint. It does not work in Excel.
Excel uses the =UNICHAR() function, and it takes the decimal number, not hex. So =UNICHAR(8364) returns €. Insert → Symbol also works if you would rather click.
Google Docs and Sheets
Google Docs has Insert → Special characters with a draw-to-find search box, which is the fastest way when you know the shape but not the code. Google Sheets has no such menu. Use =UNICHAR(decimal), paste from elsewhere, or type it in another app and copy it in. If you are entering a character into a cell with an OS input method, press F2 first to enter edit mode.
Phones and Chromebook
iPhone and Android have no code-point entry. You pick from the emoji keyboard, use the long-press accent popups, or set up a text replacement so a short trigger expands into the character. That replacement trick is the reliable way to get an odd symbol onto a phone.
Chromebook has no Alt codes either, and a USB numpad will not add them, because Alt codes are Windows software, not keypad hardware. ChromeOS uses Ctrl+Shift+U: press it, type the hex code with no U+ prefix, then press Enter or Space. An underlined u confirms input mode. There is also a symbol picker at Launcher+Shift+Space. Some web text fields swallow the shortcut, in which case paste is the fallback.
Notion, Slack, Discord, and Canva
None of these have a code-point input box. The dependable move is to paste the character in. Slack and Discord support :shortcodes: for emoji, but not for plain text symbols. For anything you use often, set a system text replacement so the character follows you across every app. That beats hunting for a per-app shortcut that does not exist.
HTML and CSS
On the web you can reference a character by code point. HTML accepts decimal as € or hex as € — note the x marks the hex form. Many characters also have a named entity, like €. In CSS content values, use a backslash and the hex, such as \20AC. Save the file as UTF-8 and you can usually just type the character directly instead.
Why characters break: mojibake and tofu
Two failures come up again and again, and they have different causes.
Garbled text like é or € is an encoding mismatch, nicknamed mojibake. The bytes were written as UTF-8 but read as a single-byte code page, so multi-byte characters split into gibberish. Fixing it means reopening the file with the correct encoding, not retyping.
An empty box (□) or a box with hex inside is not an encoding problem. The code point arrived fine, but the current font has no glyph for it, so the system draws a placeholder called tofu. Switch to a font that covers the character and it appears. The character is correct either way.
Where Unicode shows up
Unicode is the reason a filename can mix Japanese and English, a spreadsheet can hold accented names, and an emoji sent from a phone shows up on a laptop. It underpins web pages, databases, programming source files, and every messaging app. When keyboards differ, like the layout gap between US and UK keyboards or across AZERTY, QWERTY, and QWERTZ, Unicode is the shared layer underneath that keeps the stored text consistent.
Related guides
- How Typing Works — the full category of input and encoding guides.
- Windows Character Map: The Complete Guide — browse and copy any installed glyph.