A Section 508 review asks one question of every finding — who is responsible for fixing it — and a Drupal theme can only answer about half the list, because the rest belongs to your content, your contributed modules and whoever signs the conformance report.
I write and maintain Drupal themes, and I receive this checklist from public-sector buyers and the agencies selling to them. What I can usefully offer is not a compliance claim but the split: how responsibility divides, the eight checks that genuinely sit at the theme layer, and what my own theme measures against each.
What the standards ask of, and what they ask it about
Section 508 of the Rehabilitation Act governs technology bought and used by United States federal agencies, and it reaches suppliers through procurement rather than directly. The refreshed standards incorporate the WCAG success criteria by reference rather than restating them. In European public procurement the equivalent document is EN 301 549, which does the same thing.
The detail that decides this whole conversation: those criteria are written about a delivered web page. Not about a theme, not about a CMS, not about a component. An image needs a text alternative, a video needs captions, a form field needs a programmatically associated label. A theme supplies none of those things — it supplies the frame they arrive in. Which is why no theme, mine included, can be bought as a route to conformance, and why a buyer who asks "is this theme 508 compliant" is asking a question that has no true answer in either direction.
Who owns each failure
| The finding | Who can actually fix it | What a theme contributes |
|---|---|---|
| Missing or wrong page landmarks | Theme | All of it |
| Broken heading outline | Theme and content authors together | The frame; authors supply the rest |
| Status messages not announced | Theme | All of it |
| Navigation not keyboard operable | Theme | All of it |
| No visible focus indicator | Theme, plus whoever chose the palette | Most of it |
| Insufficient text contrast | Whoever chose the palette and wrote the content | Defaults only |
| Images without text alternatives | Content authors | Nothing |
| Videos without captions | Content authors | Nothing |
| Form labels and error messages | The module that built the form | Styling only |
| Untagged PDFs and attachments | Whoever produced the document | Nothing |
Print that, and the procurement conversation stops being an argument about a product and becomes a list of owners. Nobody can buy their way out of the rows in the middle.
The eight checks that really are the theme's job
1. Skip links
Solo's html.html.twig emits up to four: skip to header, to main navigation, to main content and to footer, each behind its own setting, and all four are switched on in the shipped defaults. Each one carries the visually-hidden focusable classes, and the theme's skip-link stylesheet makes the link visible and full width on focus. Ask any theme to show you the markup, not the setting.
2. Landmarks
Solo exposes five optional ARIA landmark toggles — for the top, bottom, footer, welcome and highlighted containers — and every one of them defaults to off. That is deliberate. Wrapping every container on a page in a labelled region produces landmark noise that makes navigation worse, not better. A buyer should read "opt-in landmarks" as a considered answer rather than a missing feature.
3. Status messages
The theme overrides status-messages.html.twig and sets, per message type, a role of alert or status, a matching aria-live value, aria-atomic, aria-relevant and an aria-labelledby pointing at a visually hidden heading. The precise gap this closes in Drupal core is measured in what core does with ARIA live regions.
4. Keyboard operation
The menu templates set role="menubar" on the top level and role="menu" on submenus, with aria-orientation, aria-haspopup and aria-expanded maintained alongside, and there is a per-menu setting that switches on a keyboard-navigation behaviour with its own stylesheet. One honest caveat from the author: adopting the menubar role commits a menu to the full arrow-key interaction pattern, and a site navigation that is really a list of links is often better served with no role at all. Test your menu with a keyboard before you attest to this row.
5. Visible focus
This is the check I would run first on any theme, including mine. Measured across the theme's CSS, 21 declarations remove an outline with outline: none or outline: 0, spread over eight stylesheets — one of which is the bundled third-party framework — against several hundred rules that mention :focus. Removing an outline is legitimate only where something visible replaces it. That ratio is not a verdict, it is a reason to tab through your own site on your own palette and look.
6. Contrast
Not answerable by a theme. Solo ships 50 predefined colour schemes as stylesheets, and which one you pick, what you overlay on it and what colour your images are decide whether text passes. Run a contrast check against your actual pages.
7. Heading structure
Partly the theme, partly core, and one specific Drupal behaviour surprises nearly everyone: hidden block titles are not always removed from the markup, which can put an <h2> above your <h1> in the source. That mechanism is covered in what core renders for a hidden block title, and it is a standard audit finding on otherwise careful sites.
8. Reduced motion
prefers-reduced-motion appears in four of the theme's component stylesheets, covering the animated components it ships. Anything you add afterwards is not covered by that and needs its own media query.
Four of those eight are things a theme can be held to. If your build has to pass a review and you would rather have the theme layer done and evidenced than argued about, that is what a Drupal consulting engagement is for.
What a buyer should actually ask for
Not a compliance claim about a theme. Three artefacts about the site:
- A conformance report for the delivered site, listing the criteria assessed. The widely used format is an Accessibility Conformance Report, commonly produced on the VPAT template.
- The test method — which pages were tested, with what assistive technology, on what date, by whom. A report that does not say is not evidence.
- The exceptions, named, with remediation dates. A report with no exceptions at all usually means nobody tested; real sites have findings.
As a supplier, the correct answer to "is your theme compliant" is a short one: the theme handles landmarks, skip links, message semantics and keyboard navigation; conformance is a property of the finished site and I will help you evidence it. That answer wins work with buyers who know the subject, and it is also the only one that is true.
Common questions
Can a theme make my site Section 508 conformant?
No. It can make the frame correct and it can stop introducing problems. Everything in the content layer remains yours, and that is where most real findings are.
We are not a US federal agency. Does any of this apply?
Increasingly the same artefacts are requested in commercial and European procurement, where EN 301 549 plays the same role. Whether it applies to your organisation as a legal obligation is a question for your counsel, not for a theme author.
What does remediation typically cost?
Focus states, heading levels and landmark corrections are usually hours of work. A navigation pattern that has to be rebuilt, or an editorial backlog of images with no text alternatives, is days or weeks — and the second one is not a development problem at all.
Does Solo claim conformance?
No, and it never has on my watch. A theme that advertises guaranteed conformance is telling you something about the rest of its claims.
Where to start
Take the ownership table, put a name against every row for your project, and you will find two or three rows with no owner at all. Those are the rows that fail the audit. Fix the ownership before you fix the markup.
If you have a review coming and want the theme-layer rows evidenced rather than asserted — with the test method written down so it survives a procurement question — send me the site and I will tell you which rows are already fine before you commission anything.