Study, November 2026

State of EU shop compliance

We checked the public pages of 270 online shops in Austria, Germany, France, Italy and the Netherlands, picked at random from a public research list. Two in three showed no withdrawal button, although it is now mandatory in all five countries.

What we found

Shares of the 270 shops, checked on . These figures describe what an automated check saw on public pages. They do not say whether any shop breaks the law: rules have exemptions, and some details can sit where our check does not look.

showed no withdrawal button on the home page or a product page
67%
still link to the EU dispute platform that closed in July 2025
19%
showed no manufacturer details on the product page we opened
78%
had no link to an accessibility statement on the home page
78%
  • Withdrawal button. Since 19 June 2026 (1 October 2026 in Austria, 25 June 2026 in the Netherlands), shops that sell online to consumers need a clearly labelled way to withdraw from a contract online. On 182 of 270 shops we found no such link or button on the home page or on a product page. On another 19 we found none either, but the shop blocked some of our requests or builds its footer with a script, so we count those as not sure. 38 shops used the official national wording, such as "Vertrag widerrufen" in Germany, and 24 used other wording, which the law allows if it is just as clear.
  • Withdrawal policy. Only 9 of the 258 shops whose withdrawal information we could check mention the new online function in it. The updated model wording has to say that it exists and where to find it; most shops still use the old text.
  • Closed dispute platform. The EU online dispute resolution platform closed on 20 July 2025, and the duty to link to it ended with it. 49 of the 263 shops whose legal notice we could read still linked to it, most often in Germany and Austria.
  • Consumer dispute statement (Germany and France). 23 of 58 German shops had no statement on consumer dispute resolution on the pages we read, and 39 of 56 French shops named no consumer mediator. Both are often in the terms, which we read only when there is no separate withdrawal policy.
  • Product safety. Since 13 December 2024 online offers have to name the manufacturer with a postal and electronic address. On 210 of 270 product pages we could not see a manufacturer at all, and on 38 we saw a manufacturer or a safety section but no postal and electronic address next to it.
  • Prices. On 52% of the product pages where we could read a price, we could not see a note that the price includes VAT. Some shops show it only in the basket or the footer.
  • Accessibility. 210 shops had no link to accessibility information on the home page. Since 28 June 2025 most shops need an accessibility statement; very small businesses are exempt.

By country

German and Austrian shops are furthest along on the withdrawal button. France, Italy and the Netherlands lag far behind. The button was required in each country from the date its national law applied.

Share of shops per country (each row is one country's shops)
CountryShopsNo withdrawal buttonNo button, not sureOfficial labelLink to closed dispute platformNo manufacturer detailsNo accessibility statement link
Austria3053%0%37%27%63%50%
Germany6032%5%45%36%53%67%
France6082%10%0%13%97%90%
Italy6080%8%0%14%82%75%
Netherlands6083%8%0%8%87%93%

The Netherlands sets no exact wording for the button, so "Official label" there means the example wording from the explanatory memorandum.

How we did it

  • Where the shops come from. The Tranco list, a research list of the top one million websites built from five traffic sources (list ID GQ38K, published 2 November 2026). We did not pick any shop ourselves.
  • Country. The country-code domain (.at, .de, .fr, .it, .nl) decides the country, and we applied that country's rules. Shops on .com and other domains are not included.
  • Random order. We shuffled each country's domains with a fixed seed (20261105) and went through them in that order until 60 shops per country had a completed check, or the country's list ran out. The list holds far fewer Austrian sites than German ones, so Austria has 30 shops; treat its figures with extra care.
  • Earlier runs thrown away. Two earlier runs on 3 November used older versions of the check. While they ran, we tested the check by hand on 60 other random shops: the oldest version was wrong on about 1 verdict in 7, and after the fixes about 1 in 20 on shops it had not been tuned on. We published neither earlier run. This run uses the finished check and leaves out every site the earlier runs visited, so no site was checked twice.
  • What counts as a shop. A site counted only if its home page showed signs of selling online (a shop system, a basket link, an add to basket button or product data) and our check then reached a product page with a price or basket button.
  • The check. The same check as our free shop check, rules data 0.9.0. It reads pages as HTML without running scripts: robots.txt, the home page and up to six more pages or files (the legal notice or contact page, a sitemap or up to three pages to find a product, the withdrawal link, and the withdrawal policy or the terms). The check on our website looks again with a browser when it finds no product page; the study did not, so those shops are counted under "No product page found" or "Needs JavaScript" below.
  • Being a good guest. Our requests identify as ShopproofScanner, follow each site's robots.txt and wait at least one second between two requests to the same site. The check stops at eight requests per site. In an earlier run it once made a ninth (a second robots.txt, when a shop's links switched between its address with and without "www"); we fixed that before this run.
  • Totals only. We publish totals per country and never name a shop. The results for single shops were deleted once the totals were checked. The totals are available as a data file, and the code is the scanner in our repository.
Sites we went through to reach 60 shops per country (domains in the draw: the country's domains in the list, less the sites the earlier runs visited)
CountryDomains in the drawSites triedNot a shopNo product page foundOpted out in robots.txtrobots.txt not readableRefused our requestNeeds JavaScript
Austria6346343245016936057
Germany500069329859231385544
France50006292724661308230
Italy50008982425783999429
Netherlands50001291364565341348248

Limits

  • The list leans towards sites with more visitors, so small shops are under-represented. Shops that block automated tools or build their pages with JavaScript could not be checked; those are often larger shops.
  • For the withdrawal button we read the links and buttons on the home page and one product page. A button that appears only in the customer account or the order confirmation counts as missing here, although the law expects it to be easy to find.
  • The checks look for words and patterns. They miss unusual wording and can count a mention in the wrong place. Manufacturer details may sit in a tab that loads later, which a check without scripts does not see.
  • Sixty shops per country gives a rough picture, not a precise rate. Treat differences of a few points as noise.
  • This is technical information, not legal advice. Whether a rule applies to a given shop depends on its size, products and customers.

Want to see how your own shop does? The free shop check runs the same check on one shop and shows the official source for each rule. Journalists can reach us at hello@shopproof.app.