- Shopping sites are the second worst category on the web for accessibility: 71.0 detected errors per home page against a 56.1 average, measured across a million home pages in 2026.
- Missing alt text is the second most common failure, found on 53.1% of home pages. Another 10.8% of images that do have alt text carry something useless in it.
- E-commerce is explicitly covered by the European Accessibility Act. Microenterprises providing services are exempt, and that exemption is narrower than most owners assume.
- A model can describe what is in a photo. It cannot know why the photo is on the page, which is what alt text is for, so generated text fixes the empty bucket and can grow the useless one.
- Generate drafts in bulk, then review by image role rather than by image. Four roles cover almost every picture in a shop.
Every year WebAIM runs an automated accessibility check across the top one million home pages. The 2026 edition found 56,114,377 distinct errors, an average of 56.1 per page, up just over 10% on the year before. Then it breaks the results down by category, and that is where the number a shop owner should care about sits.
Sites in the Shopping category averaged 71.0 errors per home page. That is 26.6% worse than the overall average, and the second worst of the twenty five categories measured. Style and Fashion came in at 66.7 and Home and Garden at 65.9. The best performing category, Government, managed 42.4.
Retail is bad at this. Not slightly, and not by accident. Online shop accessibility is now both a legal question in the European Union and a measurable gap in the data, and the two have started to converge.
Why are shopping sites worse than the rest of the web?
Because the things that make a shop sell are the same things that break accessibility, and nobody on a one person team is checking. A product page is image heavy, interaction heavy and assembled from third party widgets, and each of those pushes the error count up.
The WebAIM Million report for 2026 gives the shape of it. Home pages carried 66.6 images on average, a 13.6% rise in a single year. More images means more chances to omit a description. Reviews widgets, chat bubbles, cookie banners, upsell carousels and payment badges all arrive as code somebody else wrote, and each contributes its own unlabelled buttons and empty links.
| Category | Average errors per home page | Difference from the 56.1 average |
|---|---|---|
| Government | 42.4 | 24.4% better |
| Business | 52.6 | 6.3% better |
| Food and Drink | 57.4 | 2.3% worse |
| Home and Garden | 65.9 | 17.4% worse |
| Style and Fashion | 66.7 | 18.9% worse |
| Shopping | 71.0 | 26.6% worse |
Read down that column and a pattern appears that has nothing to do with budget. Government sites are not better resourced than fashion retailers. They are audited. Somebody with authority asks them for a report, which is a mechanism retail has never had, and which the European Accessibility Act is now in the process of supplying.
Does the law actually apply to a small shop?
E-commerce is explicitly in scope. The European Commission lists it among the products and services the European Accessibility Act covers, alongside banking services, e-books, transport services and consumer hardware.
There is an exemption, and it is the first thing every owner reaches for. The directive does not apply its requirements to microenterprises providing services, where a microenterprise is defined, as the published summary of the directive's terms records, as an enterprise employing fewer than 10 persons and having either an annual turnover or an annual balance sheet total not exceeding two million euros.
Four things about that exemption are worth sitting with before you file it as solved.
It covers services, not products. If you make or import a product that is itself in scope, the exemption does not carry across to it.
It is a threshold, not a status. Hire your tenth person and it stops applying. There is no transition period written into the test.
National implementations differ. The directive is implemented by each member state in its own law, which is where the enforcement, the penalties and the complaint route actually live. The directive tells you what; your national statute tells you what happens.
It is an exemption from a statute, not from your customers. Roughly one in four images on popular home pages is missing, questionable or repetitive in its alt text, according to the same WebAIM analysis. Each of those is a person who cannot buy something.
This is a description of how the directive and the measured data fit together, not legal advice. Whether a particular business is exempt turns on the implementing law in the member states you sell into, and on figures only your accounts can settle.
What does generated alt text actually get right?
It is good at describing the contents of a picture and poor at knowing why the picture is on the page. That distinction is not a quibble about quality. It is the entire definition of the thing being written.
The W3C's own guidance makes this explicit. Its alt decision tree does not ask what is in the image. It asks what role the image plays: whether it conveys information not otherwise in the text, whether it is purely decorative, whether it is a link or a button, whether it contains text that appears nowhere else. The correct answer for the same photograph changes depending on where you put it.
Take one studio shot of a navy wool scarf. On the product page as the main image, the surrounding text already gives the name, the material and the price, so repeating them in the alt text wastes a screen reader user's time; what helps is what the photo adds, such as the weave and the drape. In a category grid, the same photo is a link, and its alt text has to say where the link goes. In a blog post about winter stock it might be decorative, and the correct alt text is empty. In an email banner with the words "20% off" printed across it, the alt text has to carry that offer, because it exists nowhere else.
A model handed only the pixels cannot distinguish those four cases. It produces one competent sentence about a navy wool scarf and that sentence is right once out of four times.
So where does it genuinely help?
In volume, in first drafts, and in the specific job of describing visual detail that a busy owner would otherwise skip. Those are real contributions, and refusing them on principle leaves you with the worse option, which is nothing.
The WebAIM numbers suggest where the win is. Missing alternative text was detected on 53.1% of home pages, and 16.2% of all home page images had none at all, around 10.8 missing per page. An empty alt attribute on an informative image gives a screen reader nothing to read but a filename. A generated sentence that is merely imperfect beats that comfortably. The risk is the other bucket: 10.8% of images that had alt text carried something questionable or repetitive, such as the word "image", a filename, or text identical to the caption next to it. Bulk generation without review moves images out of the first bucket and into the second, and leaves the total roughly where it was.
| Image role | What alt text must carry | Can a model infer it? |
|---|---|---|
| Main product photo | Visual detail the description does not state | Mostly, with the description supplied as context |
| Thumbnail linking to a product | The destination, phrased as the product | No, it cannot see the link target |
| Decorative or mood shot | Nothing, the alt attribute stays empty | No, it will describe it anyway |
| Image carrying printed text or an offer | The words in the image, verbatim | Usually yes, this is where it is strongest |
| Size chart or diagram | The data, usually as a table elsewhere | No, and the honest fix is not alt text |
A workflow that uses the machine for the part it is good at
The useful move is to stop reviewing image by image and start reviewing by role. Four roles cover nearly every picture in a shop, and the decision per role takes seconds once the images are sorted.
Sort before you generate. Export your images grouped by where they appear: product main, product gallery, category thumbnail, banner, editorial. Your platform already knows this; it is a report, not a judgement call. The sorting is the work that makes everything after it cheap.
Mark the decorative group and stop. Set alt="" on anything purely atmospheric and move on. This group is usually larger than people expect, and handling it correctly costs nothing and removes noise for the people you are trying to help.
Generate for the informative groups, with context attached. Give the model the product title and the existing description along with the image, and tell it explicitly not to repeat what the description already says. Output quality changes considerably when the prompt contains the surrounding text, because the instruction becomes "add what is missing" rather than "describe this".
Write the linked thumbnails yourself, or derive them. These are the ones a model cannot do, and they are also the easiest to automate without a model: the alt text of a thumbnail that links to a product is the product name. A template beats a model here.
Spot check twenty, not two thousand. Pick twenty at random after generation and read them aloud. Anything that makes you say "well, obviously" is redundant with the page text and should be shortened or emptied.
What does a screen reader actually announce on a product page?
It reads the page as a sequence, not as a layout. Headings, links, form fields and image descriptions arrive one after another in the order they appear in the markup, which is why a visually tidy page can still be incoherent to listen to.
Try it once on your own shop and the abstract becomes concrete in about ninety seconds. Every operating system ships a screen reader, and you do not need to learn it properly to learn something useful. Turn it on, close your eyes at the product page, and try to work out which variant is selected and where the add to basket control is. Most owners discover two things: the gallery announces five near identical descriptions in a row, and some control they think of as obvious announces itself as "button".
That exercise also reframes the alt text question usefully. Listening to six images described in sequence makes it obvious why repetition is a cost rather than a neutral. A screen reader user cannot skim past a bad description the way a sighted visitor skims past a bad photo. They have to sit through it, on every image, every time.
Alt text is not the whole of it, and not even the biggest part
Low contrast text was detected on 83.9% of home pages, making it the single most common failure, ahead of missing alt text at 53.1%. Missing form input labels appeared on 51%, empty links on 46.3% and empty buttons on 30.6%. WebAIM counts these as barriers with a very high likelihood of being WCAG 2.2 Level A or AA conformance failures. WebAIM notes that 96% of all detected errors fall into those six categories and that the same six have led the table for seven years running.
For a shop, the form and button failures are the expensive ones. A missing label on a quantity field or an unlabelled button that happens to be your add to basket control does not degrade the experience, it ends the transaction. Alt text gets the attention because it is the one everybody has heard of, but a screen reader user who cannot identify the checkout button has a worse day than one reading a mediocre description of a scarf.
Contrast is the one a generative tool will actively work against you on. Ask for a stylish promotional banner and you will frequently get pale grey text on a cream background, because that is what looks good in the training data. If you are generating banner artwork, check the contrast ratio of any text in it before it ships, the same way you would check a spelling.
Does an accessibility widget solve this?
No, and it can make the position worse. A script that overlays a toolbar on your site does not change the underlying markup that assistive technology reads, so the failures counted above remain where they were.
The useful framing is that accessibility is a property of your page, not a layer on top of it. Alt text lives on your images. Labels live on your form fields. Contrast lives in your theme. Each of those is a thing you own and can fix once, and each stays fixed. A product that promises to handle it from outside is promising to change something it does not control.
What this shares with the rest of your product data
Alt text behaves like every other field that describes a thing you sell. It is written once, read by machines far more often than by people, and quietly decays as your catalogue changes. The discipline that works is the same discipline that works for the rest of it: generate drafts, review by exception, keep the source of truth in one place.
That is the same argument we made about the product feed being where your shop is judged, and it holds here for the same reason. Both are structured descriptions of your catalogue consumed by software you do not control, and both reward consistency more than flair. If you are already maintaining a feed properly, you have most of the machinery for this.
It also connects to how you write the descriptions themselves. Our method for drafting product descriptions with AI without the output sounding generated starts with giving the model the specifics only you hold, and alt text is the same instruction at smaller scale. Where your images contain people, the questions about AI generated models appearing in product photos sit alongside this one: both are about what an image is claiming, to whom.
If you are building or rebuilding the shop rather than patching one, the cheapest moment to get this right is now. Alt text fields, form labels and contrast tokens are nearly free when the templates are being written and tedious afterwards, which is one of the things a properly structured ecommerce website builder should be handling for you rather than leaving as an exercise.
Where to start on a Tuesday afternoon
Run an automated check on your three most important pages: home, one category, one product. Free browser extensions will do it, and the output is a list, not a lecture. Expect the count of accessibility errors to be higher than you hoped, given that the Shopping category average is 71.
Fix the checkout path first, regardless of what the tool ranks highest. Unlabelled form fields and unnamed buttons between the basket and the confirmation are the errors with a price attached.
Then do the image sort described above. For most small catalogues it is an afternoon, and it is the kind of work that is genuinely well suited to being drafted by a machine and finished by a person who knows what the pictures are for.
The gap between a shop at 71 errors and one at 42 is not money or expertise. It is that somebody looked. The directive is, in the end, a mechanism for making somebody look, and the measured data says retail is the part of the web that most needed one.