Lighthouse Accessibility Score
Making your website usable by everyone, including people with disabilities.
What is the Accessibility Score?
The Lighthouse Accessibility score measures how accessible your page is to users with disabilities. It runs automated checks based on the Web Content Accessibility Guidelines (WCAG) and flags common issues that prevent users from accessing your content.
Important: Lighthouse can only test a subset of accessibility issues. A perfect 100 score doesn't guarantee full accessibility. Manual testing with assistive technologies is essential.
Accessibility Score Thresholds
90-100
Good
50-89
Needs Improvement
0-49
Poor
Accessibility Audit Categories
Lighthouse groups accessibility audits into these categories:
Navigation
Can users navigate the page using only a keyboard? Are skip links provided? Is focus order logical?
ARIA
Are ARIA attributes used correctly? Do custom components have proper roles and states for assistive technologies?
Names & Labels
Do all interactive elements have accessible names? Are form inputs labeled? Do images have alt text?
Contrast
Is there sufficient color contrast between text and backgrounds for users with low vision or color blindness?
Tables & Lists
Are tables properly structured with headers? Are lists marked up correctly?
Common Accessibility Issues
1. Missing Alt Text on Images
Screen readers cannot describe images without alt text. Every meaningful image needs descriptive alt text.
Fix: Add descriptive alt text
<!-- Bad: No alt text --> <img src="hero.jpg"> <!-- Good: Descriptive alt text --> <img src="hero.jpg" alt="Developer coding on laptop in modern office"> <!-- Good: Decorative image (empty alt) --> <img src="decoration.svg" alt="">
2. Insufficient Color Contrast
WCAG requires a contrast ratio of at least 4.5:1 for normal text and 3:1 for large text.
Examples of contrast ratios
3. Missing Form Labels
Form inputs must have associated labels so screen reader users know what to enter.
Fix: Associate labels with inputs
<!-- Bad: No label association --> <input type="email" placeholder="Email"> <!-- Good: Explicit label --> <label for="email">Email address</label> <input type="email" id="email"> <!-- Good: Implicit label --> <label> Email address <input type="email"> </label>
4. Non-Descriptive Link Text
Links should describe where they go. "Click here" or "Read more" doesn't help users understand the link's purpose.
Fix: Use descriptive link text
<!-- Bad: Non-descriptive --> <a href="/pricing">Click here</a> <a href="/docs">Read more</a> <!-- Good: Descriptive text --> <a href="/pricing">View pricing plans</a> <a href="/docs">Read the documentation</a>
5. Missing Keyboard Focus Indicators
Users navigating with keyboards need to see which element is currently focused. Never remove focus outlines without providing an alternative.
Fix: Provide visible focus styles
/* Bad: Removing focus indicator */ :focus { outline: none; } /* Good: Custom focus style */ :focus { outline: none; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.5); } /* Good: Focus-visible for modern browsers */ :focus-visible { outline: 2px solid #3b82f6; outline-offset: 2px; }
ARIA Best Practices
ARIA (Accessible Rich Internet Applications) helps make dynamic content accessible. However, it's often misused. Follow these principles:
Rule #1: Don't Use ARIA If You Don't Need It
Native HTML elements have built-in accessibility. A <button> is better than <div role="button">.
Rule #2: Use Semantic HTML First
Use <nav>, <main>,<header>, <footer>instead of divs with ARIA roles.
Common ARIA Attributes
aria-label- Provides an accessible namearia-labelledby- References another element as the labelaria-describedby- References a descriptionaria-hidden- Hides from assistive technologiesaria-expanded- Indicates expandable statearia-live- Announces dynamic content changes
Keyboard Navigation Checklist
- ✓All interactive elements are reachable with
Tab - ✓Focus order follows visual/logical order
- ✓Focus is never trapped (except in modals)
- ✓Skip links allow bypassing repetitive content
- ✓Buttons can be activated with
EnterorSpace - ✓Dropdowns can be navigated with arrow keys
- ✓Modals trap focus and can be closed with
Escape
Quick Wins for Accessibility
- Add alt text to all meaningful images
- Ensure color contrast ratio is at least 4.5:1
- Label all form inputs
- Use semantic HTML elements (
<button>,<nav>,<main>) - Don't remove focus outlines - style them instead
Testing Tools
- axe DevTools browser extension
- WAVE Web Accessibility Evaluation Tool
- Screen readers: NVDA (Windows), VoiceOver (Mac/iOS), TalkBack (Android)