Original measurement · 2–3 August 2026
99% of European online stores fail WCAG 2.1 AA. We measured 290 of them.
Nobody had published a conformance measurement of European e-commerce, so we ran one. 290 live Shopify stores across six EU markets, each tested on its home page and one real product page, on desktop and on mobile. 287 failed.
Everything below is reproducible. The tool is open source, the stores are public, the date is fixed. We publish the limitations in the same detail as the results, because a measurement you cannot criticise is not a measurement.
Headline results
99.0%of stores failed WCAG 2.1 AA — 287 of 290
32broken elements on the median store
85.2%had ten or more broken elements
728on the worst store in the sample
Method
We assembled a list of live Shopify stores selling into Germany, France, the Netherlands, Spain, Ireland and Sweden from a public directory of e-commerce sites, then verified each one was Shopify by inspecting its storefront HTML.
Each store was loaded with headless Chromium driven by Playwright and evaluated with
axe-core against four rule sets: wcag2a, wcag2aa,
wcag21a and wcag21aa. We tested the home page and
one real product page, resolved from the store’s own catalogue rather than guessed.
Every store was tested twice: at 1366×900 and at 390×844. The figures reported here are the union of both — for each store, the worst result of the two.
| Step | Stores |
|---|---|
| Attempted | 305 |
| Loaded successfully | 300 |
| Confirmed Shopify and analysed | 290 |
What counts as a “broken element”
One individual element that fails one WCAG 2.1 AA success criterion — a single button with no accessible name, one image with no text alternative, one piece of text without enough contrast against its background. A store with 32 broken elements has 32 specific things to correct, each with an address in the code. We count elements, not rule types, because that is what a person actually has to fix.
Results
| Market | Stores | Mean | Median | 10+ broken |
|---|---|---|---|---|
| Sweden | 26 | 57.2 | 32 | 77% |
| Germany | 77 | 52.8 | 30 | 87% |
| France | 50 | 51.4 | 38 | 84% |
| Netherlands | 50 | 44.6 | 34 | 80% |
| Spain | 50 | 39.3 | 31 | 86% |
| Ireland | 37 | 37.7 | 23 | 95% |
| axe-core rule | In plain language | Share |
|---|---|---|
| color-contrast | Text unreadable against its background | 82.1% |
| link-name | Links with no accessible name | 56.6% |
| image-alt | Images with no text alternative | 42.4% |
| scrollable-region-focusable | Scrolling areas a keyboard cannot reach | 42.4% |
| button-name | Buttons with no name, including “add to cart” | 32.8% |
| aria-hidden-focus | Hidden from screen readers but still focusable | 26.2% |
| list | Lists a screen reader cannot announce | 19.0% |
| aria-allowed-attr | ARIA attributes not permitted on that element | 18.6% |
| label | Form fields with no label | 17.6% |
| meta-viewport | Zoom disabled on mobile | 14.1% |
Mean broken elements across the whole sample: 47.3. Median: 32. Maximum: 728. Stores with at least one critical or serious violation: 98.6%. Mean distinct violation types per store: 4.6.
The finding we did not expect: one viewport is not enough
Our first pass tested desktop only. When we repeated it on mobile across the first four markets, 22.8% of stores turned out to be worse on mobile than on desktop — scrollable tables, carousels and menus that acquire overflow once the layout collapses and become unreachable by keyboard.
| Measure | Desktop only | Mobile only | Both |
|---|---|---|---|
| Broken elements — mean | 42.1 | 32.4 | 43.4 |
| Broken elements — median | 28 | 20 | 30 |
| scrollable-region-focusable | 27.0% | 37.3% | 42.4% |
| button-name | 21.4% | 25.3% | 32.8% |
We learned this the hard way, twice in one night: both this site and our parent agency’s site passed a desktop-only audit with zero violations, and both had real failures that appeared only at 390 pixels. A single-viewport audit reports a store cleaner than it is — and it errs in the direction that flatters whoever ran it.
It is not the theme. It is what was built on top of it.
We recorded the Shopify theme each store reported. Dawn appeared in 3.1% of stores, and the five most common themes together covered 8.2%. Almost nobody runs a catalogue theme: they run a renamed, forked, agency-modified version of one. Real theme strings from the sample:
| Reported theme string |
|---|
POGS - 3.0.11 - Adjustable heading image position |
2.5 | Dwell (A gosto da blanky) | 300726 |
Sleek | Van Rozen Utrecht ( OPTIMIZED ) |
bourgogne-theme/prd/NL |
Ace 4.7 - With Working Membership |
This matters for anyone selling remediation: the Shopify Theme Store requires a minimum Lighthouse accessibility score of 90 to publish, and Shopify publishes accessibility conformance reports for its own themes. The damage is concentrated in customisation, apps and content — not in the base theme.
And nobody had installed anything
Zero of the 290 stores had an accessibility overlay or any other accessibility product installed — not accessiBe, not UserWay, not AudioEye, not EqualWeb. In this market the shortcut has not been bought, which is worth knowing given that in 2025 the US Federal Trade Commission imposed a $1,000,000 order against an overlay vendor over conformance claims, and more than 800 companies running overlays were sued anyway.
Limitations
These are the reasons a careful reader should discount our numbers. We would rather state them than have them found.
- Automated testing finds roughly 30–40% of accessibility problems. Everything here is machine-detectable. The real figures are worse, not better: we did not test whether a person using a screen reader can select a variant or complete a purchase, which is where most of the harm lives.
- The sample is not random. Stores were drawn from a public directory, not from a census of all EU e-commerce. It skews toward stores that are indexed and active. We make no claim of statistical representativeness.
- Two pages per store. Home plus one product page. A full-site audit would find more. Whole categories of failure — checkout flows behind authentication, PDFs, video captions — were never touched.
- One moment in time. 2–3 August 2026. A store that installs an app next week will differ. Accessibility decays; a single measurement is a photograph, not a trend.
- Market sizes are uneven. Germany contributed 77 stores, Sweden 26. Per-market medians from smaller samples carry wider uncertainty, and we have not computed confidence intervals.
- We sell remediation. We have a commercial interest in these numbers being alarming. That is precisely why the method is published in enough detail for you to run it yourself and check.
Reproduce it
Every component is open source or public. Load a store with headless Chromium, run axe-core against
wcag2a, wcag2aa, wcag21a and wcag21aa, at 1366×900
and at 390×844, on the home page and one product page, and count the failing nodes. That is the whole method.
Two implementation notes that cost us real findings. Emulate prefers-reduced-motion: reduce
before scanning: sites with scroll-reveal animations hold content at opacity: 0 until an
IntersectionObserver fires, and a scanner will not see any of it. And scroll the full page before
evaluating, for the same reason.
For comparison
The WebAIM Million study of February 2026 found detectable failures on 95.9% of the top one million home pages, averaging 56.1 errors per page — 10.1% worse than 2025, the first regression after six consecutive years of improvement. Our figure is higher because we measured e-commerce specifically, and tested a product page as well as the home page.
Citing this
Can They Buy? (2026). WCAG 2.1 AA conformance of 290 European Shopify stores. Sell with Marketing.
Published 3 August 2026. https://cantheybuy.com/study/
Published under CC BY 4.0 — use the numbers, please link back so readers can check the method.
Questions or corrections: hello@sellwithmarketing.com.
Your store
We will run exactly this on your store, free
The same scan, your home page and one real product page, desktop and mobile. Violations by severity, the five worst with the exact element and code, and the criterion each one fails. Within one business day, with no access to your store and no deadline attached.