In brief
- Every Shopify store that is open to the public lists its catalogue at
/products.json, 250 products a page, and its collections at/collections.json.1 The audit reads those two addresses and nothing else. - From them it can tell what is sold out, what is on sale against a compare-at price and how deep the cut is, which products have no image or no description, which look like leftovers, and which collections are empty.
- It scores the store out of 100 and shows where it stands against the most-visited Shopify stores, audited the same way.
- It cannot see stock units, costs, sales pace, orders, refunds or discount codes. For those there is Store Diagnosis, a free read-only app the merchant installs.
What the audit checks
| Check | What it tells you | Where it comes from | Points |
|---|---|---|---|
| Sold out | The share of variants that cannot be bought, and the products where every variant is sold out | Each variant's available flag | up to 35 |
| On sale | Products whose every buyable variant is priced below a compare-at price, and how deep the cut is | price and compare_at_price | up to 20 |
| Thin descriptions | Products with fewer than 80 characters of description text | body_html, tags removed | up to 12 |
| No image | Products published without a single image | The images list | up to 10 |
| Leftovers | Products titled test, sample or dummy, products priced at zero, and duplicate titles | Titles and prices | up to 13 |
| Empty collections | Collections that contain no product | Each collection's products_count | up to 10 |
| Facts | Newest and oldest product, variant sprawl, price range, vendors and types | The same records | none |
The score starts at 100. Each check takes points only after the store passes a level most stores manage, in proportion up to its cap. A store that is sold out on a few sizes and sells at list price keeps nearly all of its points. One thing the audit does not judge: when a product was last changed. Shopify refreshes that date so often that on every store in the benchmark it read as today, so it says nothing about neglect.
Reading each finding
Sold out
A sold-out product still ranks in search and still appears in collections, so visitors land on it and leave. A little of this is normal, and for a brand that sells in drops it is the business model. Above a quarter of the catalogue it usually means one of three things: reorders arrive late, products that were discontinued were never unpublished, or stock is tracked at a location the online store does not sell from. The fix is to decide for each sold-out product whether it comes back; if it does, set a reorder date, and if it does not, unpublish it or redirect its address to the replacement. The audit lists the sold-out products that were published longest ago, which is where the discontinued ones hide. Reorder points stop the best-sellers from joining this list, and the dead stock guide covers the products that are in stock but not selling, which only the inside view can see.
On sale
A compare-at price makes a product show as reduced. When most of a catalogue carries one for months, the list price stops meaning anything and the reduction stops working. In the EU a reduction must be shown against the lowest price of the previous 30 days, so a permanent compare-at price is also a legal risk there.2 A healthy store has a sale section, not a sale catalogue. The fix is to end the permanent reductions, make the list price the real price and run short, dated promotions. Which discounts lose money explains how to measure them.
Thin descriptions and missing images
Fewer than 80 characters of description is a title repeated. It gives search engines nothing to rank, gives the shopper nothing to decide on and raises returns. A product without an image sells to nobody and is usually a leftover. Fix the ones the audit lists first, then set a rule that nothing goes live without a description and two images.
Leftovers
Products called "test", "sample" or "do not buy", products priced at zero and several products with the same title are what a catalogue collects over the years. They clutter search, confuse collections and look careless to a buyer who notices. They take minutes to delete or unpublish.
Empty collections
An empty collection is a page with a heading and nothing under it. It is still in the navigation, in the sitemap and in search results. Delete it, or fix the conditions that stopped filling it.
Variant sprawl
Shopify allows up to 2,048 variants and three options per product, but some themes support no more than 100, and a product page with that many choices loads slowly and usually hides several products that deserve their own listing.3 Split by the option buyers search for, usually colour, and keep size as the variant.
What the outside cannot see
The public catalogue shows what a product looks like and whether it can be bought. It does not show how many units sit in the stockroom, what they cost, how fast they sell, what the refunds and discount codes took last month, or which best-seller runs out next week. Those are the figures that decide what to do first, and they live in the admin.
| Question | This audit | Store Diagnosis |
|---|---|---|
| Which products are sold out? | Yes, by variant | Yes, and which best-sellers run out before a reorder lands, with how many units to order |
| Which products are dead stock? | No. A product that sits in stock unsold looks the same from outside as one that sells daily | Which ones have not sold in 180 days, how much cash they hold at cost, and a markdown that never goes below cost plus 5% |
| Are the discounts worth it? | How much of the catalogue is on sale and how deep | What each discount code, refund and small order took from margin, in money |
| What does each product earn? | No | What each product keeps after discounts, refunds and payment fees |
Store Diagnosis is free, read-only and on the Shopify App Store. It never reads customer names or addresses, and every figure shows the arithmetic behind it. Install it from the App Store, or read how accurate it is first.
The most-visited Shopify stores, audited the same way
On 9 October 2026 the audit ran over the Shopify stores in the September 2026 HTTP Archive crawl whose Chrome popularity rank is 100,000 or better: the stores with the most visitors.4 1,848 were tried and 1,764 could be read; the rest block automated readers, sit behind a password or answered with an error. Each store's newest 1,000 products and up to 250 collections went through the same checks as the tool above. The median score was 71: 21% of these stores grade A, 33% B, 29% C and 17% D or E.
| Check | Best quarter | Median | Worst quarter |
|---|---|---|---|
| Variants sold out | 7.2% | 21.5% | 41.3% |
| Products with every variant sold out | 1.4% | 9.1% | 24.9% |
| Products on sale | 3.4% | 29.7% | 83.8% |
| Reduction on products on sale | 20% | 30% | 47% |
| Descriptions under 80 characters | 0% | 1.6% | 14.3% |
| Products without an image | 0% | 0% | 0% |
| Leftovers | 0.1% | 1.2% | 10.5% |
| Empty collections | 0.7% | 3.1% | 8.8% |
| Products without a product type | 0% | 0.6% | 31.2% |
Share of each store's catalogue. "Best quarter" is the value a quarter of the stores stay at or below, "worst quarter" the value a quarter exceed. Stores by country: US 662, IN 376, PK 115, DE 64, JP 63, GB 50.
By catalogue size
| Catalogue | Stores | Median score | Sold out | On sale | Thin | Empty collections |
|---|---|---|---|---|---|---|
| Up to 49 products | 83 | 75 | 8.6% | 54.5% | 5% | 0% |
| 50 to 249 products | 334 | 74 | 13.4% | 32.7% | 3% | 2% |
| 250 to 999 products | 418 | 70 | 24.5% | 31.2% | 1.7% | 2.8% |
| 1,000 or more products | 929 | 70 | 23.7% | 26.5% | 1% | 3.9% |
Median of each store's share. A store with more than 1,000 products is judged on its newest 1,000, which flatters it slightly. The full table, with quartiles for every check and size band, is in benchmarks.csv and benchmarks.json, free to cite with a link under CC BY 4.0. Store names are not published.
Check a store by hand
- Open
https://the-store.com/products.json?limit=250in a browser. A Shopify store answers with its catalogue; a password page or a 404 means it is not public or not on Shopify. - Search the page for
"available":falseand count: that is the sold-out variants. Add&page=2to the address for the next 250 products. - Compare
compare_at_pricewithprice. A compare-at price above the price is a product shown as reduced. - Open
/collections.json?limit=250and look for"products_count":0.
The audit above does the same, for up to 1,000 products, and keeps the examples.
Frequently asked questions
How can I audit a Shopify store I do not own?
Every Shopify store that is open to the public lists its catalogue at /products.json and its collections at /collections.json, the same data its storefront shows. The audit reads those two addresses and nothing else, so it works on any public store, including a competitor's. It cannot see orders, stock units, costs or customers.
Is it legal to read another store's products.json?
The audit reads pages the store publishes to every visitor and search engine, reads at most five of them, and stores nothing about the store beyond a six-hour cache of the result. It is the same as opening the store and counting what is sold out, done faster. The products, text and images remain the store's property.
Why does my store show sold-out variants I cannot see?
The catalogue lists every variant that is published, including sizes and colours the product page hides or greys out. A variant counts as sold out when Shopify reports it as not available, which happens when its tracked stock is zero and it does not continue selling when out of stock.
Why does the audit read only the first 1,000 products?
The catalogue is served 250 products a page, newest published first. The audit reads four pages and says when a store has more. For a store with more than 1,000 products the result describes its newest 1,000, which flatters it slightly: older products are more often sold out.
How is the score calculated?
The score starts at 100. Six checks each take points once the store passes a level most stores manage, up to a cap: sold-out variants up to 35 points, products on sale 20, thin descriptions 12, products without an image 10, leftovers 13 and empty collections 10. The percentile compares the score with the most-visited Shopify stores audited the same way.
What can the audit not see?
Anything behind the admin: how many units are in stock and what they cost, how fast each product sells, orders, refunds, discount codes, payment fees and margins. Store Diagnosis, a free read-only app, reads those with the merchant's permission and puts an amount on each problem.
Does the audit store the addresses I check?
Each page of a store's catalogue is kept for six hours so repeated audits are fast. Nothing about you is stored with it, and there is no account or email.
Sources
- Shopify Developer Community. Why are all products public?: a developer on the catalogue every store serves at /products.json, with Shopify staff confirming they know of it, read 10 Oct 2026. Shopify's Ajax API product reference documents the same product JSON, including each variant's
availablefield. vendor forum - Court of Justice of the European Union. Press release 152/24, case C-330/23: a price reduction announced in an advertisement must be calculated on the basis of the lowest price in the last 30 days, under Article 6a of the Price Indication Directive as amended from 28 May 2022 (European Commission overview), read 10 Oct 2026. law
- Shopify Help Center. Adding variants: up to 2,048 variants and three options per product, and the note that some themes support no more than 100 variants, checked 10 Oct 2026. vendor-published
- HTTP Archive. The HTTP Archive crawl, September 2026: the list of Shopify stores and their Chrome UX Report popularity rank used for the benchmark, through BigQuery. open data