This is a repost. Originally published on the Arvio blog: https://arvio.a.xyz/blog/shopify-how-many-product-images. The canonical URL points back there.
Ask this question and you get two kinds of answer, and neither is about your store.
Shopify's own documentation answers the version of the question it can answer precisely: the platform ceiling. The help centre's Adding product media page puts it in one line — "You can add a maximum of 250 images, 3D models, or videos to a product" (read 2026-08-30). True, and useless as guidance — nobody is trying to decide between 4 and 250.
The vendor blog posts on page 1 answer the other version, the one you actually meant. When we read that page on 2026-08-30, three of them — posts from ailee, prodofoto and egnition — gave three different numbers: 5–8, 6–8, and 10–15. None of those three cited a study, a dataset, or a store. They read like a number someone picked and the next post copied.
What none of the results we read had was the boring middle answer: how many images real Shopify stores actually put on a product. So we counted. Across 20,604 products on 41 live storefronts, the median product carries 3 images — below all three of the ranges those posts gave — and 34.6% of products sit at one image or none.
Read those two as product-level figures, weighted by catalogue size: the largest store in the sample supplies 17.6% of the products on its own. Asked one store at a time instead, the median store's median is 4 images, and that number stays at 4 when you drop the biggest catalogues. Both are below page 1's lowest range; the per-store one is the sturdier of the two.
Before the numbers, the useful part: you can print this same distribution for your own catalogue in about a minute.
Key takeaways
-
Count your own store first, then read the benchmark.
https://your-store.com/products.json?limit=250returns every product with its image list, no login. The script in the next section walks your catalogue and prints your median, your mean, and the share of your products at 1 image or none — with our figures printed next to yours for comparison. - The real-world median is 3 images per product, across 20,604 products on 41 live stores. The mean is 5.63, pulled up by a long tail: 10.3% of products carry more than 12.
- Almost two-thirds of products are below the lowest number page 1 recommends — 62.4% at product level, and 54.4% once the single largest catalogue is out of the count. Only 37.6% of products have 5 or more images, 23.5% have 8 or more, and 16.7% reach 10.
- One store carries the product-level headline; the per-store figure doesn't move. The largest catalogue holds 3,636 of the 20,604 products (17.6%), and 96.0% of its products are at one image or none. Drop that store and the product-level median goes 3 → 4 and the one-or-none share goes 34.6% → 21.4%. Drop the two largest and it's a median of 5 and 15.9%. The median of the 41 store-level medians is 4 in all three cuts — that's the number to quote if you only want one.
- One image is the single most common answer. 7,068 products (34.3%) have exactly one and another 51 (0.2%) have none. 5 of the 41 stores have a store-wide median of 1 image.
- The 250 ceiling is not what constrains anyone — though we can't fully test it. The most-photographed product in the whole sample had 249 images, and no product reached 250 images. Shopify's 250 is a cap on media — images, 3D models and video together — and a public catalogue snapshot lists only images, so read this as a statement about image counts, not a check on the media cap.
Sample: 41 live Shopify stores, catalogues read 2026-08-26, drawn at random from a public list of storefronts whose owners posted their own URLs on the Shopify Community's Store Feedback board asking for critique. Image counts only — the endpoint returns no sales data. Not a cross-section of Shopify. Method is at the end.
A count is a starting point, not a to-do list
Arvio reads your live catalogue and tells you which products are thin in a way that matters — and what else on those products is missing while you are already in there.
Count your own store in a minute
Every Shopify storefront exposes its catalogue on a public JSON endpoint — the same one we read. Paste this into a terminal and swap in your domain:
# save as image_count.py, then: python3 image_count.py
import json, urllib.request
from collections import Counter
STORE = "your-store.com" # swap in your own domain
counts, page = Counter(), 1
MAXPAGE = 40 # 40 pages x 250 = 10,000 products
while page <= MAXPAGE:
url = f"https://{STORE}/products.json?limit=250&page={page}"
prods = json.load(urllib.request.urlopen(url))["products"]
if not prods:
break # stop on an EMPTY page, not a short one
for p in prods:
counts[len(p.get("images") or [])] += 1
page += 1
else:
print(f"!! stopped at {MAXPAGE * 250} products - raise MAXPAGE. "
f"The figures below cover only part of your catalogue.\n")
n = sum(counts.values())
if not n:
raise SystemExit("No products read - check the domain, or the store hides this endpoint.")
ordered = sorted(counts.elements())
median = ordered[n // 2] if n % 2 else (ordered[n // 2 - 1] + ordered[n // 2]) / 2
share = lambda test: 100 * sum(c for k, c in counts.items() if test(k)) / n
print(f"{n} products read from {STORE}")
print(f" median images per product : {median}")
print(f" mean : {sum(k * c for k, c in counts.items()) / n:.2f}")
print(f" most on one product : {max(counts)}")
print(f" with 1 image or none : {share(lambda k: k <= 1):.1f}% (41-store benchmark, per product: 34.6%)")
print(f" with 5 or more : {share(lambda k: k >= 5):.1f}% (per-product benchmark: 37.6%)")
print(f" with 8 or more : {share(lambda k: k >= 8):.1f}% (benchmark: 23.5%)")
print(f" with 10 or more : {share(lambda k: k >= 10):.1f}% (benchmark: 16.7%)")
print(" distribution:")
for k in range(0, 13):
if counts[k]:
print(f" {k:>2} image(s): {counts[k]:>5} {'#' * round(40 * counts[k] / n)}")
if any(k > 12 for k in counts):
print(f" 13+ : {sum(c for k, c in counts.items() if k > 12):>5}")
The endpoint returns 250 products per request, so the script walks the pages and stops on the first empty page — a short page mid-list is normal, so stopping on a short one would undercount you. It counts the images on each product record and prints the shape of your catalogue, not just an average. Nothing here can change your store; it only reads.
MAXPAGE gives you the first 10,000 products — raise it if your catalogue is bigger, and the script tells you when it stopped early instead of quietly printing a partial answer. Our own read ceiling was lower: 5,000 products, and the biggest catalogue that cleared it held 3,636. So if your catalogue runs into five figures, the benchmark you're comparing yourself against contains nothing that large. And this counts images on the product record, however they're assigned; it doesn't try to work out which ones a shopper sees after picking a variant. That is the same rule we used for our own figures, which is what makes the two comparable.
What you're looking for in that output is not your mean. It's the first line of the distribution: how many of your products sit at 1 or 0. That number is the working list.
What 41 live stores actually do
Every product in the sample, by how many images it carries:
| Images | Products | Share | Cumulative |
|---|---|---|---|
| 0 | 51 | 0.2% | 0.2% |
| 1 | 7,068 | 34.3% | 34.6% |
| 2 | 2,573 | 12.5% | 47.0% |
| 3 | 1,806 | 8.8% | 55.8% |
| 4 | 1,350 | 6.6% | 62.4% |
| 5 | 1,230 | 6.0% | 68.3% |
| 6 | 868 | 4.2% | 72.5% |
| 7 | 812 | 3.9% | 76.5% |
| 8 | 708 | 3.4% | 79.9% |
| 9 | 693 | 3.4% | 83.3% |
| 10 | 541 | 2.6% | 85.9% |
| 11 | 387 | 1.9% | 87.8% |
| 12 | 398 | 1.9% | 89.7% |
| 13 or more | 2,119 | 10.3% | 100% |
Median 3. Mean 5.63. The gap between those two is the whole shape of the table: one image is by far the most common answer, and a 10.3% tail of heavily-photographed products drags the average up past what most products actually have. If you only ever see one number quoted for this, ask which one it is — a mean here overstates the typical product by nearly double.
Read the cumulative column against the advice on page 1 and the mismatch is not subtle:
- 62.4% of products are below 5 images — the bottom of the lowest range anyone recommends.
- 68.3% are below 6.
- 83.3% are below 10 — the bottom of the "10–15" recommendation.
So the numbers being handed out as "what you should do" describe roughly the top third of real products. The advice may still be right — a stronger page is a stronger page. It just isn't a description of where you are: at 3 images you're in the middle of the field, reading a target set by its top.
Per store, not per product
Products aren't independent — a single large catalogue can dominate a product-level percentage, and in this sample one does. The largest store holds 3,636 of the 20,604 products, or 17.6% of them, and 96.0% of its own products are at one image or none. The three largest hold 43.7% of the products between them. The median store is nothing like that: it holds 115 products. So here is the same question asked one store at a time:
- Take each store's own median and line them up: the median store's median is 4 images. Drop the largest catalogue and it is still 4; drop the two largest and it is still 4. This is the figure that doesn't depend on which big store happened to get drawn.
- The product-level figures do move. Without the largest store the median is 4 instead of 3, and the one-or-none share is 21.4% instead of 34.6%. Without the two largest it's a median of 5 and 15.9%. The sample list and the seed are in the Method, so you can redo this cut yourself.
- 5 of the 41 stores have a median of exactly 1 — for those stores, the typical product has a single photo, catalogue-wide.
- 34 of the 41 have at least one product at 1 image or none — a low bar on a catalogue of any size, so read it as "this is everywhere," not as a severity measure. There is one store where every product is at 1 or none — but it holds 13 products, so that's a handful of items rather than a pattern, and this article's own caveat about single-graphic products applies to it as much as to anyone. 5 stores have a store-wide median of 1.
- Widen it to 3 or fewer images and it covers 11,498 products (55.8%) across 40 of the 41 stores.
So a thin product page isn't a niche problem in a few neglected shops. It's in nearly every catalogue we read, usually as a subset of products rather than the whole store — the pocket that never got revisited.
The 250 limit is not the number you're up against
Shopify's cap is 250 media items per product — images, 3D models and videos together (read 2026-08-30). In 20,604 products the most-photographed one had 249 images, and no product reached 250 images. That isn't quite a test of the cap: a public catalogue snapshot lists a product's images, not its videos or 3D models, so a product sitting at 249 images with one video attached would already be at the ceiling without this data being able to show it.
The ceiling that actually binds is time. Photographing, cropping, uploading and ordering all take a person, which is why the distribution spikes at 1 and trails off instead of clustering around some "recommended" number.
What these numbers don't say
We counted what stores have on the page. Nothing here measures what it earned them.
-
No conversion data.
/products.jsonreturns a product's image list. It does not return sessions, add-to-carts, or orders, so nothing here says whether 8 images sells better than 2. - The median is not a target. 3 is where the middle product sits, not a recommendation. A product where the interesting part is a single flat graphic may be complete at 1; a piece of furniture at 3 is probably missing the angles a buyer needs to judge scale.
- We didn't judge the images. Only the count. One well-lit photo that shows the product clearly is not the same thing as one dark phone snap, and this data can't tell them apart.
- It's a benchmark for orientation, not a rate for Shopify overall. See the sample note and Method — stores that post asking for critique skew newer, smaller, and toward stores that are struggling. That last skew is the one that pushes the one-or-none share up.
So: find where your catalogue sits, then find the products at the bottom of it.
So what number should you use
Since the field data can't hand you a target, use the field data for position and use the product for the number. The questions that actually decide it are checkable without any analytics:
- Can a buyer tell what they're getting from what's on the page? The angle, the scale against something familiar, the texture up close, the thing in use. Count how many of those a photo is missing, not how many photos there are.
- Can they see the version they're about to buy? If a product is sold in five colours and the page shows one, the count is fine and the coverage isn't.
- What does the rest of your category do? Run the script against a competitor's storefront — the endpoint is public on their store too. That comparison is more useful to you than any cross-industry median, including ours.
- Where's your floor? Whatever you decide, the products at 1 or 0 are the ones that fail it. In the sample that's a third of all products, and it's almost certainly not a third of your effort — those are the pages where the next photo makes the biggest difference to what a buyer can see.
That gives you a definition and a worklist.
You now have your own distribution
Turning it into work means going product by product and deciding what each one is missing. Arvio does that read and drafts the rest of the record for your approval.
When it stops being a five-minute job
If the script prints 40 products at one image, you know exactly what to do. You shoot the missing angles, you upload, you order them, you move on. An afternoon.
It changes shape somewhere in the hundreds — we can't tell you where, and nobody can. The work itself doesn't change. There's just more of it, and it keeps arriving. Every product needs someone to open it, decide what's missing for that item, do the work, and check it off; new products come in from an import or a supplier feed carrying whatever images the feed had; and the pocket of thin pages quietly refills while you're working through the last one. You already know what to do. What you don't have is a second person to do it that many times.
The script above gives you the distribution. If you would rather not run anything, the free Arvio store audit will read your live storefront and report your own distribution from the outside: what share of your products carry only one or two images, broken down by how many each has. Whether that comes out looking like the stores above is exactly the part you cannot assume. It reads only public pages — no account, no app install, no admin access — and on a large catalogue it samples rather than reading every product, which it tells you in the result.
That work — reading the whole catalogue, deciding what's below your bar, and drafting the fix product by product — is what Arvio does. It reads your live store, puts the thinnest pages at the top, drafts each change against your actual catalogue, and holds all of it for your approval. Nothing changes without you, and any edit can be undone.
The photography stays yours — that part needs you and a camera. Arvio handles what surrounds it: which products are thin, which ones matter most, what each page still needs, and keeping that list current as new products arrive.
Disclosure: Arvio is our own product, and it is paid — plans start at $9.90 per 30 days with a 5-day trial. If the script prints 40 products and you have an afternoon, you don't need us for this. Arvio is for the catalogue where thin pages arrive faster than you can work through them.
FAQ
How many images can you add to a Shopify product?
Shopify's own documentation gives the platform ceiling: up to 250 images, 3D models or videos on a single product (read 2026-08-30). In practice nobody is near it on images alone — across 20,604 products on 41 live stores we read, the most-photographed product had 249 images and no product reached 250 images. We can't see videos or 3D models in this data, so that's an image count rather than a check on the media cap. Either way, the cap is not what's shaping your catalogue.
How many product images should I have?
There is no number this data can hand you, and be wary of anyone who gives you one without saying where it came from — the three ranges on page 1 for this query (5–8, 6–8, 10–15) cite nothing. What we can tell you is where you'd stand: the median product on the stores we read has 3 images, 62.4% have fewer than 5, and only 16.7% reach 10 — and asked one store at a time, the median store's median is 4. Decide the number from the product — the angles, the scale, the detail, and every variant a buyer can pick — then use the distribution to see whether your catalogue is unusual.
What is the average number of images per Shopify product?
In our sample the mean is 5.63 and the median is 3. Use the median. The mean is inflated by a long tail — 10.3% of products carry more than 12 images, and one had 249 — while the single most common count is 1 image, on 34.3% of products.
Is one product image enough?
It's the most common answer in the field: 7,068 of 20,604 products (34.3%) have exactly one image, and another 51 have none. We can't tell you what that costs, because our data is catalogue counts and contains no sales figures. What's checkable without any analytics is whether one photo shows the buyer what they need — scale, texture, the variant they picked, the thing in use. If it doesn't, "common" isn't a defence.
Do variant images count toward the total?
Our figures count every image on the product record, regardless of which variant it's linked to — we did not de-duplicate images assigned at variant level, and we did not try to reconstruct what a shopper sees after selecting one. So a product listing 8 images counts as 8 here even if a given variant shows a subset. The script in this article counts the same way, which is what makes your output comparable to our benchmark.
Do more product images help SEO or conversion?
We don't know. /products.json returns image counts, not traffic and not orders, so nothing in this article measures an outcome. A claim like "N images lifts conversion by X%" needs sales data behind it; ours has none — ask for the sample size and the source before acting on one.
How do I check how many images my own products have?
Run the script in the section above; it reads https://your-store.com/products.json?limit=250, walks your catalogue, and prints your median, mean, and the share of products at 1 image or none, with our 41-store figures alongside. It reads the same public endpoint your customers' browsers hit. If you don't work in a terminal, the admin still shows you the same thing one product at a time — open a product and its media are all on that page. That's slower than the script and it won't give you a median, but it needs nothing installed. If your store's catalogue endpoint is disabled, that's the only route left.
Method
Sample. 41 live Shopify storefronts, catalogues read 2026-08-26, figures computed 2026-08-30. Every number comes from /products.json, an endpoint any browser can fetch. "Images per product" is len(images) on the product record in that public snapshot. It counts media attached to the product regardless of variant assignment, with no de-duplication of images assigned at variant level, and it makes no judgement of image quality, size, or subject.
How we got to 41. Store owners post their own store URL on the Shopify Community's Store Feedback board asking for critique. We read 720 topics from that board and pulled every store hostname out of the first post: 474 candidate domains. We then asked each one for /products.json, and 230 still returned a catalogue. From those 230 we drew 60 at random — random.Random(20260826).sample(sorted(hosts), 60), so the same 60 come back every time — then dropped 17 holding fewer than 10 products (one of those returned a valid but empty catalogue) and 2 whose catalogue ran past our 5,000-product read ceiling, which left 41. The biggest catalogue that cleared the ceiling held 3,636 products; the smallest store we kept held 10.
The largest bias is survivorship: 244 of the 474 candidate domains never returned a catalogue — 118 no longer resolve, 56 return 404, 31 are frozen for non-payment, 18 answer with something that isn't JSON (a password page, or not Shopify any more), and 21 return some other error. Stores that post asking for critique also skew newer, smaller, and toward stores that are struggling — that last skew is the one that inflates the one-or-none share. So read every share here as a prompt to check your own catalogue, not as a platform-wide rate.
What we counted. 20,604 products across the 41 stores. Median images per product 3, mean 5.63, maximum 249, and 0 products at 250 images or more — we count images only, while Shopify's 250 cap covers images, 3D models and video together, and this snapshot cannot see the last two. 51 products (0.2%) had no images and 7,068 (34.3%) had exactly one, so 7,119 (34.6%) sit at one or none — spread across 34 of the 41 stores, with 1 store in which every product is at one or none. Widening to three or fewer covers 11,498 products (55.8%) in 40 of the 41 stores. Going the other way, 37.6% of products have 5 or more, 31.7% have 6 or more, 23.5% have 8 or more, and 16.7% have 10 or more. Per store, the median of the 41 store-level medians is 4, and 5 stores have a store-wide median of 1. Counts for 0–12 images are published in the table above; the 2,119 products (10.3%) above 12 are the remainder of the 20,604.
Sensitivity to the largest catalogues. Every product-level share above is weighted by catalogue size. The largest store holds 3,636 products, which is 17.6% of the 20,604, and 96.0% of its products are at one image or none. The three largest hold 43.7% of the products between them. The median store holds 115 products. Recomputed without the largest store (40 stores, 16,968 products): median 4, one-or-none 21.4%, five-or-more 45.6%. Without the two largest (39 stores, 14,275 products): median 5, one-or-none 15.9%. The median of the store-level medians is 4 in all three cuts, which is why the per-store figure is the one to lean on.
What we did not measure. Anything about outcomes. This sample contains no sessions, no orders, and no revenue, for these stores or any others, so no statement in this article relates image count to sales, ranking, or traffic — and none should be inferred from it.
Written by Adot Technologies Inc, the team behind Arvio: AI Store Operator for Shopify. The free store audit reports your image distribution from the outside, with nothing installed.
Arvio: AI Store Operator — install it on the Shopify App Store. It reads the whole product record, not just how many images it has.
Originally published at https://arvio.a.xyz/blog/shopify-how-many-product-images. More Shopify bulk-editing writeups are on the Arvio blog.
Top comments (0)