Windows Alt Codes: Complete Reference for Special Characters
- ○ 1. How to Type Special Characters on Mac: The Complete Guide
- ○ 2. How to Type Special Characters on Windows: Alt Codes and Beyond
- ○ 3. How to Type Special Characters on Linux: Compose Key and Unicode Input
- ○ 4. Input Method Editors (IME): How CJK Text Input Works
- ○ 5. Dead Keys: How to Type Accented Characters Without a Special Keyboard
- ○ 6. Unicode Hex Input on macOS: Type Any Character by Code Point
- ● 7. Windows Alt Codes: Complete Reference for Special Characters
Alt codes are one of the most enduring features in Windows computing history — a system so fundamental to PC culture that it predates Windows itself by a decade. If you've seen someone type a smiley face in an old DOS game, or noticed the copyright symbol in a document whose author didn't know how to find it any other way, you've seen Alt codes at work. This guide covers everything: how they work, why there are two different systems, and a comprehensive reference table of the most useful codes.
How Alt Codes Work
Alt codes exploit the way the IBM PC BIOS handled keyboard input in the early 1980s. When you hold Alt and type digits on the numeric keypad, the system accumulates the digits into an internal buffer. When you release Alt, the accumulated number is interpreted as a character code and the corresponding character is inserted.
The BIOS-level handling means this works at a very low level, before the application even processes keyboard input. That's why Alt codes work in nearly every Windows application, from Notepad to modern browsers to game overlays.
Requirements
Alt codes have two hard requirements:
1. The numeric keypad (Numpad)
You must use the number keys on the numeric keypad — the separate cluster of numbers on the right side of a full keyboard. The number row at the top of the keyboard does not work. The Numpad also needs to be in its numbered state.
2. Num Lock must be ON
Press the Num Lock key to toggle it on. The Num Lock indicator light (if present) shows the current state. If Num Lock is off, the numpad directional keys are active instead of the number keys, and Alt codes won't work.
On Laptops Without a Numpad
Many laptops don't have a dedicated numpad. Options: - Many laptops have an embedded numpad accessed via a Fn key — look for small numbers printed in a different color on certain letter keys (commonly J=1, K=2, L=3, U=4, I=5, O=6, 7=7, 8=8, 9=9, M=0). Hold Fn to use these as a numpad. - External USB numpad: An inexpensive peripheral ($10–15) that adds a full numpad. Recommended if you use Alt codes frequently. - For occasional use on a laptop, use the Win+. emoji panel or Character Map instead.
The Two Alt Code Systems
This is where most guides go wrong. There are two distinct Alt code systems that produce different characters, and confusing them leads to frustration.
System 1: Alt + [1–255] (No Leading Zero)
This accesses the original IBM PC character set — Code Page 437 (CP437). This encoding was designed for the original IBM PC and includes: - Standard ASCII characters (32–126) - Box-drawing characters (for DOS text UI) - Some extended Latin characters - Various symbols including card suits, arrows, and faces
System 2: Alt + [0128–0255] (With Leading Zero)
Adding a leading zero switches to Windows-1252 (also called Windows Western European or cp1252). This is the encoding Windows uses for most Western European text. It includes: - Standard ASCII (same as CP437 for 32–126) - Extended Latin characters with accents (128–255) - Common typographic symbols: em dash, curly quotes, bullet, ellipsis
The leading zero is the signal. Alt+151 and Alt+0151 produce completely different characters:
- Alt+151 (CP437) → a box-drawing character
- Alt+0151 (Windows-1252) → — (em dash)
For practical everyday use, always use the leading zero form (Alt+0xxx). The CP437 range is mostly useful for box-drawing characters and legacy DOS compatibility.
Reference Table: Essential Alt Codes (Windows-1252, Leading Zero)
Typography and Punctuation
| Character | Name | Alt Code |
|---|---|---|
| — | Em dash | Alt+0151 |
| – | En dash | Alt+0150 |
| … | Ellipsis | Alt+0133 |
| • | Bullet | Alt+0149 |
| · | Middle dot | Alt+0183 |
| ‹ | Single left guillemet | Alt+0139 |
| › | Single right guillemet | Alt+0155 |
| « | Left guillemet | Alt+0171 |
| » | Right guillemet | Alt+0187 |
| " | Left double quotation | Alt+0147 |
| " | Right double quotation | Alt+0148 |
| ' | Left single quotation | Alt+0145 |
| ' | Right single quotation | Alt+0146 |
| † | Dagger | Alt+0134 |
| ‡ | Double dagger | Alt+0135 |
| § | Section | Alt+0167 |
| ¶ | Pilcrow (paragraph) | Alt+0182 |
| ¡ | Inverted exclamation | Alt+0161 |
| ¿ | Inverted question mark | Alt+0191 |
Currency
| Character | Name | Alt Code |
|---|---|---|
| € | Euro | Alt+0128 |
| £ | Pound sterling | Alt+0163 |
| ¥ | Yen | Alt+0165 |
| ¢ | Cent | Alt+0162 |
| ¤ | Generic currency | Alt+0164 |
Legal and Trademark
| Character | Name | Alt Code |
|---|---|---|
| © | Copyright | Alt+0169 |
| ® | Registered | Alt+0174 |
| ™ | Trade mark | Alt+0153 |
Math and Science
| Character | Name | Alt Code |
|---|---|---|
| ° | Degree | Alt+0176 |
| ± | Plus-minus | Alt+0177 |
| × | Multiplication sign | Alt+0215 |
| ÷ | Division sign | Alt+0247 |
| ² | Superscript 2 | Alt+0178 |
| ³ | Superscript 3 | Alt+0179 |
| ¹ | Superscript 1 | Alt+0185 |
| ½ | Vulgar fraction one half | Alt+0189 |
| ¼ | Vulgar fraction one quarter | Alt+0188 |
| ¾ | Vulgar fraction three quarters | Alt+0190 |
| µ | Micro sign | Alt+0181 |
Accented Latin — Lowercase
| Character | Name | Alt Code |
|---|---|---|
| à | a-grave | Alt+0224 |
| á | a-acute | Alt+0225 |
| â | a-circumflex | Alt+0226 |
| ã | a-tilde | Alt+0227 |
| ä | a-umlaut | Alt+0228 |
| å | a-ring | Alt+0229 |
| æ | ae ligature | Alt+0230 |
| ç | c-cedilla | Alt+0231 |
| è | e-grave | Alt+0232 |
| é | e-acute | Alt+0233 |
| ê | e-circumflex | Alt+0234 |
| ë | e-umlaut | Alt+0235 |
| ì | i-grave | Alt+0236 |
| í | i-acute | Alt+0237 |
| î | i-circumflex | Alt+0238 |
| ï | i-umlaut | Alt+0239 |
| ð | eth | Alt+0240 |
| ñ | n-tilde | Alt+0241 |
| ò | o-grave | Alt+0242 |
| ó | o-acute | Alt+0243 |
| ô | o-circumflex | Alt+0244 |
| õ | o-tilde | Alt+0245 |
| ö | o-umlaut | Alt+0246 |
| ø | o-slash | Alt+0248 |
| ù | u-grave | Alt+0249 |
| ú | u-acute | Alt+0250 |
| û | u-circumflex | Alt+0251 |
| ü | u-umlaut | Alt+0252 |
| ý | y-acute | Alt+0253 |
| þ | thorn | Alt+0254 |
| ÿ | y-umlaut | Alt+0255 |
| ß | eszett (German sharp s) | Alt+0223 |
Accented Latin — Uppercase
| Character | Name | Alt Code |
|---|---|---|
| À | A-grave | Alt+0192 |
| Á | A-acute | Alt+0193 |
| Â | A-circumflex | Alt+0194 |
| Ã | A-tilde | Alt+0195 |
| Ä | A-umlaut | Alt+0196 |
| Å | A-ring | Alt+0197 |
| Æ | AE ligature | Alt+0198 |
| Ç | C-cedilla | Alt+0199 |
| È | E-grave | Alt+0200 |
| É | E-acute | Alt+0201 |
| Ê | E-circumflex | Alt+0202 |
| Ë | E-umlaut | Alt+0203 |
| Ì | I-grave | Alt+0204 |
| Í | I-acute | Alt+0205 |
| Î | I-circumflex | Alt+0206 |
| Ï | I-umlaut | Alt+0207 |
| Ñ | N-tilde | Alt+0209 |
| Ò | O-grave | Alt+0210 |
| Ó | O-acute | Alt+0211 |
| Ô | O-circumflex | Alt+0212 |
| Õ | O-tilde | Alt+0213 |
| Ö | O-umlaut | Alt+0214 |
| Ø | O-slash | Alt+0216 |
| Ù | U-grave | Alt+0217 |
| Ú | U-acute | Alt+0218 |
| Û | U-circumflex | Alt+0219 |
| Ü | U-umlaut | Alt+0220 |
| Ý | Y-acute | Alt+0221 |
CP437 Reference: The Legacy Alt Codes (No Leading Zero)
These are Alt codes without a leading zero, accessing the original IBM CP437 encoding. Most are box-drawing characters and DOS-era symbols. A small subset remain useful:
| Character | Name | Alt Code |
|---|---|---|
| ☺ | White smiling face | Alt+1 |
| ☻ | Black smiling face | Alt+2 |
| ♥ | Heart suit | Alt+3 |
| ♦ | Diamond suit | Alt+4 |
| ♣ | Club suit | Alt+5 |
| ♠ | Spade suit | Alt+6 |
| • | Bullet | Alt+7 |
| ○ | Ring | Alt+9 |
| ♂ | Male sign | Alt+11 |
| ♀ | Female sign | Alt+12 |
| ♪ | Eighth note | Alt+13 |
| ♫ | Beamed eighth notes | Alt+14 |
| ☼ | White sun | Alt+15 |
| ► | Right-pointing solid triangle | Alt+16 |
| ◄ | Left-pointing solid triangle | Alt+17 |
| ↕ | Up-down arrow | Alt+18 |
| ‼ | Double exclamation | Alt+19 |
| ¶ | Pilcrow | Alt+20 |
| § | Section | Alt+21 |
| ↨ | Up-down arrow with base | Alt+23 |
| ↑ | Up arrow | Alt+24 |
| ↓ | Down arrow | Alt+25 |
| → | Right arrow | Alt+26 |
| ← | Left arrow | Alt+27 |
| ∟ | Right angle | Alt+28 |
| ↔ | Left-right arrow | Alt+29 |
Note that ♥, ♦, ♣, ♠ in CP437 (Alt+3–6) are the same Unicode characters as the card suit symbols (U+2665, U+2666, U+2663, U+2660). These are among the few CP437 codes that produce the same character regardless of encoding context.
Alt+X in Word and WordPad
Microsoft Word and WordPad (and a few other Microsoft applications) support a different input method: type the hex code point and press Alt+X to convert it.
How Alt+X Works
- Type the hex code directly in your document — for example,
2014 - Immediately press Alt+X
- The text
2014is replaced by — (em dash, U+2014)
Reversing: Place the cursor after any character and press Alt+X — the character is replaced by its hex code point. This is useful for investigating what a character is.
This method works for the full Unicode BMP (U+0000 to U+FFFF) — far more than the 256-character range of Alt+0xxx codes.
Useful Alt+X Codes in Word
| Code | Character | Name |
|---|---|---|
| 2014 | — | Em dash |
| 2013 | – | En dash |
| 2026 | … | Ellipsis |
| 2019 | ' | Right single quotation |
| 201C | " | Left double quotation |
| 201D | " | Right double quotation |
| 00B0 | ° | Degree |
| 00B1 | ± | Plus-minus |
| 00D7 | × | Multiplication |
| 00F7 | ÷ | Division |
| 03C0 | π | Pi |
| 221E | ∞ | Infinity |
| 2260 | ≠ | Not equal |
| 2264 | ≤ | Less-or-equal |
| 2265 | ≥ | Greater-or-equal |
| 2192 | → | Right arrow |
| 21D2 | ⇒ | Rightwards double arrow |
| 2605 | ★ | Black star |
| 2713 | ✓ | Check mark |
| 2717 | ✗ | Ballot X |
Find the hex code for any character with our Unicode Lookup tool.
Modern Alternatives to Alt Codes
Alt codes are powerful but have real limitations: they require a numpad, cover only 256 characters, and are easy to confuse (leading zero or not?). Modern Windows has better tools for most use cases.
Win+. Emoji Panel
Press Win+. (Windows key + period) to open the emoji panel. It includes: - Full emoji library (searchable) - Kaomoji collection - Symbols including punctuation, currency, math, and Latin - Recently used characters at the top
For most everyday special character needs, Win+. is faster than Alt codes and works without a numpad.
Character Map (charmap.exe)
Win+R, type charmap. Browse or search the full Unicode character set, copy to clipboard. Good for finding unfamiliar characters.
Autocorrect / AutoCorrect in Office
Microsoft Office's AutoCorrect can replace text sequences with special characters automatically. Go to File > Options > Proofing > AutoCorrect Options. Pre-configured replacements include:
- (c) → ©
- (r) → ®
- (tm) → ™
- -- → — (em dash)
WinCompose
The third-party WinCompose app brings the Linux Compose key system to Windows — intuitive mnemonic sequences like Compose+<+< for «. More memorable than numeric codes. See the Windows special characters guide for details.
When to Use Alt Codes
Alt codes still have a place in 2025:
- Remote Desktop and VMs: Win+. may not forward to the guest OS; Alt codes often do
- Games and applications that intercept Win key: Alt codes work when Win+. doesn't
- Muscle memory: If you already know Alt+0169 for ©, it's faster than reaching for Win+.
- Very old applications: Some legacy software handles Alt codes better than modern clipboard-paste workflows
- Teaching: Understanding Alt codes gives insight into Windows character encoding history
For new users learning special character input today, starting with Win+. and Character Map is more practical than memorizing Alt codes.
You've reached the end of the Keyboard Mastery series. You now have a complete picture of special character input across all major platforms. To quickly find a character's properties, code point, and encoding across platforms, use our Unicode Lookup tool — search by name, paste a character, or enter a code point directly.