How I run a WordPress accessibility audit in an afternoon
My practical, repeatable process for auditing a WordPress or Elementor site against WCAG 2.2, plus the issues I find on almost every site.
- Accessibility
- WordPress
- WCAG
- 3 min read
Most accessibility problems I find aren't exotic. They're the same dozen issues, repeated across templates. An afternoon is enough to find most of them, if you go in with a plan.
Here is mine.
1. Automated scan (20 minutes)
I run axe DevTools and WAVE on five representative templates: home, a content page, an archive, a single post or product, and anything with a form.
Automated tools catch roughly a third of issues, so I treat their results as a list of leads. A green Lighthouse score only tells me where to start looking.
2. Keyboard only (30 minutes)
I unplug the mouse and tab through each template. I'm checking for:
- A skip link that appears on focus and actually moves focus
- A visible focus indicator on every interactive element. Elementor themes often remove
outlineglobally. - Logical order. Off-canvas menus that stay in the tab order while closed are the classic failure.
- No traps. Modals and popups must close on Esc and return focus to the trigger.
3. Screen reader pass (45 minutes)
NVDA with Firefox on Windows, and VoiceOver with Safari on macOS and iOS. I navigate by headings, then landmarks, then links, because that's how many screen-reader users skim a page.
The WordPress-specific issues I see constantly:
- Headings picked for their looks. An
h2used because it's the "right size". Headings are structure; size is CSS. - Icon-only buttons with no name. Social icons, search toggles and hamburger menus are announced as just "button".
- "Read more" × 12. Archive pages full of identical link text. Add the post title with visually hidden text.
- Sliders that auto-advance with no pause control (WCAG 2.2.2).
- Images of text in hero banners, with no alternative at all.
4. Zoom, reflow and motion (20 minutes)
- Zoom to 200% and 400% (WCAG 1.4.10 Reflow). No horizontal scrolling at 320 CSS pixels wide.
- Turn on reduced motion in the OS. Parallax and entrance animations should calm down.
- Check text spacing with a bookmarklet. Fixed-height Elementor containers often clip text.
5. Forms (30 minutes)
Contact Form 7, WPForms, Gravity Forms and WooCommerce checkout. Every field needs a programmatic label, not placeholder text. Errors must be announced and linked to their field, and required fields have to say they are required in text, not only with a red asterisk.
6. Write it up so it gets fixed
An audit nobody acts on is just a PDF. For each issue I write:
| Field | Example |
|---|---|
| What | Mobile menu button has no accessible name |
| Where | Header template, every page |
| Who it affects | Screen reader and voice control users |
| WCAG | 4.1.2 Name, Role, Value (A) |
| Fix | Add aria-label="Menu" and aria-expanded |
| Effort | 10 minutes |
Sorting by impact ÷ effort gives the team a list of quick wins they can ship that week, which builds the momentum for the harder fixes.
Want me to audit your site, or run this as a workshop for your team? Email me.