WCAG accessibility audit for Drupal
Why Drupal causes accessibility issues
Drupal is known for its commitment to accessibility — it is one of the few CMSs to have accessibility standards in its contribution guidelines. Yet Drupal sites in production present significant problems. The WYSIWYG content editor (CKEditor) allows editors to create inaccessible content: images without alt, data tables without headers, inconsistent heading structure, links with generic labels ('click here', 'learn more'). Contributed modules (Views, Paragraphs, Webform, Media) add powerful features but their integration often creates accessibility conflicts: a carousel module conflicts with the theme's focus management, a faceted search module generates filters without ARIA. Drupal's permission and role system can hide certain content from automated tests. Custom themes built on base themes (Barrio, Olivero) do not automatically inherit all the base theme's accessibility if templates are overridden.
Common issues on Drupal
Inaccessible editorial content via CKEditor
WCAG 1.1.1Drupal editors use CKEditor to create content, but the editor does not enforce accessibility best practices. Images are inserted without relevant alt text. Data tables have no headers (th). Headings are used for style (h3 everywhere) instead of logical structure. Links have generic labels. Each published page accumulates editorial non-conformities.
Contributed modules creating accessibility conflicts
WCAG 1.3.1Drupal modules (Views, Paragraphs, Layout Builder, Webform) are developed independently and their combination creates conflicts. Views generates lists without ARIA roles. Paragraphs nests components whose heading hierarchy does not integrate with the document. Layout Builder creates regions without ARIA landmarks. Each module adds HTML that can break the page's overall accessibility structure.
Heading structure broken by blocks and regions
WCAG 1.3.1Drupal displays content in blocks distributed across regions (sidebar, header, footer). Each block has its own heading (h2, h3) that inserts into the page independently of the main content hierarchy. The result is an inconsistent heading structure: sidebar h2s are interspersed between main content h2s, block h3s appear before content h2s.
Webform forms without accessible validation
WCAG 3.3.1Drupal's Webform module allows creating complex forms, but error handling is not always accessible. Error messages display at the top of the page without being linked to relevant fields via aria-describedby. Focus is not moved to the first field in error. Required fields are not always marked with aria-required. Conditional fields appear without announcement.
Test your Drupal site
Discover the WCAG non-conformities of your Drupal site in 5 minutes. Free, no commitment.
Run the free auditWhat Scrutia detects on Drupal
Scrutia analyzes the final rendering of your Drupal site in a real browser, including content generated by CKEditor, Views lists, Paragraphs components, and Webform forms. Our engine detects images without alt added by editors, heading structures broken by blocks, modules creating ARIA conflicts, and forms with inaccessible validation. We test complete keyboard navigation and verify that each region, block, and component is correctly identified in the accessibility tree.
Frequently Asked Questions — Drupal
Does Scrutia account for the Olivero theme (Drupal 10 default theme)?
Are editorial (content) non-conformities detected?
How do I fix problems from contributed Drupal modules?
Audit your Drupal site now
106 RGAA criteria tested in 5 minutes. Free score, full report with code fixes for €49.
Test my Drupal site