Every store in this survey is a real, operating brand with a real budget. These are not hobby shops. If accessibility were something companies reliably got right once they could afford to, it would show up here. It does not.
We ran an automated WCAG 2.2 A and AA scan across up to five page types per store — home, collection, product, cart, and a content page — because failures differ by template. A product page's variant selector breaks differently from a collection page's filters. Scanning only a homepage, as most free tools do, misses the templates where merchants are most exposed.
How bad, per store
Distinct issue types found, by share of stores
The typical store has five distinct kinds of problem affecting 42 elements. The worst had 12 distinct problems across 729 elements. Concentration matters more than the raw count: most stores cluster in a narrow band rather than splitting into “fine” and “catastrophic.”
| none | 2 stores | |
| 1–3 | 18 stores | |
| 4–6 | 30 stores | |
| 7–9 | 8 stores | |
| 10+ | 1 store |
What actually breaks
Ranked by share of stores affected
The failures are strikingly consistent. This is not 59 stores with 59 different problems — it is the same handful of mistakes, repeated across the ecosystem, because they are baked into themes and the components merchants install on top of them.
| What fails | Stores affected | Severity |
|---|---|---|
| Text contrast too low Text that people with low vision cannot read against its background |
73% | serious |
| Links with no readable name Icon links announced as just “link” |
53% | serious |
| Images with no alt text Product photos a screen reader cannot describe |
47% | critical |
| Tap targets too small Controls under 24×24px — hard to hit on a phone or with a motor impairment |
47% | serious |
| Buttons with no readable name Cart, search and menu buttons announced as just “button” |
34% | critical |
| Broken list markup Screen readers miscount or skip list contents |
24% | serious |
| Controls nested inside controls A button inside a link — keyboard users get stuck or skip past |
19% | serious |
| Form fields with no label Email and search inputs with nothing announced |
15% | critical |
| Misused ARIA attributes Attributes on elements that do not support them, confusing assistive tech |
15% | critical |
| Hidden things that still take focus Keyboard focus lands on elements the user cannot see or hear |
14% | serious |
The number that should change how you feel about this
Why a 400-item audit is not 400 jobs
An accessibility report that says “729 failing elements” reads like a catastrophe, and that framing is why a lot of merchants close the tab. It is also misleading. Those elements are not independent. Hundreds of contrast failures are usually a handful of colour pairs used everywhere. A header button with no label appears on every page of the site but is one fix.
Counting the distinct decisions instead of the failing elements gives a very different picture of the work:
Six decisions is a morning's work for a developer who knows the theme. That is the gap between how accessibility is usually sold — as an overwhelming, open-ended liability — and what it actually costs to fix most of it.
Two storefronts in this survey returned zero detected violations. We are reporting that because it matters twice over. It shows a clean result is achievable on ordinary Shopify infrastructure by an ordinary commerce team. And it shows the scanner can return clean — a tool that finds problems on every site it touches is not measuring anything.
What we did not do
And why
- We are not naming the stores. Accessibility lawsuits against ecommerce are at record levels, and plaintiff firms actively look for targets. A ranked list of failing storefronts would be a target list. Publishing one to sell a product that helps with lawsuits would be indefensible.
- We are not claiming this is a complete audit. Automated testing reliably catches a large share of WCAG failures but not all of them. Some criteria — whether alt text is meaningful, whether a focus order makes sense — can only be judged by a person. The real numbers are higher than what is reported here, not lower.
- We are not saying any of these stores is breaking the law. A WCAG violation is not a legal finding. We are reporting what an automated conformance scan measured, nothing more.
Method
So you can judge the numbers
- Sample
- 59 established Shopify storefronts across apparel, food and drink, beauty, homeware and footwear. One further store was excluded because it could not be loaded — an unreachable store is an inconclusive result, not a clean one.
- Sample bias
- These are not typical Shopify stores. 58 of the 59 run custom-built themes. Across Shopify as a whole, roughly 55% of stores use free themes, 28% paid themes and only 18% custom ones — so this sample is drawn almost entirely from the well-resourced end of the market. Read it as evidence about large brands, not about small merchants. We are measuring the stock themes separately for exactly this reason.
- Pages
- Up to five templates per store (home, collection, product, cart, content page), 4.7 on average.
- Engine
- axe-core 4.13 driven by headless Chromium, run against the normative WCAG 2.0, 2.1 and 2.2 A and AA rulesets.
- Excluded
- axe's “best practice” rules. They are useful advice but are not WCAG failures, and counting them would inflate every number on this page.
- Date
- September 2026. Storefronts change constantly; any individual store's result may already be different.
- Revision
- These figures were corrected on 12 September 2026. Our first run measured elements while they were still hidden behind scroll-reveal animations and counted them as contrast failures. Every store was rescanned after the fix. The headline moved from 58 of 59 to 57 of 59, and the leverage figure fell from 14.2× to 10.3× — partly from removing those false positives, partly because we also raised an internal sampling cap that had been under-counting distinct fixes. The corrected number is less flattering to us, which is the reason to publish it.
Check your own store
Curbcut runs the same scan on your storefront and returns the same thing this survey measures: not a list of failing elements, but the short list of decisions behind them, with the fix for each one already written.
It is free, and it will tell you honestly when it cannot reach something or when a problem needs a human rather than a tool.