Product variant SEO
Product variant SEO is the decision of how to handle color, size, and SKU variations of one product: a single canonical PDP with selectors and schema hasVariant, or separate URLs per variant. The default pattern shifted in October 2023 when Google released hasVariant support.
Long definition
The variant question used to force a choice between two bad options: one PDP for all variants (lose long-tail rankings for "red leather jacket size M") or one URL per variant (fragment authority across dozens of near-duplicates). Neither was clean. In October 2023 Google released hasVariant support on ProductGroup, which is now the recommended pattern for most catalogs.
The single-canonical pattern (recommended for most). One URL per product. Variant selectors (color swatches, size dropdown) update the gallery, price, stock, and SKU client-side without changing the URL. Schema is a ProductGroup with productGroupID, variesBy: ["color", "size"], and a hasVariant array of Product nodes — one per SKU — each with its own sku, gtin, image, offers.price, and offers.availability. All authority concentrates on the parent URL; Google sees the variant inventory through schema and the SERP can render variant-specific results when relevant.
The per-variant URL pattern (still valid for high-demand variants). When specific variants have meaningful search demand — "Nike Air Force 1 White" gets 50× the volume of generic "Nike Air Force 1" — you can split the variant onto its own URL with its own H1, copy, and canonical. This works for color on fashion, finish on furniture, capacity on electronics. The trade-off: you maintain N pages instead of 1, must manage cross-linking carefully, and risk thin-content flags if the per-variant copy is mostly boilerplate.
The hybrid pattern. A single canonical PDP for the SKU group plus dedicated per-color landing pages indexed for high-demand variants, with the landing pages canonicalizing to the parent for low-search variants. Higher build cost, best of both for fashion and accessories.
What doesn't work: indexing every SKU URL as a separate page with identical copy and a different image. Google's duplicate-content systems collapse them, and the wrong variant often ends up canonical.
Common misconceptions
- "hasVariant is mandatory." It's optional. If your variants don't differ on price, image, or availability, you don't need it — single Product schema works.
hasVariantis for catalogs where SKUs really do differ. - "Per-variant URLs always rank better." Only when each variant has search demand and unique on-page content. Otherwise you've fragmented authority across thin pages and rank for none of them.
- "Canonical the variant to the parent and index it anyway." Canonical is a hint; if the variant URL serves visibly different content (different image, different price), Google may ignore the canonical and index it anyway. Pick a model and commit.
- "Color and size are the same kind of variant." Search demand differs. Color variants ("red running shoes") often have real volume; size variants ("size 9 running shoes") almost never do. Optimize per-variant URLs only where demand exists.
Continue exploring