Original research
German webshop accessibility, 2026
Since 28 June 2025 the BFSG has applied to many online shops that sell to consumers in Germany. We tested 9,614 shops on .de domains — homepage, category, product page and cart, not just the front page — and looked at what fails, where it fails and what fixes the most.
Data collected September 29, 2026 – October 13, 2026 · axe-core 4.13.0 · WCAG 2.2 A/AA rules
Key findings
97%
of shops had at least one barrier an automated test can find
63.6%
had a critical barrier — a button, form field or image with no accessible name
86.7%
of shops with three or more tested pages had no page free of serious or critical barriers
9,614
German webshops tested (31,646 pages)
Percentages are of 9,614 confirmed webshops on .de domains. The critical-barrier figure carries a 95% confidence interval of 62.6–64.5%.
The buying path: the product page is the weak spot
A shop can have a tidy homepage and still be hard to buy from. Among the shops where we tested both a product page and the cart, 55.9% had a critical barrier on the product page, against 33.7% in the cart. Product pages typically hold the most interactive parts — galleries, variant pickers, reviews; the cart is simpler.
| Page type | Shops tested | With a critical barrier |
|---|---|---|
| Homepage | 9,614 | 48.5% |
| Category page | 8,492 | 45% |
| Product page | 6,952 | 58.8% |
| Cart | 5,739 | 33.2% |
Counting pages that are free of serious and critical barriers: 86.7% of shops with three or more tested pages had no such page at all, and only 3.1% of all shops were clean on every page we tested.
| Clean pages | Share of shops |
|---|---|
| None | 86.7% |
| One | 5.8% |
| Two | 3.7% |
| Three or more | 3.9% |
Five fixes that clear most critical barriers
Critical barriers cluster around a few rules. If these five were fixed on the pages we tested, 79.7% of shops would have no critical barrier left. That is our calculation from the scan data, not a prediction for any one shop.
image-alt
Images without a text alternative
Give every informative image a short text alternative; mark purely decorative images as decorative.
Found in 33.1% of shops
button-name
Buttons without an accessible name
Every button, including icon-only ones, needs text or a label that says what it does.
Found in 21.8% of shops
aria-required-children
Custom widgets missing the child elements their role expects
Menus, tabs and lists built with ARIA roles must contain the child elements those roles expect — or use plain HTML instead.
Found in 17.1% of shops
label
Form fields without a label
Every form field needs a label that is programmatically linked to it, not just placeholder text.
Found in 16% of shops
select-name
Dropdowns without a label
A dropdown needs a label exactly like a text field does.
Found in 14.1% of shops
The failures are just as concentrated overall: colour contrast alone accounts for 56.6% of all failing elements we counted, and the top three rules (color-contrast, link-name, target-size) for 76.9%. A short, focused clean-up goes a long way.
The most common failures
Share of shops with at least one failing element for each rule, with the WCAG success criterion it maps to.
| Rule | WCAG criterion | Share of shops |
|---|---|---|
| color-contrast | 1.4.3 | 86.1% |
| link-name | 2.4.4, 4.1.2 | 60.1% |
| target-size | 2.5.8 | 38.6% |
| image-alt | 1.1.1 | 33.1% |
| button-name | 4.1.2 | 21.8% |
| link-in-text-block | 1.4.1 | 19.4% |
| aria-required-children | 1.3.1 | 17.1% |
| label | 4.1.2 | 16% |
Platform fingerprints
Shops on different platforms fail in different ways. For each platform the table shows the share of shops with a critical barrier and the rule that is most over-represented there compared with German shops overall. WooCommerce shops had the fewest critical barriers in this sample.
| Platform | Shops | With a critical barrier | Signature problem | Clear after top-3 fixes |
|---|---|---|---|---|
| WooCommerce | 1,947 | 46.7% (44.5–49) | link-in-text-blockLinks inside text that are only distinguishable by colour27.3% of shops vs 19.4% overall | 29.2% |
| WordPress (other) | 158 | 56.3% (48.5–63.8) | link-in-text-blockLinks inside text that are only distinguishable by colour21.5% of shops vs 19.4% overall | 27.8% |
| Custom / other | 2,467 | 60.8% (58.9–62.8) | labelForm fields without a label19.5% of shops vs 16% overall | 21.4% |
| Shopify | 2,022 | 69% (66.9–71) | scrollable-region-focusableScrollable areas a keyboard user cannot reach26.1% of shops vs 9% overall | 12.1% |
| Shopware | 1,772 | 73% (70.9–75) | aria-required-childrenCustom widgets missing the child elements their role expects44.3% of shops vs 17.1% overall | 16.2% |
| Magento | 330 | 73.6% (68.6–78.1) | aria-required-parentWidget items outside the container their role expects19.7% of shops vs 7.3% overall | 13.9% |
| Gambio/xt:Commerce | 522 | 74.7% (70.8–78.3) | select-nameDropdowns without a label25.3% of shops vs 14.1% overall | 14.6% |
This measures shops built on each platform, not the platforms themselves. A theme, a plugin or the agency that built the shop can account for what the scanner sees, and this data cannot separate those. Only platforms with at least 150 tested shops are shown.
Industry league table
Share of shops with a critical barrier, by the category the shop is listed under in the directory (categories with at least 40 shops; names as listed in the German directory). Finanzen & Versicherungen is lowest at 45.2%, Hobby, Sammeln & Freizeitartikel highest at 73.7%. The gaps are real but modest — no category is anywhere near clean.
| Category | Shops | With a critical barrier |
|---|---|---|
| Finanzen & Versicherungen | 186 | 45.2% |
| Consulting | 287 | 53% |
| Telekommunikation | 173 | 53.2% |
| Edelmetalle | 127 | 55.9% |
| Erotik | 93 | 55.9% |
| Bücher | 477 | 57% |
| Tickets | 165 | 57% |
| Energie | 402 | 57.5% |
| Optiker | 108 | 58.3% |
| Reisen & Hotels | 287 | 59.9% |
| Genussmittel | 541 | 60.6% |
| Floristik | 268 | 61.2% |
| Musik & Film | 348 | 62.6% |
| Drogerieartikel & Kosmetik | 352 | 63.1% |
| Koffer, Taschen & Lederwaren | 344 | 63.1% |
| Medikamente | 448 | 63.2% |
| Foto, Druck & Book-on-Demand | 416 | 63.7% |
| Karneval & Kostüme | 130 | 64.6% |
| Spielwaren, Baby & Kind | 370 | 65.7% |
| Gartenbedarf | 377 | 65.8% |
| Auto, Motorrad & Zubehör | 437 | 66.6% |
| Schmuck & Uhren | 397 | 66.8% |
| Tierbedarf | 486 | 66.9% |
| Lebensmittel | 274 | 67.2% |
| Büro, Schule & Beruf | 292 | 67.8% |
| Bekleidung | 158 | 69% |
| Sportartikel | 292 | 69.2% |
| Schuhe | 309 | 70.2% |
| Computer, Unterhaltungselektronik & Zubehör | 288 | 70.5% |
| Haushaltswaren & Haushaltsgeräte | 212 | 71.2% |
| Möbel & Dekorationsartikel | 255 | 72.2% |
| Baumarkt | 201 | 72.6% |
| Hobby, Sammeln & Freizeitartikel | 76 | 73.7% |
A yardstick: how many failing elements per page is normal?
Counting every failing element on each tested page, the typical German webshop has 17 per page. One shop in ten has 2 or fewer; one in ten has 56 or more. Use it as a rough yardstick for your own scan — a count is a guide, not a grade.
| Failing elements per page | Share of shops |
|---|---|
| 0–5 | 19.9% |
| 6–15 | 26.6% |
| 16–30 | 24.8% |
| 31–60 | 20.4% |
| 61+ | 8.4% |
A published statement does not predict an accessible shop
701 shops had an accessibility statement we could open. They were no better off on critical barriers: 63.3% had one, against 63.6% of shops with no statement we could find. They were more likely to be free of serious barriers altogether (6% vs 2.9%), but still a small minority — a statement is a document about a service, not evidence that the service works. The count is a lower bound: we only opened a statement page when a shop had no checkout link.
| Group | Shops tested | With a critical barrier |
|---|---|---|
| Statement found | 701 | 63.3% |
| No statement found | 8,913 | 63.6% |
Germany and the Netherlands
In September 2026 we ran the same scanner with the same rules on 7,122 Dutch webshops. Germany comes out lower on critical barriers (63.6% vs 69%), but the two shop lists are not comparable enough for a ranking of countries.
| Share of shops | Netherlands | Germany |
|---|---|---|
| With at least one barrier | 99.2% | 97% |
| With a critical barrier | 69% | 63.6% |
| WooCommerce shops with a critical barrier | 53.6% | 46.7% |
| Shopify shops with a critical barrier | 68.1% | 69% |
| Low colour contrast | 93.4% | 86.1% |
| Form fields without a label | 25% | 16% |
The shop lists differ — the Dutch one comes from a Dutch directory and association lists, the German one from the Trusted Shops directory, whose shops opted into a trust-seal programme. The scanner and the rule set are the same.
How we did it
- We started from 15,679 .de domains in the public Trusted Shops shop directory, visited each one once and kept whatever the site returned on a first visit — no cookie banners clicked, no logins, no purchases.
- Up to five pages per shop: the homepage, a category page, a product page, the cart, and the accessibility statement or checkout page where one was linked. On average 3.29 pages were tested per shop.
- Every page was tested with axe-core 4.13.0 against WCAG 2.2 A and AA rules. Best-practice rules, which are not part of the standard, were excluded.
- 11,655 sites responded and loaded, and 9,614 of those were confirmed webshops — either by their platform or by a working product or cart page. Every percentage on this page is of those 9,614.
- The scanner identifies itself as ClusesiaScan with a contact address, honours robots.txt and pauses between pages. Where a shop's protection blocked it, we stopped — we do not work around it.
What this does not show
- Automated testing finds only part of what WCAG requires. Keyboard traps, screen-reader flow, focus order and whether a page actually makes sense all need a person to check them.
- A shop with no findings here is not therefore accessible — it means an automated test found nothing on the pages we looked at.
- We tested about three pages per shop, not whole shops. A barrier on a page we did not visit does not appear here.
- The starting list is the Trusted Shops directory — shops that joined a trust-seal programme. It is not a register of every German webshop and may lean towards established shops.
- 6.2% of the shops we tried blocked the scanner and 1.9% disallow scanners in robots.txt. We respected both, so shops with strong bot protection are missing and results may differ for them.
- The headline covers .de domains only. German-language shops on other domains (.com, .eu, .shop and others) show a similar picture — 65.9% of 2,604 had a critical barrier — and are not part of the headline.
Download the data
The full aggregates — every percentage, count and confidence interval on this page — as a JSON file. Free to re-use with attribution. No shop is named in it.
Download JSONCorrections
We do not publish individual shop names or results, and we will not. If you think something here is wrong, or you want to know what we found on your shop, write to [email protected]
See where your own shop stands
Run the same scan on your site, free. You get the barriers we find, each mapped to the WCAG criterion it breaks — no account needed.
Scan my shop — free