Shopify product description length: it's not the median
We have already measured how long a Shopify product description actually runs to. If that is the question you came with, the answer is in product description examples vs live products — a distribution taken from a different sample, with the quartiles and the shape.
This piece asks the question that one left open. Does the answer depend on how big your catalogue is?
On 22 September 2026 we read the public product catalogue of 178 Shopify storefronts — 6,393 products — and split them by catalogue size. The typical description barely moves. Almost everything else does.
The typical store writes the same length either way

We read up to 50 products per store, which splits the set in two: 105 stores filled that read, so they hold 50 or more products and we saw the first 50 the endpoint returned; 73 came back short, so we saw their entire catalogue.
| Filled the 50-product read | Whole catalogue seen | |
|---|---|---|
| Stores | 105 | 73 |
| Products measured | 5,250 | 1,143 |
| Median description (per store) | 668 | 696 |
| Products under 400 characters | 31.0% | 22.0% |
| Typical store's share under 400 characters | 20.0% | 0.0% |
| Stores with a duplicate description | 42.9% | 15.1% |
Read the third row first, because it is the one that surprised us: 668 characters against 696. Merchants with big catalogues are not writing shorter descriptions. Whatever they write, they write at about the same length as everyone else.
See what Arvio does with product descriptions
What changes is how many products get skipped
Half the stores in the left column have at least a fifth of what we saw under 400 characters; only 29 of 105 had none that thin. So the median store with a large catalogue is carrying one thin product in five, while writing perfectly normal descriptions for the rest.

The second chart is there because a median can mislead you here. On the right, 38 of 73 stores had nothing under 400 characters — which looks like the smaller stores are simply better. Read it with its context: those stores have a median catalogue of 8 products, and 42 of them hold fewer than ten. On a store with three products, "share under 400 characters" can only land on a round fraction, and 9 of them were under 400 on every product they had.
The smaller stores are not uniformly better. They are small enough that there is no long list to lose track of.
Duplicates follow the same curve, harder
In the left column, 42.9% of stores ship at least one description word-for-word identical to another product in the same store, against 15.1% on the right. Across the whole set that is 772 products carrying a copy of some other product's text, 702 of them in the left column.
Empty descriptions are not counted as duplicates of each other, so that figure does not overlap with the empty rate in the earlier piece. A duplicate here means two products whose descriptions match once you strip the HTML, collapse whitespace and lowercase.
That matters more than a short description does. A thin description is a weak page; two identical descriptions tell a search engine that two of your pages are the same page. If you want the mechanics of finding and merging them, we wrote that up separately in Shopify duplicate products cleanup.
How Arvio handles the products you never scroll to
Why a big catalogue does this
Nobody decides to leave a product blank. You write the early ones carefully, then a supplier sends a spreadsheet with a whole batch more, and you paste the same paragraph into all of them to get the store live. Those products are in your catalogue and in your sitemap, and you will never scroll to them again.
The problem is not the length you chose for the products you were thinking about. It is the products you stopped thinking about — and that group grows with the catalogue, not with the writing.
What to actually do
Sort by description length, not by date. Your admin sorts by newest, best-selling, or alphabetical, and none of those surface the problem. Export your products to CSV and sort ascending on the description column, then work from the bottom. One caution from our own method: an exported description is raw HTML, so a product that looks like it has 200 characters of markup may have almost no words in it. Strip the tags before you judge the length, or just open the short ones and look.
Look for duplicates before you look for short ones. Rewriting a duplicate is faster than writing from nothing, and it fixes the worse problem first.
If one product in five needs work, going through them one at a time is the same process that produced the list. The mechanics of doing it in bulk are in how to bulk edit product descriptions in Shopify.
When this is not worth doing
Most of the value of a number like 42.9% is finding out that it is not about you. Three cases where it is not.
A small catalogue is an afternoon, not a tooling problem. The 73 stores we saw in full held a median of 8 products, and 42 of them had fewer than ten. At that size, open every product and read it. Anything you install costs more time than the job does.
A one-off mess is a one-off job. If one supplier import dropped the same paragraph across sixty products, export the CSV, fix the column, import it back, and you are done. That is not a recurring problem, and a recurring tool is the wrong shape for it.
The case for a tool is repetition, not size. It is worth something when the catalogue keeps growing, when batches keep arriving, and when the work is writing sixty replacement paragraphs rather than finding out which sixty. That is the job Arvio is built for: it finds the products with missing or duplicated descriptions and writes the fix instead of handing you a report. You set the scope — one product, a batch, or the whole catalogue — and every change waits for you to approve or reject it, with any edit reversible in a click.
What it will not tell you is whether rewriting anything changed your traffic. Nothing in this article measures that, and the app does not measure it either. We counted how many products are thin or duplicated. What that costs a particular store is a different question and we did not answer it.
Check your own catalogue with Arvio
FAQ
How long should a Shopify product description be?
We did not find a length that works. We found what stores write. Across the 178 storefronts, the median description was 704 characters of plain text, and the median store's own median was 689. Splitting the set by catalogue size barely moves it: 668 characters against 696. Those are the numbers other people are hitting, which is not the same as evidence that hitting them sells anything.
Is there a character limit on a Shopify product description?
Shopify's own product descriptions documentation does not publish one. It is not a ceiling most catalogues get anywhere near: the highest per-store median in our sample was 4,317 characters, and the median store sat at 689.
Do duplicate product descriptions hurt SEO?
We counted how common they are, not what they cost. Across the whole set, 31.5% of stores had at least one description repeated word for word on another product in the same store, covering 772 products. What that does to any particular store's traffic is not something a one-pass read of public catalogues can answer, and we did not try to.
Can you bulk edit product descriptions on Shopify?
Yes. Export the products to CSV, edit the description column, import it back. The step-by-step is in how to bulk edit product descriptions in Shopify. One caution that comes straight out of our method: the exported column is raw HTML, so a cell that looks long in a spreadsheet can hold almost no words.
What is a product description on Shopify?
The main body text on the product page, stored as HTML. That storage detail is why we strip the tags before counting anything — an empty paragraph tag is real characters in an export and zero characters to a reader. Every length in this article is plain text after the tags come off.
How do I find the thin and duplicated ones on my own store?
Export the catalogue and sort ascending on the description column, then work up from the bottom. For duplicates, sort that same column alphabetically instead: identical text lands next to itself, which is faster than reading anything.
Does a bigger catalogue mean worse descriptions?
Not in length. The typical store writes about the same either way. It means worse coverage: the median store with 50 or more products had a fifth of what we read under 400 characters, while the median store we saw whole had nothing that thin, and 42.9% of them carried a word-for-word duplicate against 15.1%.
How we measured this
The sample frame is the Shopify Community "Store Feedback" board, where merchants post their own store URL and ask strangers for a review. We read the first post of 600 threads, posted between March 2025 and September 2026, and took every linked hostname. That gave 406 candidate domains, of which 185 returned a valid Shopify product catalogue. We then requested each one's public product endpoint once, anonymously — the same endpoint any visitor or crawler can already reach. 180 answered, two of those had no products, and that leaves the 178 storefronts and 6,393 products above.
What this doesn't show
- This is not a random sample of Shopify. It is a public, reproducible convenience frame. Merchants who post asking for feedback skew newer, smaller, and more likely to be struggling. Anyone can rebuild the same list from the same board, over the same date range, with the same rule.
- The larger stores were read one page deep. We saw the first 50 products the endpoint returned for them, and we did not establish what decides that order. The
updated_atthe endpoint reports came back as the same day for every product we read, so it cannot tell us either. Whatever the order is, it is not something we controlled, and the rest of those catalogues is unmeasured. - Catalogue size here is a floor, not a count. A store in the left column holds at least 50 products; we cannot tell from this read whether it holds 51 or 5,000.
- Length is plain-text characters, not words. HTML is stripped before counting, so an empty paragraph tag counts as zero.
- Five stores could not be read and two had no products. They are excluded from every denominator rather than counted as zero. Unreachable and empty are different things.
