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

Gray on Gray2.1:1 - Fails
Light Gray on Dark7.5:1 - Passes
Black on White21:1 - Excellent

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 name
  • aria-labelledby - References another element as the label
  • aria-describedby - References a description
  • aria-hidden - Hides from assistive technologies
  • aria-expanded - Indicates expandable state
  • aria-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 Enter or Space
  • Dropdowns can be navigated with arrow keys
  • Modals trap focus and can be closed with Escape

Quick Wins for Accessibility

  1. Add alt text to all meaningful images
  2. Ensure color contrast ratio is at least 4.5:1
  3. Label all form inputs
  4. Use semantic HTML elements (<button>, <nav>, <main>)
  5. 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)