Accessibility Module¶
Module ID: accessibility | Type: Core (always enabled) | Weight: 30%
The Accessibility module analyses HTML for key WCAG compliance signals including alt text, form labels, landmarks, ARIA roles, skip links, heading hierarchy, and focus management.
What It Checks¶
| Check | What It Looks For |
|---|---|
| Image alt text | All <img> tags have alt attributes; decorative images use alt="" |
| Form labels | Every form input has an associated <label> or aria-label |
| Language attribute | lang attribute on the <html> element |
| Landmark regions | <main>, <nav>, <header>, <footer> present |
| Skip link | A skip-to-content link as the first focusable element |
| Heading hierarchy | No skipped heading levels (H1 -> H3 without H2) |
| Empty headings | Headings with no text content |
| ARIA roles | Valid ARIA roles and proper usage patterns |
| Tabindex abuse | No positive tabindex values (disrupts natural tab order) |
| Focus visibility | Checks for outline: none without alternative focus styles |
| Motion preferences | prefers-reduced-motion media query support |
| Zoom blocking | No user-scalable=no or maximum-scale=1 in viewport meta |
Scoring Breakdown¶
| Criterion | Deduction | Condition |
|---|---|---|
| Images missing alt | -3 per image | Up to -15 total |
| Form inputs missing labels | -5 per input | Up to -15 total |
| Missing lang attribute | -5 | No lang on html element |
| No landmark regions | -10 | No main, nav, header, or footer |
| Missing skip link | -5 | No skip-to-content link |
| Broken heading hierarchy | -5 | Skipped heading levels |
| Empty headings | -3 per heading | Up to -9 total |
| Positive tabindex | -5 | Any element with tabindex > 0 |
| Focus styles removed | -5 | outline: none without replacement |
| Zoom blocked | -10 | user-scalable=no in viewport |
Auto-Detection¶
This module is always enabled. Accessibility is a core concern for every website.
Example Findings¶
P0 CRITICAL: Zoom disabled via viewport meta
The viewport meta tag sets user-scalable=no, preventing users from
zooming. This is a WCAG 2.1 Level AA failure (1.4.4 Resize Text).
Fix: Remove user-scalable=no and maximum-scale=1 from the viewport meta.
Effort: Low
P1 HIGH: 5 images missing alt text
Screen readers cannot describe these images to visually impaired users.
Fix: Add descriptive alt text to each image, or alt="" for decorative images.
Effort: Low
P2 MEDIUM: No skip navigation link
Keyboard users must tab through the entire navigation on every page.
Fix: Add <a href="#main-content" class="skip-link">Skip to content</a>
as the first element in <body>.
Effort: Low
Related¶
- Performance module -- often paired in the accessibility profile