Product images need meaningful alternative text
Blind customers rely on alt text to know what a product looks like. A file name such as "IMG_4021_final.jpg", an empty description or the same text on every gallery image tells them nothing about colour, cut or detail, so they cannot choose with confidence and buy elsewhere.
- Rule id
- vs-product-images
- Source
- Validiscan check
- Impact
- Serious
- Fix tier
- ASSISTED
- on Shopify, Shopware, WooCommerce and Magento
- Status
- runs
What the check does
Checks product images for alt text equal to the file name, empty alt on the main product image, the same alt on every image of a gallery, alt text longer than 150 characters and redundant prefixes such as "image of" or "picture of" (1.1.1).
The check reads img and role="img" elements, skipping any inside aria-hidden="true" or cloned carousel slides. An img without alt is left to axe-core’s image-alt.
- File name: the alt text equals the file name from
src,data-srcor the firstsrcsetentry, or, if that name holds digits, hyphens or underscores, equals it without extension or size suffix (_1024x1024). Alt text ending in an image extension or likeIMG_1234counts too. - Main image (product pages): the largest visible
imgof 10,000 square CSS pixels or more that starts within 1.5 viewport heights inside a product or gallery container, else within the first viewport height. Header, navigation and footer images never qualify;role="presentation"or"none"counts as empty, even withoutalt. - Gallery: in the nearest container holding three or more shown images with alt, three or more share one alt text across different files.
- Generic: the alt text is only a word such as “photo” or “icon”.
The check does not judge whether the text describes the image.
How to fix it
Write a short, specific alt text for every product image that says what that image shows (colour, angle, detail), keep it under about 150 characters, leave out "image of", and make the texts of a gallery differ. Most platforms store alt text per product image in the admin; make sure the theme outputs it instead of the file name or the product title.
WCAG success criteria
- 1.1.1 Non-text Content, level A
EN 301 549 clauses
| WCAG criterion | Version 3.2.1 | Version 4.1.1 |
|---|---|---|
| 1.1.1 | 9.1.1.1 | 9.1.1.1 |
Start with a free check of your shop.
Send your shop’s address. Validiscan scans it and replies with every failure the scan can prove, with the page and the code.
Request a free checkOr write to info@validiscan.com.
What the free check covers, and what it leaves out- You send
- your shop’s address
- Pages scanned
- up to 15
- You get
- every failure the scan can prove, with the page and the code
- On your shop
- public pages only; no login, nothing bought, no forms sent
- What it is not
- a full audit