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-src or the first srcset entry, 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 like IMG_1234 counts too.
  • Main image (product pages): the largest visible img of 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 without alt.
  • 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

EN 301 549 clauses

The EN 301 549 clause of each criterion, by version of the standard
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 check

Or 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

Write to Validiscan

For a free check, give the address of your shop and its platform.

Validiscan uses what you send to answer you. Privacy notice