Screen Reader
A screen reader is assistive technology software that interprets what’s displayed on a computer screen and converts it to speech (text-to-speech) or braille output. Screen readers enable people who are blind, have low vision, or have reading difficulties to use computers and access digital content.
How Screen Readers Work
Screen readers analyze the Document Object Model (DOM) and accessibility tree to understand page structure and content. They then:
- Convert text to synthesized speech
- Announce interactive elements and their states
- Provide navigation shortcuts
- Communicate visual information through audio cues
Popular Screen Readers
Desktop
- NVDA (Windows) - Free, open-source
- JAWS (Windows) - Commercial, widely used in enterprise
- VoiceOver (macOS/iOS) - Built into Apple devices
- Narrator (Windows) - Built into Windows
Mobile
- VoiceOver (iOS) - Native iOS screen reader
- TalkBack (Android) - Native Android screen reader
- Voice Assistant (Samsung devices)
Key Features
Navigation Modes
- Browse Mode: Read content linearly
- Focus Mode: Interact with forms and controls
- Table Mode: Navigate data tables cell by cell
- Scan Mode: Quick navigation in Windows
Shortcuts & Commands
Screen readers provide keyboard shortcuts for:
- Jumping between headings (H key)
- Moving between landmarks (D key)
- Listing all links (Insert + F7 in NVDA)
- Finding specific text
- Reading from current position
Web Development Considerations
Semantic HTML
Use proper HTML elements to convey meaning:
<!-- Good -->
<button>Submit</button>
<nav>...</nav>
<h1>Page Title</h1>
<!-- Bad -->
<div onclick="submit()">Submit</div>
<div class="navigation">...</div>
<div class="big-text">Page Title</div>
ARIA Labels and Descriptions
Provide context when visual cues aren’t enough:
<button aria-label="Close dialog">Ă—</button>
<input aria-describedby="password-help">
<p id="password-help">Must be at least 8 characters</p>
Alternative Text
Describe images meaningfully:
<!-- Informative image -->
<img src="chart.png" alt="Sales increased 25% in Q4">
<!-- Decorative image -->
<img src="divider.png" alt="" role="presentation">
Focus Management
Ensure logical tab order and visible focus indicators:
:focus {
outline: 2px solid #0066cc;
outline-offset: 2px;
}
/* Show focus ring only when appropriate */
:focus-visible {
outline: 2px solid #0066cc;
outline-offset: 2px;
}
Testing with Screen Readers
Quick Testing
- Enable screen reader (Cmd+F5 for VoiceOver on Mac)
- Navigate with keyboard only - no mouse
- Listen to content - does it make sense?
- Check announcements - are states and changes announced?
- Test forms - can you complete them?
Common Issues to Check
- Missing labels on form fields
- Buttons without accessible names
- Images without alt text
- Dynamic content changes not announced
- Complex widgets lacking ARIA attributes
- Illogical heading hierarchy
Screen Reader Usage Statistics
According to WebAIM’s Screen Reader User Survey:
- JAWS: 53.7% (Windows)
- NVDA: 30.7% (Windows)
- VoiceOver: 6.5% (macOS)
- VoiceOver iOS: 6.1% (Mobile)
Best Practices
Do’s ✅
- Test with real screen readers, not just automated tools
- Use semantic HTML before adding ARIA
- Provide skip links for repetitive content
- Ensure all interactive elements are keyboard accessible
- Announce dynamic content changes with live regions
- Write descriptive link text (“Read more about pricing” not “Click here”)
Don’ts ❌
- Don’t rely solely on color to convey information
- Avoid using placeholder text as labels
- Don’t auto-play media with sound
- Never trap keyboard focus (except in modals)
- Don’t use ARIA to fix bad HTML
Common Announcements
Understanding what screen readers announce helps design better interfaces:
Element | Typical Announcement |
---|---|
<button> | ”Submit, button” |
<a href> | ”Contact us, link” |
<h1> | ”Heading level 1, Welcome” |
<nav> | ”Navigation landmark” |
aria-expanded="false" | ”collapsed” |
aria-live="polite" | Announces changes |
disabled | ”dimmed” or “disabled” |
Related Concepts
- Keyboard Navigation - Essential for screen reader users
- ARIA Attributes - Enhance screen reader experience
- Live Regions - Announce dynamic changes
- Semantic HTML - Foundation for screen reader compatibility
Resources
Key Takeaways
- Screen readers are essential for many users to access web content
- Semantic HTML is the foundation of screen reader accessibility
- Test with actual screen readers, not just automated tools
- Consider screen reader users in every design decision
- Small improvements can make huge differences in user experience
Stay updated with new patterns
Get notified when new UX patterns are added to the collection.