How ready are online shops for the European Accessibility Act?
Our own study of online shop home pages in two waves: wave 1 in Poland, Czechia, Slovakia and Croatia, wave 2 in Germany and Austria. We publish aggregates only and name no shop.
Key findings
- Wave 1 (Poland, Czechia, Slovakia, Croatia; n = 360): on 95% of the home pages, at least one failure of a WCAG 2.x A/AA rule was detected automatically (axe-core; 95% CI 92%–97%).
- Wave 2 (Germany, Austria; n = 221): on 95% of the home pages, the same check detected at least one failure (95% CI 91%–97%).
- The five most common failures are the same in both waves and come in the same order. Share of shops, wave 1 and wave 2: low text contrast 78% and 77%; links without an accessible name 68% and 61%; touch targets that are too small 41% and 33%; images without a text alternative 32% and 30%; buttons without a name 31% and 24%.
- Shop size changes little. Share of home pages with detected failures in wave 1: 96% for small and mid-sized shops (n = 239) and 93% for large and international retailers (n = 121). In wave 2: 96% for shops that are likely not micro-enterprises (n = 112; our estimate, see the size note: of 25 checked shops, 16 were confirmed and 4 looked micro) and 94% for shops of unclear size (n = 71). All size classes are our estimates.
- On every shop software with at least 10 shops in a wave, between 88% and 100% of the home pages had detected failures. Shops customise their themes, so these figures describe shops, not the software.
- An automatically detected failure is a lead for a manual review, not a legal finding. We do not say that any shop breaks the European Accessibility Act or a national law.
Results by country
Share of home pages on which axe-core detected at least one failure of a WCAG 2.x A/AA rule. The number of shops is in brackets.
Home pages with at least one detected failure, by country
| Country | Shops checked | With detected failures (95% CI) |
|---|---|---|
| Poland | 84 | 77 (92%)84%–96% |
| Czechia | 89 | 83 (93%)86%–97% |
| Slovakia | 94 | 92 (98%)93%–99% |
| Croatia | 93 | 90 (97%)91%–99% |
| Total, wave 1 | 360 | 342 (95%)92%–97% |
| Germany | 123 | 115 (93%)88%–97% |
| Austria | 98 | 94 (96%)90%–98% |
| Total, wave 2 | 221 | 209 (95%)91%–97% |
Results by shop size
The size classes are our own estimates and differ between the waves. The European Accessibility Act exempts micro-enterprises that provide services, so wave 2 estimates whether a shop is likely to be one. This is not a legal assessment: whether a business is covered is a legal question.
Results by shop size. Wave 1: Poland, Czechia, Slovakia, Croatia
| Size class (our estimate) | Shops checked | With detected failures (95% CI) |
|---|---|---|
| Small and mid-sized shops | 239 | 230 (96%)93%–98% |
| Large and international retailers | 121 | 112 (93%)86%–96% |
Results by shop size. Wave 2: Germany, Austria
| Size class (our estimate) | Shops checked | With detected failures (95% CI) |
|---|---|---|
| Likely not micro (our estimate)¹ | 112 | 107 (96%)90%–98% |
| Size unclear | 71 | 67 (94%)86%–98% |
| Little public evidence of size | 28 | 27 (96%)82%–99% |
| Likely a micro-enterpriselittle data | 10 | 8 (80%)49%–94% |
¹ Our estimate from public signals (legal form, review counts, links to jobs and store pages, certificate age, traffic rank, number of links), not a legal status. Spot check, shops drawn at random from this class: 25 (Germany 22, Austria 3). Confirmed by third-party sources as having at least 10 employees or more than EUR 2 million turnover: 16. Confirmed indirectly: 3. Looked like micro-enterprises: 4. No data found: 2.
Wave 1: large and international retailers are brands present in two or more of the four countries and well-known large national or international retailers (our judgement). All other shops count as small and mid-sized. Wave 2: the estimate uses public signals such as legal form, number of reviews, years online and links to job and store pages.
Results by shop software
For each shop software: how many of the shops built on it had detected failures, and how many different rules failed per home page on average. These are shops, not the software, because shops customise their themes, add apps and write their own content. Only software with at least 10 shops in a wave is shown, and rows with fewer than 20 shops are marked as little data. Shops whose software was not detected are not shown.
Results by shop software. Wave 1: Poland, Czechia, Slovakia, Croatia
| Shop software | Shops checked | With detected failures (95% CI) | Average failing rules |
|---|---|---|---|
| Shops on WooCommerce | 52 | 51 (98%)90%–100% | 3.3 |
| Shops on Magento | 48 | 45 (94%)83%–98% | 5.1 |
| Shops on Shopify | 32 | 31 (97%)84%–99% | 3.1 |
| Shops on PrestaShop | 32 | 32 (100%)89%–100% | 4.7 |
| Shops on Shoptetlittle data | 17 | 17 (100%)82%–100% | 3.4 |
| Shops on IdoSelllittle data | 16 | 16 (100%)81%–100% | 5.3 |
In wave 1 the averages form two groups. Failing rules per home page, average: 3.1–3.4 for shops on Shopify, WooCommerce and Shoptet; 4.7–5.3 for shops on PrestaShop, Magento and IdoSell. The sample mixes countries and shop sizes, so this describes our sample, not the software, and it is no ranking.
Results by shop software. Wave 2: Germany, Austria
| Shop software | Shops checked | With detected failures (95% CI) | Average failing rules |
|---|---|---|---|
| Shops on Shopware | 58 | 58 (100%)94%–100% | 4.6 |
| Shops on Shopify | 28 | 28 (100%)88%–100% | 3.9 |
| Shops on WooCommerce | 23 | 23 (100%)86%–100% | 3.7 |
| Shops on Magentolittle data | 17 | 15 (88%)66%–97% | 3.9 |
The software was detected from signatures on the home page at selection and can be wrong for single shops. Versions and themes were not determined.
Most common failures
Share of shops with at least one failure of the rule on the home page, by country. For each wave, the ten rules that failed on the most shops. The rule names link to our explanations of what they mean and how to fix them.
Most common failures. Wave 1: Poland, Czechia, Slovakia, Croatia
| Rule | Poland | Czechia | Slovakia | Croatia | All |
|---|---|---|---|---|---|
Text has too little contrast color-contrast | 70% | 80% | 80% | 82% | 78% |
Links without a readable name link-name | 56% | 72% | 68% | 74% | 68% |
Touch targets are too small target-size | 45% | 40% | 39% | 41% | 41% |
Images without alternative text image-alt | 27% | 40% | 24% | 34% | 32% |
Buttons without a readable name button-name | 37% | 31% | 27% | 29% | 31% |
Zooming is disabled meta-viewport | 29% | 20% | 26% | 31% | 26% |
Lists are built incorrectly list | 27% | 15% | 16% | 12% | 17% |
Form fields without labels label | 8% | 24% | 15% | 11% | 14% |
List items outside a list listitem | 14% | 17% | 9% | 11% | 13% |
ARIA elements without the child elements they require aria-required-children | 12% | 8% | 7% | 13% | 10% |
Most common failures. Wave 2: Germany, Austria
| Rule | Germany | Austria | All |
|---|---|---|---|
Text has too little contrast color-contrast | 73% | 83% | 77% |
Links without a readable name link-name | 61% | 60% | 61% |
Touch targets are too small target-size | 30% | 37% | 33% |
Images without alternative text image-alt | 33% | 27% | 30% |
Buttons without a readable name button-name | 23% | 27% | 24% |
ARIA elements without the child elements they require aria-required-children | 23% | 14% | 19% |
Zooming is disabled meta-viewport | 10% | 16% | 13% |
ARIA attributes not allowed on this element aria-allowed-attr | 16% | 7% | 12% |
Links in text are recognisable only by colour link-in-text-block | 12% | 12% | 12% |
Interactive elements nested inside each other nested-interactive | 10% | 12% | 11% |
PL Poland, CZ Czechia, SK Slovakia, HR Croatia, DE Germany, AT Austria. A rule counts once per shop, however often it failed on the page. The two waves cover different shops, so a rule can sit in different places in the two tables.
Method
What we measured
Each home page was loaded once in a desktop browser (Chromium, a window of 1366 × 900 pixels, the language setting of the country) and given 1.5 seconds to render its scripts. Then the open-source engine axe-core 4.13 checked the page against the WCAG 2.0, 2.1 and 2.2 rules of levels A and AA that it covers. Nothing was clicked, accepted, closed or typed, so cookie banners stayed as they were. A shop counts as having detected failures if at least one of these rules failed on its home page.
The rule target-size checks criterion 2.5.8 of WCAG 2.2. This criterion does not exist in WCAG 2.1 AA, the level to which EN 301 549 v3.2.1 refers.
Wave 1 sample
Second-level domains under .pl, .cz, .sk and .hr, taken in rank order from the public Tranco ranking of websites. A site counts as an online shop if its home page shows a cart link together with product markup or a product listing, or the signature of a known shop system together with a cart link. Up to 100 shops per country were taken, and sites that turned out not to be shops on manual review were removed. Shops that block automated access are missing, so the study covers sites open to automated checking.
Sample and exclusions, wave 1
| Shops selected | 400 |
|---|---|
| Not shops on manual review | 30 |
| Could not be loaded or refused access, tried twice | 10 |
| In the results | 360 |
Wave 2 sample
Online shops from public lists of certified and rated shops and from a retailer ranking; the largest single list supplies 63% of the German and 99% of the Austrian sample. A site counts as an online shop if its home page shows shop signals or the list names it as a certified shop. Chains, marketplaces and shops with adult, weapons or gambling offers were not selected. The sample leans towards established, certified shops.
Sample and exclusions, wave 2
| Shops selected | 250 |
|---|---|
| Not shops on manual review | 19 |
| robots.txt disallows our crawler | 2 |
| robots.txt could not be read | 2 |
| Refused access (403, 429 or bot challenge), not tried again | 3 |
| Could not be loaded (timeout or network error), tried twice | 3 |
| Text and data mining reservation, left out | 0 |
| In the results | 221 |
Size class and spot check (wave 2)
Size class: our estimate from public signals. Micro-enterprises that provide services are exempt under the European Accessibility Act, so the class is not a statement about the legal status of any shop.
Spot check of the class “likely not micro”: shops drawn at random: 25 (Germany 22, Austria 3), checked against third-party sources (company-data aggregators, business and regional press, employer profiles). Confirmed: 16 (12 by reported figures or press, 4 by several directories). Confirmed indirectly: 3. Looked like micro-enterprises: 4. No data: 2. Confirmed or confirmed indirectly: 76% (95% Wilson interval 57%–89%). Looked like micro-enterprises: 16% (95% Wilson interval 6%–35%).
The check covers only this class. It does not estimate how many shops in the other size classes are not micro-enterprises.
robots.txt, refusals and text and data mining
Wave 2 follows RFC 9309. The robots.txt file was read once per shop before the scan. A shop was skipped if the file disallows our crawler for the home page or cannot be read (for example a 403 answer, a server error or a timeout); a missing file (404 or 410) counts as no restriction. An access-denied answer such as 403 or 429, or a bot challenge, counted as a refusal and was not tried again, while a timeout or network error was tried once more. Wave 2 also reads text and data mining reservations (a tdm-reservation header or meta tag, or a notice on the home page) and leaves such shops out.
Wave 1 read robots.txt at selection and skipped sites that disallow our crawler (skipped: 102, probed: 4,876); a file that could not be read counted as no restriction. Sites that did not load, including 403 and 429 answers, were tried once more. Text and data mining reservations were not read in wave 1.
Requests and user agent
Requests per site. Wave 1: robots.txt and the home page at selection, the home page once more to read its title, and one load in the browser with its embedded resources (scripts, styles, images). Wave 2: the home page at selection (for most shops), robots.txt once before the scan, and one load in the browser with its embedded resources. Requests to the same site came one after another from one address, without proxies.
The crawler identifies itself with the token EAAWatchStudy. Our crawler page says who runs it, what it requests and how to opt out. In wave 1 the browser label “Headless” was shown as “Chrome” and the test browser ignored the content security policy of the page; wave 2 uses the unchanged browser label and respects the policy.
What we keep, what we publish, how to opt out
Per domain we keep only the identifiers of the failed rules, the number of affected elements, the HTTP status and sampling data from public sources (country, shop software, category). We keep no page text, images, screenshots or personal data. The records are kept until the report is published and for about 12 months after; then only aggregates remain.
We publish aggregates only, without shop names and without a split by source list. Cells with fewer than 10 shops are not shown, and cells with 10 to 19 shops are marked as little data. Confidence intervals are Wilson score intervals at 95%. Percentages are rounded to whole numbers.
To opt out, add User-agent: EAAWatchStudy and Disallow: / to your robots.txt, or write to us at the address in the imprint. We stop and delete the records of your domain.
Limits
- Automated tests find only part of the accessibility problems. A page without detected failures is not necessarily accessible, and many requirements need a manual check.
- Only the home page of each shop was checked, not product pages, the checkout or documents. Cookie banners were not closed, and content that appears more than 1.5 seconds after loading is not checked.
- The samples are not random samples of all shops. The figures describe the shops we checked, and comparisons between countries and waves are only indicative because the sample frames differ.
- Size classes and shop software are our own estimates from public signals and can be wrong for single shops.
- Each shop was scanned once. Results change when a shop updates its website.
- An automatically detected failure refers to a technical WCAG rule. Legal requirements differ by country, and the study makes no statement on the legal status of any shop.
Citing and contact
If you use these figures, please cite: EAA Watch, “How ready are online shops for the European Accessibility Act?”, https://eaa.steadyrobots.com/shop-accessibility-study/, 12 October 2026.
The aggregated results are available as a CSV file without shop names or domains: download (CSV). Licence: CC BY 4.0, free to reuse with the citation above.
Questions or corrections: write to the address in the imprint.
Check your own home page
The free check runs the same engine on any page and explains every finding in plain language.