Zero clean: 72 WooCommerce stores
We went through 275 addresses of Polish stores, of which 72 could be read from the outside. In September every one of the 72 had something in the catalogue visible without signing in. In October we repeated the measurement with a more careful scanner and added the UK and the US — among stores with at least ten products, one per market is clean.
Study by: Baltano, publisher of the free Merchlint plugin. Run: 11 September 2026; again, on the same stores, 2 October 2026 (comparison); a third time, together with a UK and a US sample, 5 October 2026 (October).
Correction, 6 October 2026. The most common finding in the tables of 11 September and 2 October — images with no alternative text — counted an empty field in the media library. Since version 9.3.3, WooCommerce shows the product name in that place on the product page, so a screen reader and image search do have something to read. Checked on the product pages themselves, the row is 37% of stores, not 83–86%, and one store out of 70 comes out clean. The tables of September and 2 October stay as they were measured; the new numbers are in the October section.
Free to republish. The numbers, the tables and the method description on this page are released under CC BY 4.0 — reuse them in full, in a commercial publication too, without asking us. The one condition is naming the source with a link. Ready to copy:
Source: Baltano, “Zero clean: 72 WooCommerce stores”, merchlint.com/woocommerce-report-2026
The article text itself stays ours — quoting it is of course fine on the usual terms.
What we looked at
Every WooCommerce store exposes its catalogue publicly — that is what the cart in a visitor’s browser reads. The same data shows what any visitor sees: whether a product has a price, whether it can be bought, whether it has its own photo, whether the description is a copy of its neighbour’s. The alternative text of an image is different: the catalogue gives the media-library field, and the page may show the product name in its place — which is why since October we check it on the product page.
It shows nothing about orders, customers or money. This is a study of what can be seen from the street — and of nothing else.
Method
-
Where the addresses came from. From the “our work” and “portfolio” pages of nineteen Polish agencies that build WooCommerce stores. The 72 stores we could read come from ten of them, and two agencies supplied 47 between them. This matters for reading the results: it is not a random sample of Polish stores, it is a set of stores someone is proud of.
Correction, 2 October 2026: we previously wrote here and below that the stores came from nineteen different contractors. Nineteen is the number of agencies whose pages we went through; the readable stores come from ten of them. The numbers in the tables do not change.
-
What we fetched. Only the public WooCommerce Store API, the first 150 products of each store and the category list. Around three requests per store.
-
Manners. Before the first request we checked each store’s
robots.txtand did not scan the ones that forbid it. At most three requests per second, with a header saying who is knocking. We signed in nowhere and changed nothing in any store. -
When. 11 September 2026, in several passes on the same day. Second wave on the same 72 stores: 2 October 2026. Third, together with the UK and the US: 5 October 2026.
-
What we publish. Aggregate numbers only. We do not publish store names and will not.
| Addresses checked | 275 |
| Readable WooCommerce catalogues | 72 |
| …of those, with visible defects | 72 |
| …of those, clean | 0 |
Forbade it in robots.txt — not scanned | 14 |
| Dropped (no public API, empty catalogue, or not a store) | 189 |
What we found
The number on the right is the total of individual items across all stores, with a cap of 150 products per store.
| What is visible | In how many stores | Share | Items in total |
|---|---|---|---|
| Images with no alternative text | 60 of 72 | 83% | 4497 |
| Descriptions shorter than 200 characters | 50 of 72 | 69% | 1531 |
| Sold-out products still in the catalogue | 36 of 72 | 50% | 925 |
| The same description on several products | 34 of 72 | 47% | 978 |
| Names longer than 70 characters | 27 of 72 | 38% | 880 |
| Products with no price, or not purchasable | 27 of 72 | 38% | 1138 |
| Products with no photo of their own | 21 of 72 | 29% | 421 |
| One main photo shared by many products | 8 of 72 | 11% | 286 |
| Duplicate product code (SKU) | 7 of 72 | 10% | 134 |
| Categories with no products | 3 of 72 | 4% | 12 |
Three things in that table that surprised us
These are not neglected stores. They are agency work — sites somebody delivered to a client and shows off as a calling card. Had the study covered random stores, we would expect worse numbers. We also expected at least a few clean ones. There was not a single one. In October, with the corrected image check, there was one in 70.
The most common finding turned out to be inflated. Alternative text for an image is one text field, and in 60 stores out of 72 it is empty — 4497 times in total. But in roughly half of those stores the product page shows the product name in its place (see the correction at the top), so a visitor does not see an empty description.
Sold-out products in the catalogue are not always a mistake. Some stores keep them deliberately, for search engines or as a gallery of what used to be. From the outside a decision cannot be told apart from an oversight — that is a limit of the method, not a result of it.
Three weeks later: the same 72 stores
We read the same 72 stores a second time on the night of 1–2 October 2026 — same scanner, same ten
checks, same cap of 150 products. robots.txt was checked again; no store had closed the door, and
all 72 could be read.
Still zero clean. In 39 stores out of 72, all ten checks gave exactly the same numbers as three weeks earlier.
| What is visible | Stores 11 Sep | Stores 2 Oct | Went to zero | New | Items 11 Sep | Items 2 Oct |
|---|---|---|---|---|---|---|
| Images without alt text | 60 | 62 | 0 | 2 | 4497 | 4461 |
| Descriptions under 200 characters | 50 | 52 | 0 | 2 | 1531 | 1551 |
| Sold-out products still listed | 36 | 35 | 2 | 1 | 925 | 884 |
| Same description on several products | 34 | 34 | 0 | 0 | 978 | 904 |
| Names over 70 characters | 27 | 27 | 1 | 1 | 880 | 781 |
| Products with no price or not purchasable | 27 | 29 | 0 | 2 | 1138 | 1141 |
| Products without a photo of their own | 21 | 21 | 1 | 1 | 421 | 425 |
| Same main photo on many products | 8 | 8 | 0 | 0 | 286 | 286 |
| Duplicate SKU | 7 | 6 | 1 | 0 | 134 | 132 |
| Categories with no products | 3 | 2 | 1 | 0 | 12 | 5 |
“Went to zero” means the store had it on 11 September and no longer had it on 2 October. “New” is the other way round.
- Products without a price stayed — mostly by design. Every one of the 27 stores that had them in September still has them, and two more joined. On 4 October we went through 40 such items from 16 stores by hand: 4 looked like a mistake and one was a test product; the rest were free gifts added to orders, vouchers and gift cards, free consultations, made-to-order items, a donation and withdrawn products. In 13 other stores all or nearly all of the catalogue has no price — those stores do not sell through the site. So the number says how much of this there is, not how much of it is broken.
- Sold-out products stay. 34 of 36 stores still keep them in the catalogue — with the caveat from the section above that some do it on purpose.
- There is change, but it is small and goes both ways. Six stores went to zero in at least one check. Counting all items together, 15 stores have fewer than in September and 17 have more.
Caveat. The scanner reads the first 150 products. In 12 stores it read a different number of products than in September, so part of the difference in the “Items” columns is a different sample, not a fix. That is why the store columns say more than the item totals.
Data: 72-stores-2026-10-02.csv — the same columns and the same store numbers as the 11 September file, so every row can be compared with its counterpart.
October: the same stores a third time, and the UK and the US
On 5 October 2026 we read the same 72 stores a third time and, next to them, stores from the portfolios of agencies in the UK and the US — same scanner, same manners, same evening. By then the scanner had two corrections from 5 October: the product page decides about the image description (an empty description or a file name is a defect, the product name in that place is not), and “no price” counts only in-stock products that cannot be bought. We also counted both checks the September way, so the numbers compare.
Where the foreign addresses came from. As in Poland: the “our work” and “portfolio” pages of agencies
that build WooCommerce stores — 18 in the UK (555 addresses) and 16 in the US (564 addresses). 97 and 70
stores had a readable catalogue. Forbidden in robots.txt: 22 and 21 stores; robots.txt answering with
a server error or not at all: 11 and 21 — we did not read those either. In Poland 70 of the 72 were readable
this time: one store’s robots.txt answered with a server error, and another’s API did not respond that
evening.
| Poland | UK | US | |
|---|---|---|---|
| Readable catalogues | 70 | 97 | 70 |
| Clean — scanner since 5 October | 1 | 2 | 4 |
| Clean — checks counted as in September | 0 | 0 | 2 |
| Clean among stores with at least 10 products (new scanner / as in September) | 1 / 0 of 62 | 1 / 0 of 79 | 1 / 0 of 48 |
| Median products read | 106 | 61 | 29 |
The clean stores abroad are almost all tiny shops: 1, 1, 4, 8 and 23 products; the sixth has 113. Among stores with at least ten products, each of the three markets has one clean store.
Share of stores with each finding; in brackets the number of stores and of items in total (column sums in the files below):
| What is visible | Poland | UK | US |
|---|---|---|---|
| Descriptions shorter than 200 characters | 73% (51; 1551) | 81% (79; 2075) | 84% (59; 2237) |
| Sold-out products still in the catalogue | 49% (34; 864) | 42% (41; 469) | 39% (27; 538) |
| The same description on several products | 46% (32; 895) | 32% (31; 656) | 30% (21; 404) |
| Images with no alternative text | 37% (26; 1764) | 34% (33; 2685) | 20% (14; 458) |
| Names longer than 70 characters | 36% (25; 675) | 43% (42; 522) | 23% (16; 157) |
| Products with no photo of their own | 29% (20; 420) | 35% (34; 348) | 33% (23; 1119) |
| Products with no price, or not purchasable | 21% (15; 476) | 22% (21; 379) | 14% (10; 370) |
| One main photo shared by many products | 11% (8; 286) | 10% (10; 151) | 13% (9; 264) |
| Duplicate product code (SKU) | 7% (5; 128) | 2% (2; 6) | 1% (1; 2) |
| Categories with no products | 3% (2; 5) | 2% (2; 2) | 0% (0; 0) |
| Images with no alternative text — the September way (empty field) | 84% (59; 4315) | 88% (85; 5736) | 86% (60; 2112) |
| No price — the September way | 41% (29; 1138) | 40% (39; 747) | 46% (32; 1023) |
Correction, 6 October 2026: one UK store returned the same products on the second page of its API as on the first, so the scanner counted them twice, and its duplicate codes and repeated descriptions came from one product counted twice. The scanner now counts each product once, and we read that store again. Of the other 97 stores where we read more than 100 products, 95 do not repeat pages and 2 could not be checked. Only the UK numbers change: duplicate SKU 2% instead of 3%, the same description 32% instead of 33%, and the item counts in four other rows.
What follows from this.
- Outside Poland the picture is the same: clean catalogues are almost non-existent. The September “zero” comes from the way of counting and from store size — a tiny shop finds a clean catalogue easier.
- The inflated images row was a flaw of the method, not of Poland. An empty field in the media library is found in 84–88% of stores in every market, an empty description or a file name on the product page itself in 20–37%. In half of the stores or more, the product page shows the product name in that place.
- “No price” counted the September way is 40–46% in every market, the new way 14–22%.
- The most stable findings are short descriptions, sold-out products in the catalogue, the same description on several products and products with no photo of their own — the same ranges in three measurements in Poland and in three markets.
- The differences between countries fit within the differences between agencies and store sizes. These samples do not show that any market has better catalogues.
Caveats. Abroad, agency portfolios are more often websites of service businesses: a readable store came out of 17% of addresses in the UK and 12% in the US, against 26% in Poland in September. The foreign stores in these samples are smaller, hence the row with the ten-product threshold. One product page per store decides about the image description; where it could not be checked (4, 10 and 8 stores), we count the empty field as a defect.
Data: 72-stores-2026-10-05.csv (the same store numbers as in September;
there are no rows for store-24 and store-33), uk-stores-2026-10-05.csv
and us-stores-2026-10-05.csv — the columns of the earlier files, plus both
changed checks counted the September way and what the product page shows in place of an empty image
description.
What fourteen stores told us outright
Fourteen stores in this sample forbid reading their catalogue in robots.txt. We respected that
and they appear in none of the numbers above.
The fact itself is worth noting. Stores we know for certain run on WooCommerce numbered 86: 72 with a readable catalogue and 14 refusing. Among those, roughly one in six deliberately closes that door — in a world where most stores do not know the door is there.
What this study does NOT say
Five caveats, without which these numbers are dishonest:
- This is not a representative sample of Polish e-commerce. Seventy-two stores from agency portfolios are seventy-two stores from agency portfolios. We draw no market percentages from it. Ten different contractors at least close off the objection that these are one firm’s mistakes — but two agencies supplied 47 of the 72 stores, so their way of working weighs more in these numbers than the others’. The UK and US samples are built the same way and share that limit.
- “189 dropped” does not mean “189 stores without an API”. Among outbound links on agency pages there are addresses that were never a store — tools, third-party services, social profiles.
- The “no price” row is the least reliable. We read one store three times that day: 149 products with no price at night, not one in the afternoon, 149 again in the evening. We do not know what happened — cache, an import, a plugin. The table uses the evening reading, so 149 of the 1138 items in that row come from that one store. Since 5 October the public scanner counts this row more narrowly: only in-stock products that cannot be bought — no free gifts at 0.00 and no withdrawn products. The tables above come from the earlier version, so if you check a store yourself, this one row will show a smaller number.
- The images row in September counted the field, not the page. An empty alternative text field in the media library does not mean an empty description on the page: since version 9.3.3 WooCommerce puts the product name there. On product pages the row was 37% of stores in Poland, 34% in the UK and 20% in the US in October — details in the October section.
- Money is invisible. And that is the most important sentence in this report.
How to check we did not invent this table
That is a fair question and the honest answer is this: we do not publish the names of the stores we scanned, so you cannot simply go and count them after us. So here are four other routes. The first three require taking our word for nothing at all.
1. Add our numbers up. The file 72-stores-2026-09-11.csv holds the result of each of the 72 stores separately — no names, listed as “store-01” to “store-72”, but with every number. It is comma-separated, so it opens in Excel. There are two sums to do. Add up any column — you get the figure in the last column of the table above, the one headed “Items in total”. Count the rows greater than zero in that same column — you get the store count from the second column. If either sum does not come out, then we are the ones who are wrong. The rows are ordered from the most defective one, not alphabetically, precisely so that nobody can work out which store is which. The October files can be checked the same way — the links are in the October section.
2. Test the instrument. The very scanner that did this study is publicly available: Storefront Scan. Enter any WooCommerce store — your own, someone else’s, anything — and compare what it reports with what you can see in that store yourself. If the tool counts honestly on a store you know, it counted the same way on those seventy-two. Since 5 October the scanner counts two rows more carefully than in September — images without alternative text and products without a price — so on the same store it shows smaller numbers in those rows than the September method.
3. Draw your own sample. This is the strongest test and it costs a quarter of an hour. Open the site of any agency that builds stores, take ten entries from its “our work” page and run them through the scanner — it accepts ten checks a day from one connection; a guard against abuse, not against verification. Our claim is that clean catalogues are rare. If it is false, it falls apart on the first ten — several stores with no defects turn up. Across 72 stores in September we found none, in October one in 70, and across 167 stores in the UK and the US six, five of them tiny shops with at most 23 products. Ten stores are enough to challenge that conclusion, but not enough to replace it: what makes these tables worth anything is that the stores come from many different contractors rather than one.
4. Repeat our sampling. To a newsroom or a researcher who wants to repeat the study on exactly
the same pool, we will hand over the list of “our work” and “portfolio” pages of the nineteen
agencies the addresses came from
— same sources, same scanner, your own result. What we will not hand over is a ready-made list of
stores with defects. We promised not to publish the names, and that holds when the person asking is
a journalist too. Write to contact@merchlint.com.
One request at the end, not a condition. If you run your own check with our scanner and publish it, say which tool it was made with. The licence does not require this — it requires naming the source only for our numbers. But a reader who wants to repeat the check needs to know what it was made with.
What cannot be seen from the street
Everything above is a symptom. None of it says what it costs — and that is the only question that ultimately matters to a store.
From the outside you cannot see:
- whether a product nobody can buy today used to sell last year;
- how much money stands behind each finding;
- what has been sitting in stock for a year without a single sale;
- whether a product that sells has been hidden by accident;
- whether coupons from the last campaign still work.
All of those need order history. No tool working from the outside answers them — and anyone claiming otherwise is guessing.
How to check your own store
The same checks we ran on 72 stores can be run on yours: Storefront Scan reads the public catalogue and shows the list. Nothing to install, no account, a dozen seconds.
To see amounts next to the findings you need a plugin that reads the data from the inside along with order history — Merchlint is free and writes nothing to the store.
If you are getting a store ready for the season, we wrote up separately what to check in the catalogue before a campaign: Black Friday: what to check.
The method is repeatable. The scanner reads only the public API, respects robots.txt and keeps
to three requests per second. If you run a newsroom or a study and want to verify these numbers or
repeat the work on a different sample, write to contact@merchlint.com and we will describe exactly
what was counted and how.