WordPress accessibility checks in Shadow
These checks look at whether people who use a keyboard or a screen reader can get around your site: skip links, focus outlines, heading order, link styling, form error messages, button wording and the viewport setting. Shadow reads your active theme and your published content to answer them.
There are 12 checks in this family. Shadow reports what it finds, and nothing is changed until you approve a fix.
In this family
- Button Text Specific
- Focus Outline Preserved
- Form Error Messaging
- Heading Structure Reviewable
- HTML Lang Attribute Correct
- Image Alt Text Process
- Link Distinction
- Navigation Accessible Name
- Reduced Motion Support
- Search Form Accessible Name
- Skip Link Present
- Viewport Meta
What each check looks at
Button Text Specific
Scans published posts and pages for button blocks and links that use vague non-descriptive text (e.g. "Click Here", "Learn More") which break screen-reader context.
Focus Outline Preserved
Scans the active theme's CSS files for rules that remove the browser focus outline on interactive elements, which prevents keyboard users from knowing which element has focus.
Form Error Messaging
Checks whether active form plugins support accessible inline error messaging that is programmatically associated with the relevant input fields.
Heading Structure Reviewable
Scans published posts and pages for heading issues: an H1 inside the post body (duplicating the title) or skipped heading levels (e.g. H2 to H4), which disrupts screen-reader document outline navigation.
HTML Lang Attribute Correct
Checks that the site language produces a valid BCP-47 tag for the HTML lang attribute so screen readers use the correct pronunciation and dictionary.
Image Alt Text Process
Checks the media library for uploaded images that have no alt text set. Images without alt text are invisible to screen readers and fail WCAG 1.1.1.
Why it matters. Checks the media library for image attachments that have no alt text stored in the _wp_attachment_image_alt post-meta field. Missing alt text on non-decorative images violates WCAG 1.1.1.
Link Distinction
Checks that links in body text remain distinguishable from surrounding text by more than color alone, as required by WCAG 1.4.1.
Navigation Accessible Name
Verifies that themes with multiple navigation landmarks provide a unique accessible name on each <nav> element via aria-label or aria-labelledby.
Why it matters. When a theme renders more than one <nav> landmark, each region must have a unique accessible name (aria-label or aria-labelledby) so screen-reader users can distinguish them. This diagnostic checks whether multiple nav menus are assigned and whether the theme templates supply the required ARIA attributes.
Reduced Motion Support
Scans the active theme for CSS animations or transitions and checks whether a prefers-reduced-motion media query is present to protect users with vestibular disorders.
Search Form Accessible Name
Checks whether the theme's search form template provides an accessible name for the search input via a label, aria-label, or aria-labelledby attribute.
Why it matters. WordPress core's default search form includes a visible <label> for the search input. Themes that override searchform.php sometimes drop the label entirely, leaving the input anonymous to screen readers. This diagnostic detects that pattern and flags it.
Skip Link Present
Checks that the active theme includes a skip link pointing to the main content area so keyboard users can bypass repeated navigation.
Why it matters. A skip link lets keyboard and screen-reader users jump past repeated navigation blocks directly to the main content. Without one, every page load forces keyboard users to tab through the entire nav before reaching the content they actually came for (WCAG 2.4.1 - Bypass Blocks).
Viewport Meta
Checks that the viewport meta tag does not disable user zoom (user-scalable=no or maximum-scale below 2), which would prevent users from enlarging text to meet WCAG 1.4.4.
Why it matters. The <meta name="viewport"> tag controls how browsers scale content on mobile devices. When it includes user-scalable=no or maximum-scale values less than 2, browser pinch-to-zoom is disabled, violating WCAG 1.4.4 (Resize Text) for users who depend on zoom to read content.
The other check families
- Code quality (7)
- Database (12)
- Design (17)
- Monitoring (10)
- Performance (63)
- Security (46)
- SEO (28)
- Settings (29)
- Health and workflows (7)
Shadow is free and runs on your own server, with no account. The source is on GitHub, and these descriptions come from it.