Every color and size collapses into one URL, on purpose
Technical SEO

Every color and size collapses into one URL, on purpose

Giving every color and size its own URL splits one product's ranking signal across duplicate pages. How to decide which variants become pages, and which collapse.

“Every color and size gets its own URL” sounds like more pages, more keywords, more coverage. It is almost always the opposite. You have taken one product’s ranking signal and split it across a dozen near-identical URLs, handed Google a duplicate-content puzzle it will solve against you, and diluted the links and authority that should have concentrated on a single page. More URLs is not more SEO. On a large catalog it is usually less.

The fix is not fewer pages for their own sake. It is a decision most catalogs never consciously make: which variants deserve to be a page, and which should collapse into one canonical product with the options handled in-page. When no one makes that call, the platform makes it by default, and it makes it badly. Faceted navigation and variant sprawl are where crawl budget, canonical signals, and rankings quietly go to die.

Why “more URLs” feels right and is usually wrong

The intuition is easy to follow. Each variant looks like a keyword. “Red dress,” “blue dress,” “size 8,” “size 10”, every one of those is something a person might type, so surely every one deserves a page to rank for it. Give the crawler more surface area and you get more coverage.

What actually happens is fragmentation. A product that could have accumulated links, engagement, and ranking authority on one strong page instead spreads all of that across twelve thin ones that differ by a single attribute. None of the twelve is as strong as the one would have been. You did not expand your footprint. You divided it.

The whole piece is really about one decision: is this variant its own search intent, or is it the same product wearing a different label? Answer that per product and the technical work becomes obvious. Skip it and you inherit whatever your ecommerce platform spits out.

What variant sprawl actually costs you

There are three separate taxes, and most sprawling catalogs pay all three at once.

The first is signal dilution. Links from around the web, internal links from your own navigation, and the ranking history a page accumulates all get split across near-duplicate URLs. Consolidated onto one page, those signals compound. Scattered, they cancel.

The second is duplicate content. When you publish “Red Cotton Tee / Size M” and “Red Cotton Tee / Size L” as separate URLs with 98% identical copy, Google has to decide which one is the real page. It will decide, and it frequently decides differently than you intended, indexing the size nobody searches for and burying the one that matters. This is the same mechanism behind Google ignoring your canonical tags: the engine treats your signals as suggestions and overrules them when the page structure invites it to.

The third is crawl budget. Bots do not have unlimited patience for your site, and every ?color=red&size=M permutation they fetch is attention they did not spend on a page that could actually rank. On a large catalog those permutations run into the tens or hundreds of thousands, which is exactly the kind of waste that leaves real inventory undiscovered. The crawler burns its allowance on filter noise and never efficiently reaches the pages you care about.

The real question: is this variant its own search intent?

Here is the decision rule the whole strategy hangs on. A variant earns a URL only if it represents distinct demand that a distinct page can serve.

“Red dress” versus “blue dress” might clear that bar, those can be genuinely different searches with different buyers, different styling, different seasonality. “Red dress size M” versus “red dress size L” almost never does. Nobody is running a size-specific search that a size-specific page is uniquely positioned to answer; they are choosing size on the product page after they have already decided they want the dress.

Search intent decides what is a URL. Catalog structure does not. The moment you let the database schema, one row per SKU, dictate one page per SKU, you have outsourced an SEO decision to a system that has no idea what people search for.

When variants should collapse into one canonical product

For the long tail of any catalog, sizes, most colors, minor SKU differences, the answer is collapse. One product page, every option handled in-page with a selector, variant and product structured data describing the full set of choices, and the canonical on every parameter URL pointing back at the parent.

Done right, the collapsed page loses nothing. The shopper still picks red in size M; the page still communicates that red and M exist, through structured data and the on-page selector. But there is a single URL accumulating all the signal, a single page for Google to rank, and no duplicate-content puzzle to lose. This should be the default, and the exceptions should have to argue their way out of it.

When a variant earns its own page

Sometimes a variant is a category in its own right. A color that is a search term people build entire queries around. A configuration with genuinely unique specs, a different use case, its own reviews and content. A bundle that is effectively a different product. Those can justify a standalone URL, but it must be a decision, made because the demand and the content are actually distinct, not an accident of how the platform generates pages.

The test is simple: could you write a meaningfully different page for this variant that serves a meaningfully different search? If yes, give it a URL and real content. If you would be publishing the same page with one word swapped, collapse it.

The technical toolkit, used correctly

Once you have decided what should exist, the mechanics are well understood, and each one has a common misuse.

Canonical tags consolidate signal by naming the parent as the real page. Their failure mode is trusting them blindly: Google ignores a canonical when the “duplicate” is not truly duplicative, so canonicalization only works on top of a real collapse decision, not instead of one.

Parameter handling tells crawlers which URL parameters change content and which are just tracking or sorting. Get it wrong and you either hide real pages or wave the crawler into infinite permutations.

For faceted navigation, the three tools, noindex, canonical, and robots blocking, are not interchangeable. Canonical consolidates a near-duplicate you still want crawled; noindex keeps a page out of the index but still spends crawl budget visiting it; a robots.txt block stops the crawl entirely but also stops Google seeing a noindex you placed on the page. Mixing them up is how teams accidentally deindex a whole category or, worse, keep crawling the junk they meant to block.

Variant and product structured data lets the collapsed page still communicate every option, sizes, colors, price ranges, availability, so consolidation does not cost you the rich detail. It is how one URL represents twelve choices without twelve pages.

Faceted navigation: the biggest offender

If variant sprawl is the disease, faceted navigation is the epidemic. Filters and sorts multiply against each other, three colors times four sizes times two price bands times a sort order is dozens of URLs from a single category, and real catalogs have far more facets than that. Unmanaged, it is the single largest source of parameter-URL bloat on most ecommerce sites.

The move is to decide, deliberately, in three buckets. Index the handful of facet combinations that map to real demand, a “black running shoes” filter that is genuinely a search category. Canonicalize the near-duplicate combinations back to the base category. Block, at the crawl level, the sort orders and deep filter stacks that generate infinite low-value permutations. This is where crawl budget is won or lost, and it is worth doing by hand rather than trusting a plugin’s defaults.

How to audit your own variant sprawl this week

You do not need a project to see whether this is hurting you. Crawl your own site and look for parameter and duplicate URLs, how many are there, and are they in the index? Check which variant Google actually indexed for a few of your top products versus which one you intended to rank. Look for the same product’s rankings split across two or three URLs, a telltale sign the signal is fragmented. And confirm your canonicals actually resolve to the parent, not to another variant or to themselves. Rendering matters here too: if your variant selectors and structured data only appear after JavaScript runs, a crawler may never see them, which is its own invisible-to-crawlers problem.

The goal is concentration, not deletion

None of this is about having fewer pages because small is virtuous. It is about concentrating signal where intent actually exists, so the pages that can rank have every advantage instead of competing with their own near-copies. Decide which variants are pages. Decide it on search intent, the same discipline that tells you where on the journey buyer intent quietly dies. Above all, decide it yourself, because if you do not, the platform will decide by default, and it will get it wrong at scale.

So before you ship the next thousand SKUs: how many of your product URLs are real pages people search for, and how many are just a filter Google decided to index?

Variant sprawl is one facet of the technical-SEO foundation. For the whole picture, rendering, canonical integrity, redirects, and crawl budget, see the Technical SEO hub.

Frequently asked questions

Should each product variant have its own URL?

Only if the variant represents distinct search intent, a color that is its own demand category, or a variant with genuinely different specs and use. Sizes and most minor variants should collapse into a single canonical product page with in-page selectors, so the product’s ranking signal concentrates on one URL instead of splitting across a dozen near-identical ones.

How do product variants hurt SEO?

Three ways. They split one product’s ranking signal across near-identical pages, so links and authority that should concentrate get diluted. They create duplicate content, which forces Google to pick a canonical for you, often the wrong one. And they waste crawl budget on parameter permutations like ?color=red&size=M, so bots spend their allowance on filter noise instead of your real pages.

What is the best way to handle variants for SEO?

Collapse most variants into a single canonical product page with in-page selectors and variant structured data, and point the parameter URLs’ canonicals at that parent. Give a variant its own page only when it has distinct search intent and distinct content. Make it a deliberate decision per product, not a default the platform makes for you.

How do canonical tags work for variants?

You point the canonical on each variant or parameter URL at the parent product so Google consolidates the signal onto one page. But a canonical is a hint, not a command, Google ignores it when the pages are not actually duplicative, or when other signals disagree. That is why canonicalization has to be paired with a real decision about which pages should exist at all.

What is faceted navigation and why is it an SEO problem?

Faceted navigation is the filter-and-sort system on a category page, color, size, price, brand. Each combination can generate its own parameter URL, so a handful of filters produces thousands of near-duplicate pages. Left unmanaged, that drains crawl budget and creates duplicate content. The fix is deciding, deliberately, which facet combinations to index, which to canonicalize, and which to block.

Disagree with any of this? That's the useful conversation. LinkedIn  ·  Email  ·  More writing