Guide Product Variant SEO

Quand to give chaque product variant its propre URL vs. canonical to the base, ProductGroup + hasVariant schema (Feb 2024), and how Shopify, WooCommerce, BigCommerce, and Magento differ.

Première publication : 26 juin 2026 · Dernière mise à jour : 3 août 2026 · Advanced
Langues
1 indice probant sur cette page

A product sold in nombreux options (size, color, storage) generates near-duplicate URLs. Consolidate the ones with aucun standalone search demand to a base URL with a canonical, and give an indexable URL seulement to variants que have leur propre demand AND peut carry unique content. Google's par défaut is a separate URL per variant canonicaling to the parameter-free base — but SearchPilot trouvé a 22% uplift from doing the reverse (base canonicals to the meilleur variant), so context wins. Mark the relationship up with ProductGroup + hasVariant (Feb 2024). Platforms differ: Shopify auto-canonicals every ?variant=ID to the base, BigCommerce has the cleanest built-in handling, WooCommerce/Magento depend on plugins or config. Schema describes the relationship; it doesn't faire a variant rank.

TL;DR — Variants créer near-duplicate URLs; the job is sorting qui deserve independent ranking and qui to consolidate. Google’s par défaut: a separate URL per variant (chemin segment or requête parameter) with the parameter-free base as the canonical. Reverse it — base canonicaling to a high-demand variant — quand a spécifique variant has the search demand and the unique content to earn it (SearchPilot mesuré a 22% organic uplift doing exactly ce). Mark the relationship up with ProductGroup + hasVariant (Feb 2024); single-page sites besoin un URL canonique pour the groupe, multi-page sites besoin complet self-contained markup par page, and variesBy doit utiliser complet schema.org URLs. Garder canonical, lien internes, and sitemap consistent — rel=canonical is a hint, pas a directive. Platform defaults differ and tout besoin auditing.

The tension, stated plainly

Every variant is a fork in the road. Give it its propre crawlable URL and you’ve créé a near-duplicate que splits popularité des liens and eats budget d’exploration. Select it seulement via JavaScript with aucun URL modifier and que spécifique variant state has aucun adresse of its propre — it can’t be crawled, indexé, or ranked as a distinct entity, separate from the question of si Google renders lune page’s JavaScript at tout. The correct réponse isn’t a blanket rule — it’s a per-variant judgment appel driven by two inputs: fait ce variant have its propre search demand, and peut vous give it genuinely unique content. Everything ci-dessous is in service of making que appel correctement and alors implementing it cleanly. Ce is the variant-specific deep dive que sits alongside product page SEO; que guide covers the whole PDP, ce un zooms in on the variant decision.

Ce que Google en réalité recommends

Google’s ecommerce Structure d’URL guidance is explicit que variants devrait obtenir crawlable URLs, pas JS-only state changements.

Evidence for this claim Google recommends crawlable URLs for product variants that it should discover. Scope: Use links with href values and stable URL structures; JavaScript state alone may not expose each variant. Confidence: high · Verified: Google: Ecommerce URL structure

Its recommended structures: “A path segment, such as /t-shirt/green or “A requête parameter, tel as /t-shirt?color=green.” Les deux are fine — pick un and be consistent.

Pour the canonical, the par défaut is to consolidate to the clean base: “Utiliser l’URL with the requête parameter omitted as l’URL canonique. Ce peut aider Google meilleur comprendre the relationship entre product variants.” And pour path-based variants: “Pour products with unique URLs per variant, inclure the canonical product URL on tout variant pages en utilisant a <link rel="canonical"> tag.”

The whole point is reducing redundant retrievals. Google: “Minimize the number of alternative URLs que retourner the même content” — because “the même content may be retrieved multiple times by the robot d’exploration si Google thinks two URLs are différent but result in the même page being renvoyé.” That’s the crawl-budget cost of variant sprawl in un sentence.

Quand a variant earns its propre indexable page

A variant needs both demand and differentiation to earn an independently indexable URL. Source : Google Search Central

First ask whether the variant has measurable standalone search demand. If not, consolidate it to the preferred product URL. If demand exists, ask whether the page can provide meaningfully distinct copy, media, specifications, and offer data. If not, consolidate. If both conditions are met, use a distinct, self-canonical variant URL and align the canonical, internal links, and sitemap with that choice.

© Patrick Stox LLC · CC BY 4.0 ·

The par défaut (“canonical everything to the base”) is correct pour the overwhelming majority of variants. Nobody searches “size medium” or “the third blue” in isolation, so ceux devrait consolidate. But some variants are réel, standalone requêtes — “512GB iPhone 15 Pro,” “navy blue trench coat,” “extra-wide running shoes.” Pour ceux, two conditions les deux have to hold avant vous split les out:

  1. There’s measurable search demand pour que variant. Pull volume pour “[product] + [variant]” in a keyword outil. Zero volume → consolidate.
  2. Vous pouvez give lune page genuinely unique content — its propre copy, images, specs, reviews. Si vous pouvez’t differentiate it, an indexed-but-thin variant page is worse que consolidation.

Ce is the hybrid approach: un master product page, plus dedicated variant URLs only pour high-demand requêtes vous pouvez en réalité differentiate. Worth being clair à propos de ce que ce is: Google’s docs tell vous variants besoin addressable URLs and a canonical strategy, but the demand-plus-unique-content gate itself is practitioner decision-making (the même approach Yoast recommends), pas a Google eligibility requirement or a guarantee que a qualifying variant va rank. Spin up a separate indexable URL sans unique content and you’ve recreated the duplicate-content problem vous were trying to éviter.

The counterintuitive partie: canonical direction isn’t fixed

Here’s où conventional advice cracks. SearchPilot ran a controlled split tester que did the opposite of the par défaut — ils modifié the principal product page’s canonical from self-referential to point at a spécifique variation page. Le résultat: “the best estimate being a 22% uplift to organic traffic to those pages.”

The context que made it fonctionner: le site had déjà made variants indexable with self-referential canonicals, but ceux variant pages “were pas getting indexé consistently, and were pas receiving as beaucoup trafic organique as had been hoped.” Pointing the principal page’s canonical at the best-known variant concentrated the signals où the demand en réalité was.

The lesson isn’t “always reverse your canonicals.” SearchPilot is careful ici: “Every ecommerce website’s setup va be différent selon a lot of factors, notamment the number of variations per product, the maillage interne structure, and the lifetime of products on the website. Ce approach may pas fonctionner pour everyone.” The lesson is que canonical direction is a decision, pas a par défaut — point it at whichever URL has the demand and le contenu to deserve indexation. Pour how Google picks a canonical quand votre signals disagree, voir canonicalization — là are roughly 40 signals at play, and the rel=canonical tag is a strong un but pas the seulement un.

Garder votre signals consistent

A balise canonical is a hint, pas a command. Google peut and va pick a différent canonical que the un vous declared si votre autre signals contradict it — qui is exactly ce que “Duplicate, Google chose a different canonical” in Search Console signifie. The fix is consistency: l’URL vous pouvezonicalize to devrait be the même URL vous lien to internally and the même URL vous liste in votre sitemap. Quand the balise canonical points un façon and votre lien internes point un autre, you’ve handed Google a raison to override vous. (Ce is the même consistency discipline que governs faceted navigation, où filter URLs créer the même near-duplicate sprawl.)

The product variant and selected-offer contract

Pour every crawlable or feed-submitted variant URL, the systems ci-dessous doit identifier the même sellable selection. Evidence for this claim Google recommends crawlable URLs for product variants that it should discover. Scope: Use links with href values and stable URL structures; JavaScript state alone may not expose each variant. Confidence: high · Verified: Google: Ecommerce URL structure

CoucheContract
Requested URLEncodes the intended product and variant state in a stable, shareable formulaire.
Visible PDPLoads the intended product identity, selected attributes, SKU, price, currency, and availability; a fresh navigation reproduces the state.
Canonical/indexabilityFollows the declared parent-product or indexable-variant strategy.
Données structuréesUses the matching product/groupe identity, SKU/GTIN, attributes, Offer.url, price, currency, and availability.
Merchant or agent feedSends the même item ID, groupe ID, offer facts, and a landing URL que recreates the submitted variant.
Cart and checkoutAdds que exact SKU and revalidates the represented price, currency, and availability sans silently substituting un autre variant.

En d’autres termes, the visible PDP, rendered Product JSON-LD, feed item, selected variant, cart, and checkout devrait agree on product identity, SKU, groupe ID, selected attributes, price, currency, and availability. Checkout may legitimately revalidate fast-changing stock, delivery, tax, or price. Quand the state changements, it devrait expliquer the modifier au lieu de completing a différent offer sous the même selection. Postcode-dependent fulfillment peut refine the general availability affiché avant emplacement is connu, but the publié offer ne doit pas claim a state the backend déjà knows is faux.

A parent-product strategy peut expose selectable variants pendant que consolidating leur URLs to the parent. An indexable-variant strategy exige chaque qualified variant to reconstruct itself, self-canonicalize, recevoir crawlable lien internes, and carry variant-specific page and offer données. Mixing the two strategies—tel as self-canonical variant URLs whose lien internes and sitemap encore point seulement to the parent—creates contradictory evidence.

Evidence for this claim Google recommends crawlable URLs for product variants that it should discover. Scope: Use links with href values and stable URL structures; JavaScript state alone may not expose each variant. Confidence: high · Verified: Google: Ecommerce URL structure

Ne faites pas utiliser a fragment tel as #blue-large quand a feed, server, robot d’exploration, or external agent doit requête a spécifique variant. Navigateurs ne faites pas send the fragment in the HTTP requête, so the origin ne peut pas select a différent réponse from it and feed validators ne peut pas rely on it as a distinct landing-page state. Utiliser a chemin or requête parameter quand the selection doit be addressable outside the already-running navigateur page. Google’s JavaScript SEO guidance explique pourquoi fragment-based content states are unreliable pour search.

ProductGroup données structurées (the Feb 2024 mettre à jour)

In February 2024 Google ajouté structured-data prise en charge pour product variants via the nouveau ProductGroup type. It’s the pris en charge façon to tell Google “ce blue size-M shirt and ce red size-L shirt are the même product in différent options.” It doesn’t faire variants rank — données structurées aids understanding and rich-result eligibility, pas rankings — but it’s how vous faire the parent-child relationship machine-readable. Evidence for this claim Google supports ProductGroup structured data to describe product variants and their varying properties. Scope: Valid markup aids understanding and eligibility but does not guarantee ranking or display. Confidence: high · Verified: Google: Product variants structured data

The pieces:

  • ProductGroup — the parent type. Google’s current documentation listes seulement name as required at the ProductGroup level; productGroupID (the parent SKU/ID) and variesBy are recommended, pas requis — though skipping les defeats the point of the markup, since Google nécessite variesBy to know qui attribute en réalité distinguishes the variants. Evidence for this claim Google supports ProductGroup structured data to describe product variants and their varying properties. Scope: Valid markup aids understanding and eligibility but does not guarantee ranking or display. Confidence: high · Verified: Google: Product variants structured data
  • hasVariant — nests chaque Product variant sous the parent groupe (Approach 1, the plus compact and recommended un).
  • isVariantOf — the inverse: ajouté to chaque Product to lien it back to its parent groupe (Approach 2, qui may suit some CMS setups meilleur).
  • variesBy — listes the variant-defining properties, and ce is the la plupart courant pitfall: it doit utiliser complet schema.org URLs comme https://schema.org/color and https://schema.org/size, pas the short strings "color" / "size".

Single-page vs. multi-page matters. Google: “Pour single-page sites, là doit be seulement un distinct URL canonique pour the overall ProductGroup que tout variants belong to.” But “pour multi-page sites… chaque page doit have complet and self-contained markup pour the entities défini on que page.” So si every variant has its propre URL, every variant page carries its propre complet markup — vous don’t share un block à travers les.

Chaque variant Product nécessite a unique @id, a unique sku or gtin, its propre variant attributes (color, size), an isVariantOf pointer to the parent, and an Offer whose url matches the current page. The usual échecs are manquant unique variant IDs, an inconsistent productGroupID entre parent and variants, and the variesBy-must-be-a-full-URL trap ci-dessus. Validate with the Résultats enrichis Tester, alors Inspection d’URL, alors sitemap submission.

Qui variants belong in the markup?

Markup devrait décrire the catalog shoppers peut en réalité select, pas every combination a configurator pourrait theoretically produce. Inclure a variant quand it has a stable identity tel as a SKU or GTIN, represents a réel attribute combination, is reachable via the current product experience, belongs to the même product groupe, and has an offer state le site peut garder current. The visible selector, variant URL strategy, and ProductGroup graph devrait décrire the même définir. Evidence for this claim Google supports ProductGroup structured data to describe product variants and their varying properties. Scope: Valid markup aids understanding and eligibility but does not guarantee ranking or display. Confidence: high · Verified: Google: Product variants structured data

Ne faites pas generate the Cartesian product of every color, size, material, accessory, and service option quand nombreux combinations ne faites pas exist or ne peut pas be purchased. Que creates an enormous, misleading entity graph with invented products and stale offers. A one-page selector peut nest its réel variants; variant-specific pages besoin complet markup pour the entities on chaque page. A configurable or made-to-order product devrait mark up the genuine purchasable product and current offer—pas manufacture thousands of hypothetical SKUs solely pour schema.

Budget d’exploration: the scale problem

Variant URL proliferation is a courant crawl-budget drain on grand ecommerce sites, though how beaucoup it en réalité costs vous dépend on votre catalog’s scale and Google’s existing demande d’exploration pour votre domain — it isn’t a fixed universal cost. The 200-products-×-20-variants = 4 000-near-duplicate-URLs math is a worked exemple to montrer the shape of the problem, pas a mesuré average pour every site. Budget d’exploration is an efficiency concern, pas a ranking factor — but on a grand catalog, explorer wasted on redundant variant URLs is explorer pas spent on votre nouveau and mis à jour pages. Don’t estimate votre réel exposure from the arithmetic alone: pull Search Console’s Statistiques d’exploration report (Settings → Statistiques d’exploration) to voir how beaucoup of Googlebot’s activity on votre site is hitting variant URLs, or vérifier server logs directement pour ?variant=/path-segment variant hits versus total explorer requêtes. Consolidating low-value variants to a canonical base, over temps, reduces the explorer pressure ceux redundant URLs créer.

Evidence for this claim Google recommends consistent canonical URLs for ecommerce variant URL patterns. Scope: Canonicalization is a hint; independently useful variants may warrant separate canonical URLs. Confidence: high · Verified: Google: Ecommerce URL structure

Platform-by-platform behavior

The defaults differ, and tout of les besoin auditing:

  • Shopify appends ?variant=ID automatically and canonicals every un of ceux parameter URLs back to the base /products/<slug>. That’s the correct appel pour the vast majority of stores — it consolidates everything cleanly. The catch: it consolidates everything, so si vous en réalité vouloir a high-demand variant to rank independently, Shopify’s automatic canonicalization fonctionne contre vous, and third-party apps and custom themes parfois break the canonical entirely.
  • WooCommerce donne vous complet URL contrôler, qui signifie the canonical handling rides on votre SEO plugin (Yoast, Rank Math). The supplémentaire wrinkle is attribute archive pages, qui peut generate leur propre duplicate URLs on top of the variants.
  • BigCommerce is widely regarded by practitioners as having the strongest out-of-the-box canonical handling of the four — variant URLs are natively canonicalized. Treat que as a practitioner assessment plutôt que something Google or BigCommerce documents as a formal guarantee, and confirmer current behavior contre votre propre platform version avant relying on it.
  • Magento généralement exige manual configuration or extensions, and parce que layered navigation and product variants les deux produce duplicate URLs, the two problems compound si vous don’t adresse les deux.

On Bing specifically, Bing Webmaster Outils offers URL Normalization — a code-free façon to consolidate parameter variants sans ajout a balise canonical to every page, qui Microsoft itself has appelé “better than canonical” pour ce utiliser.

Myths worth killing

  • “Variants cause a duplicate-content penalty.” Là is aucun duplicate-content penalty. The cost is signal dilution and explorer waste, pas a punitive action — but the outcome (weaker rankings) peut feel the même, so it encore matters.
  • “Always canonical every variant to the base.” SearchPilot’s 22% result montre the reverse peut win. Direction is contextual.
  • ?color=green parameters are bad for SEO.” Google explicitly recommends requête parameters or chemin segments. Parameters are fine with the correct canonical.
  • “ProductGroup schema makes variants rank better.” It aids understanding and rich-result eligibility; it n’est pas a ranking signal.
  • “Shopify handles all variant SEO so I’m done.” Its par défaut consolidation is correct pour la plupart products but actively empêche high-value variants from ranking independently, and apps break it.
  • “JS-only variant selection (no URL change) is best.” Google crawls the par défaut page state. A variant reachable seulement via JavaScript with aucun URL modifier has aucun separate adresse, so it can’t be crawled, indexé, or ranked as its propre entity — that’s an addressability problem, pas proof que Google can’t render JavaScript at tout (Google fait render JS, but warns que dynamically-generated Product markup peut be crawled moins frequently and reliably).

Où ce sits in the cluster

Ce is the variant-specific companion to product page SEO, qui covers the complet product detail page. The canonical mechanics live in canonicalization; the closely connexe filter-URL version of the même near-duplicate problem lives in faceted navigation. Pour the bigger picture, voir Ecommerce SEO.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.