Symbols and Screen Readers: What Gets Read Aloud and What Doesn't
Quick answer: screen readers speak some symbols by name (©, ™, @, &, %, €), but at default settings they skip or only pause for many others: dashes, quotation marks, the ellipsis, arrows and maths signs. Emoji are read by their full names, and "fancy text" letters are often unreadable. If a symbol carries meaning, also say it in words.
Quick reference: every method
Every Alt code below is verified against the real Windows code pages — where none exists we say so, rather than list one that won’t work.
| Char | Name | Windows | Mac | HTML | Word (Alt+X) | Unicode |
|---|---|---|---|---|---|---|
| © | Copyright Sign | Alt+0169 |
Option+G |
© |
00A9 + Alt+X |
U+00A9 |
| ™ | Trade Mark Sign | Alt+0153 |
Option+2 |
™ |
2122 + Alt+X |
U+2122 |
| → | Rightwards Arrow | Alt+26 |
Copy / paste | → |
2192 + Alt+X |
U+2192 |
| ✓ | Check Mark | Copy / paste | Copy / paste | ✓ |
2713 + Alt+X |
U+2713 |
| ★ | Black Star | Copy / paste | Copy / paste | ★ |
2605 + Alt+X |
U+2605 |
| • | Bullet | Alt+0149 |
Option+8 |
• |
2022 + Alt+X |
U+2022 |
| — | Em Dash | Alt+0151 |
Shift+Option+- |
— |
2014 + Alt+X |
U+2014 |
| … | Horizontal Ellipsis | Alt+0133 |
Option+; |
… |
2026 + Alt+X |
U+2026 |
Verbosity: not everything is spoken
Screen readers have a punctuation or verbosity setting, usually with levels such as none, some, most and all. Most listeners leave it near the default, where much punctuation is silent. Tests published by Deque found that NVDA, JAWS and VoiceOver each handled punctuation differently. Screen readers have changed since those tests, so check current versions.
- Usually spoken: © "copyright", ® "registered", ™ "trademark", @, &, %, $, €.
- Often a pause or nothing: — and – dashes, curly quotes, …, parentheses.
- Inconsistent: arrows (→ may be read as "right arrow" or skipped), maths symbols such as ≤, ≈ and ×, and the minus sign.
Listeners can change the setting (in NVDA, NVDA+P cycles the punctuation level), but you can't count on it.
Emoji
Emoji are read by their Unicode names: ❤️ "red heart", 😂 "face with tears of joy". That works for one emoji. A line such as ✨✨✨ is read as "sparkles, sparkles, sparkles", and emoji used as bullets are read before every item. See emoji vs text symbols.
Fancy text and decorative symbols
Letters from a fancy text generator, such as 𝓗𝓮𝓵𝓵𝓸 or 𝐇𝐞𝐥𝐥𝐨, are really mathematical symbols. Screen readers may read them as "mathematical bold capital H…", spell them out or skip them. Use them sparingly and never for names, headings or anything important. The same goes for symbol art and long divider lines such as ✦✦✦✦✦✦, which may be read character by character.
Practical rules
- Say the meaning in words where it matters: "Price: 20 € (was 25 €)" works by ear; "20 € ← 25 €" does not.
- Don't rely on ✓ and ✗ alone for yes/no in tables; add "Yes"/"No" or hidden text.
- Use real lists instead of typed • or ✓ bullets, so the reader announces "list, 5 items".
- Use a real divider (a horizontal rule in HTML, or a heading) rather than a row of symbols.
- Write "to" or "minus" in ranges and maths where the dash or − may be silent.
For web pages
Hide purely decorative symbols with <span aria-hidden="true">→</span>. If a symbol carries meaning, keep the meaning as text, for example a visually hidden "completed" next to a ✓, or an aria-label on an icon button. Don't use look-alike characters in names or links (look-alike characters).
Test it yourself
- Windows: Narrator (Win+Ctrl+Enter) or the free NVDA.
- Mac, iPhone and iPad: VoiceOver (Cmd+F5 on a Mac).
- Android: TalkBack in the Accessibility settings.
Related: symbols for Instagram bios and fancy text in Discord.
Frequently asked questions
Do screen readers read symbols?
Some, not all. Common signs such as @, &, %, ©, ™ and € are usually spoken. Many punctuation marks, dashes, arrows and maths symbols are skipped or turned into a pause at default settings.
How are emoji read by screen readers?
By their official names, such as "red heart" or "face with tears of joy". A row of five emoji is read as five names, which is slow to listen to.
Why is fancy text bad for accessibility?
Fancy letters are maths symbols, so screen readers read them as symbol names, letter by letter, or not at all. A name or heading in fancy text may be impossible to understand by ear.
How do I hide a decorative symbol from screen readers on a web page?
Wrap it in a span with aria-hidden="true". If the symbol carries meaning, such as a check mark for done, add the meaning as text, for example a visually hidden word.
Looking for something else? Browse 1,000+ copy-paste symbols, the full Alt Codes finder, or the emoji picker.