We Scanned 56 Shopify Stores and Found 19% of Product Images Have No Alt Text
Across the 56 Shopify stores in our free scanner's corpus, 19% have at least one product image with no alt text at all — not weak alt text, none. That is a Google Images ranking signal you are leaving blank, and it is also the single most litigated accessibility gap on ecommerce sites right now: missing image descriptions are exactly what a screen reader has nothing to read out. Here is how common it actually is, the three ways to fix it in bulk, and the CSV re-import mistake that erases other fields while you're at it.
Across the 56 Shopify stores in our free scanner's corpus, 19% have at least one live product image with no alt text at all — not thin, not generic, the alt attribute is empty or missing entirely. That single blank field does two things at once: it hands Google Images nothing to index the picture by, and it hands a screen reader user nothing to read when they land on that product. Neither of those is a hypothetical cost in 2026.
Missing alt text is easy to fix once you find it. The harder part is that Shopify has no report that shows you which images are missing it, so most stores only find out when a customer, an auditor, or a demand letter tells them.
What we counted
Our scanner reads each product's published storefront HTML and flags an image where the alt attribute is empty or absent — the same thing a screen reader or Google's image crawler sees when it reaches that <img> tag. That is a narrower bar than "alt text quality," which is a real problem too (templated text like "product photo" technically fills the field without describing anything), but quality is subjective and presence isn't. 19% of the catalog we've scanned has at least one image where there is nothing there to evaluate.
Dead inventory, duplicate descriptions, and missing shipping weight — the other three catalog-hygiene patterns in the same corpus — all share one trait with this one: none of them throw an error anywhere in Shopify's admin. The product page previews fine. It just quietly fails a check nobody runs unless they go looking, and alt text is the easiest of the four to go looking for, because it doesn't need a scanner at all — Shopify's own help documentation confirms there's no bulk indicator for it in the admin; you find out per image, per product, unless you export.
Why this is not just tidiness
Two separate audiences read that empty alt attribute, and both of them matter more this year than they did two years ago.
The first is Google Images. Shopify's own guidance on writing alt text for SEO is direct about this: alt text is what Google uses to understand what an image shows and where it's eligible to surface — in Image search, in shopping surfaces, in the "similar items" panels that sit next to a lot of product searches now. A missing attribute isn't weighted negatively so much as it's simply nothing to rank on. For stores in visually-driven categories — apparel, home goods, jewelry — Google Images is a real discovery channel, and every blank alt is a product photo that can't compete for it.
The second audience is legal, and it's the one most SEO advice skips entirely. Web accessibility litigation against US retail and ecommerce sites has been climbing every year, and UsableNet's lawsuit tracker, which logs these filings monthly, counted 4,928 federal digital accessibility lawsuits in 2025 alone, with retail and ecommerce named among the most frequently targeted sectors and volume still climbing through 2026. Missing image descriptions map directly onto WCAG 1.1.1 (Non-text Content), the accessibility guideline that says every meaningful image needs a text alternative — it's one of the plainest, easiest-to-demonstrate gaps a complaint can point to, because unlike color contrast or focus order, "there is literally no text here" doesn't require an expert witness to explain. We're not a law firm and this isn't legal advice, but the direction of that trend is not ambiguous, and it applies to every store in our audience's markets — US, UK, Australia, Canada, New Zealand, and Ireland all have some form of accessibility-linked consumer or disability law that this kind of gap gets tested against.
Finding every image that's missing it
There's no admin filter for "alt text is blank," so you have two practical ways to surface the full list instead of spot-checking:
- Export and scan the CSV. From Products > Export, export all products. The product CSV includes an Image Alt Text column — open it in a spreadsheet, filter that column for blank, and every row left is a missing description, keyed to the exact image position.
- Query it via the Admin GraphQL API. For a catalog too large to page through by hand, pull every product's media and check
altdirectly:
{
products(first: 100) {
edges {
node {
title
media(first: 20) {
edges {
node {
... on MediaImage {
id
alt
}
}
}
}
}
}
}
}
Any MediaImage where alt comes back null or an empty string is one your scan missed. Paginate through the full catalog with after cursors rather than trusting a single page of 100 to be representative — alt text gaps tend to cluster around whichever import batch or supplier feed introduced them, so an early page can look fine while a later one is mostly blank.
Fixing it in bulk, and the trap in each method
Three ways to actually close the gap, in order of catalog size:
One product at a time
From Products, open the product, click the image to open the preview, and click Add alt text. Shopify's media editor will often suggest text automatically for images that don't have any — accepting the suggestion saves it, and it's genuinely faster than typing from scratch for a small catalog. The character ceiling is 512, but Shopify recommends 125 or fewer, which is also roughly what a screen reader announces comfortably before a description turns into noise.
CSV re-import for the whole catalog
Export, fill in the Image Alt Text column in a spreadsheet, and re-import with Overwrite products with matching handles checked. This is the fastest way to close hundreds of gaps in one pass, and it's also where most bulk-alt-text guides quietly set a trap: Shopify's own CSV import documentation is explicit that blank cells in non-required columns overwrite existing data with blanks on re-import. If you trimmed the export down to just Handle and Image Alt Text before editing — which feels like the tidy thing to do — you will wipe out vendor, product type, tags, or anything else in a column you didn't keep. Re-import the full export with only the alt text column changed, never a stripped-down version of it.
GraphQL, for doing it programmatically
If you're generating alt text from a spreadsheet of product attributes or an AI pass over your catalog, the mutation to call is fileUpdate, which takes a batch of file IDs and updates alt text for all of them in one call. A fair number of older tutorials and Shopify Community answers still reference productImageUpdate or productUpdateMedia — both still technically callable, but Shopify's own reference docs mark productUpdateMedia as replaced by fileUpdate, so new integration code shouldn't be built against it:
mutation fileUpdate($files: [FileUpdateInput!]!) {
fileUpdate(files: $files) {
files { id alt }
userErrors { field message }
}
}
with variables shaped like {"files": [{"id": "gid://shopify/MediaImage/1072273831", "alt": "Charcoal wool overcoat, front view on model"}]} — one call, any number of files in the array.
The alt text your product-page fix doesn't touch
Fixing every product image doesn't fix your storefront. Theme images — the homepage banner, a collection hero, a promotional block built from a section — get their alt text from an entirely separate workflow inside the theme editor, not the product media panel. A store can close 100% of its product-image gap and still have a homepage hero image with nothing in the alt attribute, because nobody thought to check the theme side once the product side was done. If an audit or a scan is the trigger for doing this work, do both passes in the same pass.
Descriptive beats keyword-stuffed
The SEO instinct and the accessibility requirement point the same direction but aren't identical, and it's worth saying where they diverge: alt text written to rank ("blue wool coat mens winter coat sale buy now") reads as noise to a screen reader and technically fails WCAG's own guidance that alt text should serve the same purpose the image serves for a sighted user, not carry marketing copy that isn't in the image. The version that works for both is the same one — a plain, specific description of what's actually in the photo ("charcoal wool overcoat, front view, worn open") — because that's what a shopper skimming Google Images is scanning for, too, and it's what a screen reader user actually needs to know before deciding whether to keep listening to the rest of the page.
The rest of the corpus, for context
Missing alt text is one of four catalog-hygiene patterns we track across every store our free scanner audits, aggregated and never tied to a named store. In the same 56-store batch: 18% had sold-out products still indexed, and a separate 55-store batch we ran earlier found 39% with duplicate product descriptions. All three are invisible from inside Shopify's admin and all three came from the same catalogue scanner behind our earlier scan of Allbirds and Gymshark.
If your CSV export turns up a handful of blank alt text cells, that's an afternoon of spreadsheet work. If it turns up thousands, or the same supplier feed keeps showing up as the source, that's a catalog-import process problem rather than something to patch row by row — our free scanner will show you the scale of it on your own store before you commit to fixing it, and if it's the kind of structural fix that needs doing once at the feed or template level rather than per product, that's the Shopify catalog work we do directly.
Sources reviewed
- Shopify Help Center: Adding alt text to media
- Shopify Help Center: Using CSV files to import and export products
- Shopify Help Center: Adding alternative text to theme images
- Shopify.dev: fileUpdate mutation reference
- Shopify.dev: productUpdateMedia mutation reference
- Shopify: How to write image alt text for SEO
- UsableNet: ADA web accessibility lawsuit tracker
- W3C WAI: WCAG 2.1 Success Criterion 1.1.1, Non-text Content