Why Craft CMS accessibility matters in the EU
Craft CMS gives developers full control over markup, which means accessibility is entirely a function of how your templates were written. There is no theme layer to blame: Twig templates, entry fields and plugin output decide everything. Craft is popular with studios across Europe building marketing and e-commerce sites that fall under the EAA from June 2025.What gets checked
16 automated rules covering images, links, forms, headings, language, viewport, contrast, ARIA misuse, and more — mapped to real WCAG success criteria.
Instant results
Paste your URL, get a letter grade with every issue listed by severity. No account, no email, no waiting for an audit report.
Built for the EAA
The rule set targets what EU enforcement and enterprise procurement actually look at: WCAG 2.1 AA basics you can document today.
How to check your Craft CMS site
- Open the free EAA/WCAG scanner.
- Paste your Craft CMS URL — any published page: homepage, a product page, or a category listing.
- Read your grade. Each finding shows the exact element and why it matters, so fixes are concrete, not vague advice.
- Fix and re-scan. Most image-alt, heading, and form-label issues are fixed right inside Craft CMS's editor or theme settings. Re-run the scan to confirm.
- Copy the shareable link from the result page — useful when a client or colleague needs to see the findings.
Common fixes in Craft CMS
When your scan flags a failing rule, here is where to fix it:
| Issue | Where to fix in Craft CMS |
|---|---|
| Missing alt text on assets | Craft assets have an Alt Text field only if you define one — add an "altText" field to the asset volume and require it, then output {{ asset.altText }} in templates. |
| Low contrast text | Fix in your CSS/Tailwind config. If you use utility classes, audit the colour tokens against WCAG ratios once instead of case by case. |
| Missing heading structure | Headings come straight from your Twig templates. Enforce one H1 per template and use semantic H2/H3 in shared includes (cards, sections). |
| Missing form labels | Whatever form plugin or hand-written form you use, every input needs a visible |
| Generic link text ("read more", "click here") | In card/list templates, extend the link with visually hidden context ({{ entry.title }}) or an aria-label so screen-reader users hear what the link opens. |
| Missing page language | Set lang on the tag from the site locale — for multi-site setups output the current site's language dynamically. |
| Focus styles removed by CSS resets | CSS resets commonly strip outline. Restore :focus-visible styles globally in your stylesheet. |
Craft CMS-specific tools & resources
Craft CMS ships with useful foundations — these approaches take you further:
Lighthouse + axe DevTools
Both free; run against rendered templates to catch contrast, labels and ARIA mistakes.
Template linting in code review
Because markup is fully developer-controlled, catching issues at PR time is cheaper than scanning later.
Asset field requirements
Make the alt-text field required in the asset volume settings so editors cannot publish images without it.
Maintaining EAA compliance on Craft CMS
Accessibility is not a one-time fix — sites change through content edits, theme updates and new pages. Keep compliance sustainable:
- Re-check templates whenever a plugin changes its front-end output.
- Keep alt text mandatory in the CMS so new content stays compliant.
- Re-run the scan after each release — template refactors are the top cause of regressions.
Related reading
Dig deeper into the compliance work that comes after the scan:
Go deeper
Automated scanning catches roughly a third of accessibility issues — but it catches the ones that are cheapest to fix first. For the complete picture, our e-book covers the full checklist plus a 14-day fix plan.