DEV Community

Cover image for We scanned 144 German online shops four months after the accessibility law kicked in
dziulatex
dziulatex

Posted on

We scanned 144 German online shops four months after the accessibility law kicked in

Since 28 June 2025, most online shops selling to consumers in Germany fall under the Barrierefreiheitsstärkungsgesetz (BFSG), Germany's implementation of the European Accessibility Act. In practice that means WCAG 2.1 Level AA (via the harmonised standard EN 301 549), plus a published accessibility statement.

Four months later we wanted to know how shops were actually doing. So in October 2026 we looked at 144 German company websites that sell to consumers or take bookings online, and ran the home pages through axe-core.

Short version: the law is in force, most shops are not there yet, and the most common problems are boring and quick to fix.

The numbers

Result
Websites checked for an accessibility statement 144
No accessibility statement found 78 (54%)
Home pages we could scan 119
At least one critical or serious axe-core violation 103 (87%)
At least one critical violation 60 (50%)
Median number of violations per home page 23
Sites with an accessibility overlay widget 9 (6%)

"Critical" and "serious" are axe-core's own impact levels, not a legal judgement.

What breaks most often

Share of the 119 home pages where the rule fired at least once (WCAG-mapped rules only, best-practice rules left out):

axe rule What it means Home pages
color-contrast Text contrast below 4.5:1 (3:1 for large text) 66%
link-name Links with no discernible name 50%
image-alt Images without alternative text 31%
button-name Buttons with no accessible name 21%
meta-viewport Zooming disabled on mobile 10%

None of this is exotic. It matches what the WebAIM Million finds every year: contrast, link text and alt text are the classics.

1. Contrast (66%)

The usual suspects in shops: grey placeholder text, light-grey "was" prices, white text on a pastel sale badge.

/* Fails: #9aa0a6 on #ffffff is about 2.6:1 */
.price-old { color: #9aa0a6; }

/* Passes AA: #5f6368 on #ffffff is about 6.0:1 */
.price-old { color: #5f6368; }
Enter fullscreen mode Exit fullscreen mode

Fix it at the source: theme colour tokens, not one element at a time.

2. Links without a name (50%)

Almost always an icon link in the header (cart, account, wishlist) or a linked logo image with an empty alt.

<!-- Fails: a screen reader announces "link" -->
<a href="/cart"><svg aria-hidden="true">…</svg></a>

<!-- Passes -->
<a href="/cart"><svg aria-hidden="true">…</svg><span class="visually-hidden">Cart</span></a>
Enter fullscreen mode Exit fullscreen mode

3. Images without alt text (31%)

Product images imported in bulk are the main source. Decorative images get alt=""; product images get a short description of what is actually shown (colour, variant), not the file name.

4. Buttons without a name (21%)

Hamburger menus, search toggles, quantity steppers, carousel arrows:

<!-- Fails -->
<button class="menu-toggle"><svg aria-hidden="true">…</svg></button>

<!-- Passes -->
<button class="menu-toggle" aria-label="Open menu" aria-expanded="false">
  <svg aria-hidden="true">…</svg>
</button>
Enter fullscreen mode Exit fullscreen mode

Those four rules alone account for most of the failures we saw, and none of them needs a redesign.

Shopify vs. Shopware

21 of 27 Shopify shops (78%) had no findable accessibility statement, against 10 of 26 Shopware shops (38%). The groups are small, so treat it as a hint, not proof. One untested guess: Shopware shops are more often run by agencies that already have the BFSG on their radar.

Overlays do not change the code

9 sites embedded an overlay widget (the floating button that changes font size or contrast). The violations above were found with the widget active, because a widget does not change the underlying markup. 3 of those 9 sites also had no accessibility statement, so the widget did not even cover the paperwork. In January 2025 the US FTC fined one overlay vendor $1 million for claiming its AI could make any site WCAG-compliant.

Run the same check yourself

All of this is axe-core, which is open source. The quickest way to try it on a page:

npx @axe-core/cli https://your-shop.example --tags wcag2a,wcag2aa,wcag21a,wcag21aa,wcag22aa
Enter fullscreen mode Exit fullscreen mode

Or inside an existing Playwright test suite:

import { test, expect } from '@playwright/test';
import AxeBuilder from '@axe-core/playwright';

test('home page has no WCAG A/AA violations', async ({ page }) => {
  await page.goto('https://your-shop.example/');
  const results = await new AxeBuilder({ page })
    .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22aa'])
    .analyze();
  expect(results.violations).toEqual([]);
});
Enter fullscreen mode Exit fullscreen mode

Putting that in CI catches regressions before a theme update or a new app ships them.

What these numbers do not say

Honest limits, because accessibility tooling is full of overclaiming:

  • Automated tests only catch part of the problem. Depending on the study, roughly 30–57% of WCAG issues are detectable automatically. Whether alt text is meaningful, whether focus order makes sense, whether error messages are understandable: that needs a person with a keyboard and a screen reader. So the real number of issues is higher, and a page with zero axe findings is not automatically accessible.
  • Home pages only, rendered in a real browser, scanned with axe-core 4.12.1 against WCAG 2.1/2.2 AA. Checkout flows, which matter most, were not scanned.
  • Not a representative sample: German companies with roughly 10–249 employees selling to consumers (travel and tickets, home and garden, fashion, electronics and hobby, food and cosmetics), found through public directories and trade press. Micro-enterprises and large corporations were excluded.
  • Accessibility statements were searched via links on the home page and imprint and the usual URLs; one in an unusual place may have been missed (2 unclear cases were not counted as missing). We did not judge whether existing statements are complete.

The full study

The full write-up (in German), with methodology and charts: BFSG-Studie 2026: 144 Online-Shops automatisch geprüft. The numbers are CC BY 4.0, so feel free to reuse them with a link.

Disclosure: I build Klar Barrierefrei, an automated WCAG/BFSG checker for German shops that runs the same axe-core scan and is upfront about the 30–57% limit. The open-source commands above get you most of the way for a single page.

Top comments (0)