EAA Compliance Checklist for WordPress Sites
A Practical Guide to Meeting EU Accessibility Requirements Under the European Accessibility Act
Free · EPUB · ~25+ pages · Kindle, Apple Books & any e-reader
25+ pages
10-point checklist
14-day fix plan
Download the full EPUB — freeWhat's Inside
- Chapter 1 — Is Your Site in Scope?
- Chapter 2 — The 10-Point EAA Compliance Checklist
- Chapter 3 — Testing Tools (All Free)
- Chapter 4 — 14-Day Fix Plan
- Chapter 5 — Making EAA Compliance a Revenue Stream
- Appendix A — Quick Reference Card
- Appendix B — Sample Accessibility Statement (Template)
Read it before you download
The opening of the book, straight from the EPUB you get below — not a summary written for this page. 2 chapters in full, then the rest is free to download.
Read the first 2 chapters online
Chapter 1: Is Your Site in Scope?
The EAA applies to digital services offered in the EU. If your agency builds, hosts, or maintains any of the following, you are in scope:
| Service type | Examples | In scope? |
|---|---|---|
| E-commerce | WooCommerce stores, membership sites, booking systems | ✅ Yes |
| Public sector | Municipality sites, government services | ✅ Yes (also covered by EN 301 549) |
| Banking/Insurance | Financial service sites | ✅ Yes |
| Transport | Booking portals, schedule sites | ✅ Yes |
| Telecom | ISP portals, mobile operator sites | ✅ Yes |
| Private blogs | Personal sites, portfolio sites | ❌ No (unless commercial) |
| Brochure sites | Small business info sites | ⚠️ Likely yes if selling |
The Key Question
Ask this for every site you manage:
Does this site offer a service or product to the EU public?
If yes, it needs to be EAA-compliant. Content management systems (WordPress), e-commerce platforms (WooCommerce), and booking systems are explicitly included.
Chapter 2: The 10-Point EAA Compliance Checklist
This is the core of the guide. Each item is a concrete check that you can run on any WordPress site. Pass all 10, and the site is demonstrably EAA-compliant.
1. Color Contrast (WCAG 2.1 AA)
Requirement: Text must have a contrast ratio of at least 4.5:1 (normal text) or 3:1 (large text 18pt+ / 14pt bold+).
How to check: - Use the WebAIM Contrast Checker (webaim.org/resources/contrastchecker/) - Enter the text color hex and background color hex - Pass/fail result instantly - Testing tool: Accessibility Insights browser extension (free, Microsoft) - Testing tool: WAVE browser extension (free, WebAIM) - Quick check: Toggle "High Contrast" mode in browser dev tools
Common WordPress violations: - Light gray text on white backgrounds (most common) - Blue link text on blue-ish backgrounds - Footer text on dark backgrounds - Button text against button colors
Fix: Adjust colors in the theme customizer, or add custom CSS. If the theme is locked, create a child theme.
2. Alt Text on All Images
Requirement: Every meaningful image must have alt text. Decorative images must have alt="" (empty alt).
How to check: - Run the WAVE extension — it lists all missing alt attributes - Browser DevTools > Accessibility tab > inspect images - For WooCommerce: check product images, category images
Common violations: - Gallery images uploaded without alt text - Logo in header/ footer without alt - Social media icons without alt - Decorative spacer images without alt=""
Fix in WordPress: - Edit Media > Alternative Text field - For existing sites with hundreds of images: use a plugin like Accessibility Checker to bulk-fill missing alt text - Add alt="" for decorative images via filter functions
3. Heading Structure (h1-h6 Hierarchy)
Requirement: Headings must form a logical hierarchy. No skipped levels. No heading used purely for styling.
How to check: - Install the HeadingsMap browser extension - It shows the full heading outline — look for: - No h1 → fail - h1 → h3 (skipping h2) → fail - Multiple h1s → fail - Text styled as heading but not marked as heading → fail
Common violations: - Theme logo is a div, not an h1 - Widget headings jump from h2 to h4 - Page builders create headings at arbitrary levels - Content editors use bold text instead of heading tags
Fix: Map the site's heading outline. Rename heading levels in the theme files or use a plugin that enforces accessibility-ready heading blocks.
4. Keyboard Navigation
Requirement: Every interactive element must be reachable and operable via keyboard alone. No "keyboard trap" where focus gets stuck.
How to check: - Navigate the entire site using only Tab, Shift+Tab, Enter, and Escape - Can you reach every link, button, and form field? - Is there a visible focus indicator on every element? (blue outline or similar) - Can you open all menus, dropdowns, and modals? - Can you close them with Escape?
Common violations: - Mega menus that don't work with keyboard - Modal popups that trap focus - Custom select/dropdown elements that aren't keyboard accessible - "Skip to content" link missing or broken
Fix: - Add a "Skip to content" link as the first focusable element - Ensure all custom JavaScript components handle keyboard events - Use native HTML elements (button, a) instead of divs with click handlers
5. Screen Reader Compatibility
Requirement: Content must be readable by screen readers. This means proper ARIA labels, semantic HTML, and logical reading order.
How to check: - Turn on VoiceOver (macOS: Cmd+F5) or NVDA (Windows, free) - Navigate the page — does it make sense when read linearly? - Do images have alt text that describes the content? - Do form fields have proper labels? - Are dynamic content updates announced?
Common violations: - "Read more" links without context (should say "Read more about [page title]") - Form fields without <label> elements - Buttons with icon-only content and no aria-label - Auto-playing video/audio without pause controls
Fix: - Add descriptive link text or use aria-label - Ensure every <input> has a matching <label> - Add aria-live regions for dynamic content
6. Forms and Input Validation
Requirement: Forms must be accessible. Error messages must be clear and programmatically associated with the field.
How to check: - Submit a form with invalid data — are errors communicated clearly? - Are error messages linked to the input field via aria-describedby? - Does the focus move to the first error? - Are required fields marked with aria-required or text?
Common violations: - Inline validation messages that disappear too fast - Color-only error indicators (red border without text) - CAPTCHAs that are not accessible (reCAPTCHA v2 has audio fallback, but test it) - Confirmation messages that are not detected by screen readers
Fix: - Use inline error messages with clear text - Add aria-describedby connecting error to field - Use accessible CAPTCHA alternatives (honeypot + time-based check) - Use aria-live="polite" for confirmation messages
7. Links and Navigation
Requirement: Links must be distinguishable and meaningful. No "click here", no "read more" without context.
How to check: - Scan all links on the page — does each link text describe its destination? - Are links visually distinguishable from surrounding text (underlined or high contrast color)? - Do navigation menus have consistent structure across pages?
Common violations: - "Click here" / "Learn more" / "Read more" as link text - Color-only distinction for links (no underline) - Same link text pointing to different URLs - Broken anchor links
Fix: - Rewrite link text to describe the target page - Add text-decoration: underline to links (user preference style) - Run a link checker (W3C Link Checker or browser extension)
8. Multimedia: Video and Audio
Requirement: All pre-recorded video must have captions. Audio must have transcripts. Live video must have captions where feasible.
How to check: - Does every embedded video (YouTube, Vimeo) have captions turned on? - Do audio players have visible play/pause/volume controls? - Are auto-playing videos controllable? - Is there a transcript for podcast/audio content?
Common violations: - YouTube videos without auto-captions (auto-generated are insufficient for compliance) - Background video with no pause button - Audio content with no text alternative - Animated GIFs with no description
Fix: - Upload corrected captions to YouTube/Vimeo - Add a "Pause" button for all moving content - Provide text transcripts below audio embeds - Add aria-label to describe GIF content
9. Resize and Zoom
Requirement: Content must be readable when zoomed to 200%. No horizontal scrolling. No text clipping.
How to check: - Open the site - Zoom to 200% (Cmd++ on macOS, Ctrl++ on Windows) - Does the layout reflow or require horizontal scrolling? - Is all text readable? - Do buttons and links still have enough padding to be clickable?
Common violations: - Fixed-width containers that don't scale - Text in images that pixelate at 200% - Off-canvas menus that overflow at zoom - Tables with many columns that break layout
Fix: - Use relative units (rem, %) instead of fixed px widths - Test the theme's responsive breakpoints - For complex tables: use responsive table techniques (horizontal scroll on mobile, or stacked rows)
10. Accessibility Statement
Requirement: EAA requires a published accessibility statement on the site. This includes current compliance status, contact information, and a process for reporting issues.
How to check: - Is there an accessibility statement page? - Does it include: - Compliance status (e.g., "Partially compliant with WCAG 2.1 AA") - Contact method for accessibility issues - Description of known limitations - Expected response time (typically 5 business days)
Common violations: - No accessibility statement at all - Statement is generic boilerplate with no actual commitment - No contact form or email for reporting issues - Statement claims "fully compliant" without evidence
Fix: - Create a /accessibility-statement/ page - Use the EAA-compliant statement generator (w3.org/WAI/accessibility-statement/) - Include a contact form or dedicated email - Update when compliance status changes
Run the ten-point checklist on a real site: the free scanner checks contrast, alt text, headings and form labels, and hands you the findings.
Scan my siteThe rest of the book is free — the download button below has every chapter and every appendix, in EPUB for any e-reader.
The ten points tell you what to look for. A tool looks at the site.
The checklist, the 14-day fix plan and the sample statement in this book are all free, and nothing in them is held back. What no book can do is open the site you delivered last week and tell you which of the ten it fails today. EUComply Pro does that: it reads the site from the server and runs 33 checks — the same 15 accessibility rules, plus 18 server-side checks for GDPR and cookies, security headers and metadata — and hands you the findings as a PDF you can send to the client. $79/year, per website.