Skip to main content
WCAGrules
Quick navigation

Services · By journey

Modal Accessibility Audit: The Pattern Everyone Gets Wrong

For the team whose interface leans on modals, drawers, and popovers, and wants the fiddliest pattern on the web verified by the people it fails.

What We Keep Finding

The modal is a small pattern with five ways to fail, and most hand-rolled implementations pick several. Focus stays behind the dialog, so the keyboard types into a page that is visually gone. Escape does nothing. The screen reader can still wander the background. Closing returns focus to nowhere. And the dialog announces without a name, so what just opened is anyone's guess.

Here is the part that surprises teams. Four of those five come free. A native dialog element opened with showModal() moves focus in, contains the tab sequence, handles Escape, makes the background inert, and returns focus to whatever opened it. What is left for you is where focus lands first and what the dialog is called. Most of what we find is a div wearing a dialog's clothes, rebuilding four solved problems and getting three of them wrong.

The other half of this door is the thing that is not a modal, and it needs the opposite tests. A popover, a coach mark, a non-modal drawer. For those, containing Tab inside is a failure rather than a pass, because the whole point is that the page behind stays reachable. W3C says plainly that constraining focus should be used cautiously, since it can leave keyboard users worse off than mouse users. So the first question on every one of these is whether it should be modal at all, and the checks follow the answer rather than leading it.

One correction while we are here, because it produces false findings constantly. The Level AA rule about a focused control being hidden says "not entirely hidden". A popover half-covering the field you just tabbed to passes. The version that fails on any covering at all is Level AAA. Reports that state the AAA rule under the AA number are the reason somebody, somewhere, is rebuilding a component that was fine.

What We Check

  • Decide first whether each one should be modal, because the right tests flip on the answer
  • Check whether it is a real dialog element or a div in costume
  • Open every dialog and verify focus moves in and the dialog has an accurate name
  • For modals, test containment both ways, so Tab cycles inside and Escape leaves
  • For non-modals, test the opposite, that Tab continues into the page behind
  • Check the background is inert to screen readers while a modal is open
  • Verify focus returns to the trigger on close

What You Get

Every service on this site runs the same three-pass engine: an automated scan, an expert review of all 55 WCAG 2.2 A and AA rules, and a hands-on session with a professional blind screen-reader user. You get one report with every finding screenshotted, ranked by user impact, and linked to its fix. Your team fixes, we verify: the re-audit is half price within 3 months.

The format is not a mystery either. Read the sample report before you spend anything.

The Honest Limit

One honest limit, and a word on how this gets counted. This door is component-scoped by design, so the dialogs get fixed properly and the pages around them are the wider audit's job. Pairing the two is the usual path. On counting, a dialog is a state rather than a page. A product with a login modal, a delete confirmation, a cookie banner and a drawer has four dialogs across maybe two addresses, so list the dialogs when you pick your pages rather than the URLs they live on. And the free scan is no use to you here at all, because it sees every dialog closed.

What It Costs

Rapid Audit: $499, up to 10 pages you pick, report in 5 business days. Standard Audit: $1,499, up to 25 pages in 10 business days. Flat rates, no discovery calls, and a real blind screen-reader user on every engagement. Pick your pages. We bring the humans.

Worth Reading Next

Related on this site

Guides, checklists, tools, and terms that go with this service.

More in By journey

Go somewhere useful

Find tools, resources and your workspace.

29 destinations