European Accessibility Act
EAA compliance for Drupal: WCAG 2.1 AA checklist & fixes
Drupal has spent more than a decade taking accessibility seriously — the core platform passes WCAG 2.1 AA out of the box, and Olivero (the default front-end theme since Drupal 9.4) was built to a higher accessibility bar than most off-the-shelf themes. The risk on Drupal sites is rarely core; it is the ecosystem of contributed modules. Webform, Views, Paragraphs, and Layout Builder all generate user-facing markup, and each needs a quick audit before launch. Powers ~1.5% of all websites; very popular in EU public sector and higher education under EAA + WAD scope.
- Category
- Content management system
- Standard
- WCAG 2.1 Level AA via EN 301 549
- Deadline
- 28 June 2025 (EU consumer services)
- Risk for B2C
- High — public-facing, consumer-billed
What the EAA actually requires from a Drupal site
Drupal core passes WCAG 2.1 AA out of the box and its default Olivero theme was built to a high accessibility bar, so under the EAA the obligation sits almost entirely in the contributed-module ecosystem. EN 301 549 conformance forces you to audit Webform-rendered fields with implicit labels, Layout Builder regions that lack landmark roles unless you add them, and inline JS components from contrib modules (Slick Carousel and similar) with a long history of keyboard failures. The requirement is that your assembled site with its specific module and Layout Builder configuration stays AA, since core rarely is the problem.
Drupal is heavily used by EU public sector, higher education, and large institutions, so most in-scope Drupal sites are subject to both the EAA and the Web Accessibility Directive plus EN 301 549 procurement obligations. For these bodies the pressure is often statutory compliance reporting and audit findings rather than a commercial penalty, though large institutional operators still carry meaningful fine exposure. The typical Drupal user's risk profile is therefore procurement-driven and reputational, with formal accessibility statements required rather than merely advisable.
Remediation is done by a Drupal development team in theme layer YAML, Twig templates, and contrib-module configuration: add landmark role attributes to Layout Builder regions, update or patch older Webform and carousel modules, and use author-facing tools like Editoria11y and Sa11y to catch content issues. Scan both as an anonymous visitor and as a logged-in editor because Layout Builder UIs differ, and lean on Drupal core's own accessibility report under /admin/reports. This is structured, ticketed engineering work typical of institutional Drupal shops.
Top WCAG failures we see on Drupal sites
Across hundreds of Drupal scans, the same handful of issues show up over and over. None of them require ripping the theme apart — most are fixable in a few hours by someone comfortable in the platform's editor or template files.
Webform-rendered fields with implicit labels in older modules
Older Webform releases sometimes wrap inputs in <label> without the for attribute, which fails for screen readers using forms mode.
1.3.1, 3.3.2 — Level ALayout Builder regions without landmarks
Custom block regions lack <main>, <nav>, or <aside> unless you add the role explicitly.
1.3.1, 2.4.1 — Level AInline JS components from contributed modules ignoring keyboard
Slick Carousel and similar contrib modules have a long history of failing 2.1.1.
2.1.1 — Level A
Concrete code fixes for Drupal
Below are copy-paste fixes for the most common Drupal issues. They assume you have access to your theme code or the platform's custom-code injection panel. If you cannot edit code directly, share these snippets with whoever maintains the site — every one of them is a ten-minute change.
YAML config: add landmark roles to Layout Builder regions
# In your theme's layouts/*.layouts.yml
my_layout:
regions:
main:
label: 'Main content'
attributes:
role: 'main'
sidebar:
label: 'Sidebar'
attributes:
role: 'complementary'Drupal will render the role attribute on the wrapping element so assistive tech sees the landmark.
Tools and plugins worth installing first
Editoria11y — flags content-author accessibility issues inline
Sa11y — manual content checker
Drupal core "Accessibility" report under /admin/reports
How to scan a Drupal site without missing anything
Automated scanners catch about 30–40% of WCAG issues; the rest need manual review. The good news is that the 30–40% includes the most expensive issues to remediate after the fact, so an automated scan is the cheapest way to get unstuck. Run one before you change a line of theme code.
Run scans both as anonymous and as a logged-in editor — Layout Builder UIs differ.
Run a free public scan against any Drupal URL right now — no signup, results in 60 seconds.
Frequently asked questions
Is Drupal core WCAG 2.1 AA compliant?
Yes for both the admin UI and the default front-end theme (Olivero). Risk lives in contributed modules and your custom theme.
Other content management system platforms
EAA compliance for WordPress
Powers ~43% of the entire web; the largest single platform under EAA scope.
EAA compliance for Joomla
~2.5% of CMS market; common in EU education and government sites under EAA + EN 301 549.
EAA compliance for Ghost
A focused publishing CMS used by independent newsletters and media brands.
EAA compliance for Sanity
Headless CMS used by design-led teams; output rendered by your own front-end.
All EAA platform guides
Shopify, WordPress, Next.js, Webflow and more
Complete WCAG 2.1 guide
POUR principles, conformance levels, legal requirements
How-to fix recipes
Copy-paste fixes for the most common WCAG failures
Find every accessibility issue on your site in 60 seconds.
Free public scan. No card. AI-generated fixes for every issue we find.