Seo variant urls not canonicalized

Moderate effort

Found on 2% of audited stores.

Add a canonical tag to every product variant URL pointing back to the base product page, so Google consolidates ranking signals on one URL instead of splitting them across hundreds of duplicates.

What it is

When shoppers (or your platform) navigate to a product with a colour, size, or style selected, the URL often changes — a query parameter like `?color=Pop+Red` or `?size=M` gets appended to the base product URL. Each of those variant URLs is effectively a separate page in Google's eyes. A canonical tag is a small snippet of HTML code (placed in the `<head>` of a page) that tells search engines: "The true, original version of this content lives at this URL." Pointing every variant URL's canonical at the clean, base product URL is the standard way to tell Google that all those variants are the same product, just filtered differently.

Why it matters

Without canonical tags on variant URLs, Google may index hundreds or thousands of near-duplicate pages for a single product. This splits your page's authority (link equity) across all those URLs instead of concentrating it on one, directly weakening your product page's ability to rank. Google may also choose a variant URL as the canonical itself — one that may disappear when stock runs out — causing rankings to drop unpredictably. Crawl budget is wasted re-crawling redundant variants instead of discovering new or updated pages. Fixing this consolidates all ranking signals on your main product page, typically improving organic visibility and protecting you against ranking volatility as variants come and go.

How to fix it

  1. Identify all variant URLs your store generates — these are usually the base product URL plus one or more query parameters (e.g. ?color=Red&size=M) or path segments added by your platform.
  2. Determine the single canonical URL for each product — this is the clean, parameter-free base product URL (e.g. /products/my-product-name) that should rank in Google.
  3. Add a self-referencing canonical tag to the base product page's <head>: <link rel="canonical" href="https://www.example.com/products/my-product">
  4. Add a canonical tag to every variant URL's <head> that points to that same base product URL — NOT to the variant URL itself.
  5. Verify the canonical is rendered in the final HTML (not just in a template) by using View Source or Google Search Console's URL Inspection tool on a live variant URL.
  6. Submit the base product URLs (not the variant URLs) in your XML sitemap, and ensure variant URLs are not listed in the sitemap as standalone entries.

Fix it on your platform

Pick your platform for the exact steps.

How to fix seo variant urls not canonicalized on Shopify
  1. Shopify automatically adds a canonical tag to product pages via its theme. The tag is output by the Liquid snippet {{ canonical_url | tag: 'canonical' }} (or similar) in your theme's <head>.
  2. Go to Online Store → Themes → your active theme → Edit code.
  3. Open theme.liquid (or the layout file such as base.liquid in Dawn). Search for 'canonical'.
  4. Shopify sets canonical_url to the base product URL by default. HOWEVER, if a variant is selected via a query parameter (?variant=XXXXXXXX), some themes or apps may override this — verify on a live variant URL using View Source or the URL Inspection tool in Google Search Console.
  5. If the canonical is correct (base product URL, no ?variant= parameter), no change is needed. If it incorrectly includes variant parameters, replace the canonical line with: <link rel="canonical" href="{{ product.url | prepend: shop.url }}"> — this always resolves to the base product URL regardless of the selected variant.
  6. For collection-scoped URLs (e.g. /collections/X/products/Y), ensure the canonical points to the canonical product URL (/products/Y), not the collection-scoped version: use {{ product.url | prepend: shop.url }} which Shopify resolves to the /products/ path.
How to fix seo variant urls not canonicalized on Shopify Plus
  1. Same as Shopify above — edit theme.liquid or the equivalent layout file in the theme code editor.
  2. Additionally, if you use Shopify's Headless / Hydrogen storefront, you must manually output the canonical tag in your product route component. Set it to the base product URL (without ?variant=) using Remix's <Meta> or Next.js's <Head> component.
  3. For scripts or apps that rewrite the URL client-side on variant selection, ensure the canonical in the <head> is set server-side to the base product URL and is NOT updated by JavaScript when a variant is selected.
How to fix seo variant urls not canonicalized on WooCommerce
  1. Install the free Yoast SEO or Rank Math plugin if not already installed (Plugins → Add New).
  2. Yoast SEO: Go to Yoast SEO → Search Appearance → Products. Yoast automatically outputs a canonical pointing to the base product permalink for variable product pages. Confirm by viewing source on a product URL with query parameters (e.g. ?attribute_pa_color=red) — the canonical should show the base product URL.
  3. Rank Math: Go to Rank Math → Titles & Meta → Products. Rank Math similarly outputs the base product canonical automatically.
  4. If you have a custom or page-builder theme that outputs its own canonical, search your theme's header.php or functions.php for any hardcoded canonical output and remove duplicates.
  5. If query parameters are added by plugins (e.g. filters), go to Yoast → SEO → Search Appearance → Advanced and confirm query parameters are not being indexed as separate URLs. Also use Google Search Console → URL Inspection on a variant URL to confirm the canonical Google sees.
How to fix seo variant urls not canonicalized on BigCommerce
  1. BigCommerce automatically outputs a canonical tag on product pages using the base product URL. Go to Storefront → My Themes → your active theme → Edit Theme Files.
  2. Open templates/pages/product.html (or the equivalent Stencil template). Search for 'canonical'.
  3. The canonical is typically output via a Handlebars helper such as {{canonicalUrl}} or set globally by the platform. Verify it resolves to the base product URL (without option/variant parameters).
  4. If your theme or a custom script appends variant query parameters to the canonical, override it: set the canonical tag manually to {{urls.product}} which resolves to the base product URL.
  5. Confirm in BigCommerce's built-in SEO settings: go to Store Setup → Store Settings → Search Engine Optimization and ensure 'Canonical URL' options favour the base product path.
  6. Check your XML sitemap (Marketing → Sitemap) to confirm only base product URLs are listed, not variant URLs.
How to fix seo variant urls not canonicalized on Adobe Commerce (Magento)
  1. Go to Stores → Configuration → Catalog → Catalog → Search Engine Optimization.
  2. Set 'Use Canonical Link Meta Tag for Products' to Yes. This tells Magento to output a canonical tag on all product pages pointing to the base product URL, ignoring filter/option query parameters.
  3. Set 'Use Canonical Link Meta Tag for Categories' to Yes for category pages as well.
  4. Save Config and flush the Magento cache: System → Cache Management → Flush Magento Cache.
  5. Verify by loading a product URL with parameters (e.g. ?color=12&size=L) and using View Source to confirm the <link rel="canonical"> points to the clean base product URL.
  6. If you use a third-party SEO extension (e.g. Mageworx SEO Suite, Amasty SEO Toolkit), check its product canonical settings in its own configuration panel to ensure it is not overriding the platform setting with variant-specific URLs.
How to fix seo variant urls not canonicalized on Magento Open Source
  1. Identical to Adobe Commerce: Stores → Configuration → Catalog → Catalog → Search Engine Optimization → set 'Use Canonical Link Meta Tag for Products' to Yes.
  2. Flush cache after saving: System → Cache Management → Flush Magento Cache.
  3. Verify with View Source on a variant URL that the canonical points to the base product URL.
How to fix seo variant urls not canonicalized on Wix
  1. Wix automatically sets canonical tags on product pages through its native eCommerce and SEO tools.
  2. Go to your Wix Dashboard → Marketing & SEO → SEO Tools → SEO Settings to review site-level SEO defaults.
  3. For individual product pages, open the Editor, click on a product page, then click the SEO panel (gear/settings icon) → Advanced SEO → Canonical URL. Ensure this is set to the base product URL or left blank (Wix will self-canonicalise correctly by default).
  4. If you use Wix's native product options (colour, size), Wix does NOT generate separate URLs for variants — options are handled client-side without changing the URL. If you see variant URLs being indexed, it may be from a third-party app; check the app's settings for canonical output.
  5. Use Wix's SEO Inspector (available in the Editor) or Google Search Console URL Inspection to confirm the canonical tag on any product URL.
How to fix seo variant urls not canonicalized on Squarespace
  1. Squarespace automatically outputs canonical tags on product pages pointing to the base product URL. Native product variants (size, colour, etc.) do not generate separate URLs in Squarespace — they are selected client-side, so canonical fragmentation is rare.
  2. If you have added custom URL parameters via scripts or third-party integrations, go to Pages → your product page → gear icon (Page Settings) → Advanced → Page Header Code Injection and add a manual canonical tag: <link rel="canonical" href="https://www.yourdomain.com/shop/your-product-slug">
  3. Squarespace does not allow full theme-file editing, so the code injection box is the correct location for any custom canonical overrides.
  4. Verify by using View Source on the product page and searching for 'canonical' to confirm only one canonical tag is present and it points to the correct base URL.
How to fix seo variant urls not canonicalized on Webflow
  1. Open your Webflow project in the Designer. Navigate to your Product Template page (CMS → Collections → Products → open the template).
  2. Click the page settings icon (gear) for the Product Template → SEO Settings → Canonical URL field.
  3. Set the Canonical URL to the dynamic base product URL using a CMS field binding — bind it to the product's slug/URL so it always resolves to the clean product URL, never including query parameters.
  4. If your Webflow site uses query parameters for filtering or variant selection (common with custom code or third-party integrations), add a custom <link rel="canonical"> tag via the page's Custom Code section (under Page Settings → Custom Code → Inside <head> tag), pointing to the base product URL.
  5. Publish the site after making changes and verify via View Source on a product URL.
How to fix seo variant urls not canonicalized on Next.js (Headless)
  1. Locate your product page route file — either `app/products/[slug]/page.tsx` (App Router) or `pages/products/[slug].tsx` (Pages Router). This is where the canonical must be set.
  2. Identify how variant parameters are passed — typically as query strings (e.g. `?color=red&size=M`) or as additional dynamic segments. The canonical must always point to the base product URL, stripping all variant params.
  3. App Router: Export an async `generateMetadata` function that receives `params` and `searchParams`, constructs the bare product URL (no query string), and returns it under `alternates.canonical`. This injects a `<link rel='canonical'>` in the `<head>` automatically.
  4. Pages Router: Import `next/head` in the page component, read the base slug from `router.query`, build the canonical URL, and render `<link rel='canonical' href={canonicalUrl} />` inside `<Head>`.
  5. Ensure the canonical URL is absolute (includes `https://` + your domain). Use an environment variable such as `NEXT_PUBLIC_SITE_URL` so it works across staging and production environments.
  6. Test by navigating to a variant URL (e.g. `/products/my-shirt?color=blue`) and inspecting the rendered `<head>` — the canonical should point to `https://yourdomain.com/products/my-shirt` with no query string.

Does your site have this issue?

Run a free SEOLZ scan to find seo variant urls not canonicalized — and every other issue — across your whole site in minutes.

Scan my site free

Frequently asked questions

What is Seo variant urls not canonicalized?

When shoppers (or your platform) navigate to a product with a colour, size, or style selected, the URL often changes — a query parameter like `?color=Pop+Red` or `?size=M` gets appended to the base product URL. Each of those variant URLs is effectively a separate page in Google's eyes. A canonical tag is a small snippet of HTML code (placed in the `<head>` of a page) that tells search engines: "The true, original version of this content lives at *this* URL." Pointing every variant URL's canonical at the clean, base product URL is the standard way to tell Google that all those variants are the same product, just filtered differently.

Why does seo variant urls not canonicalized matter?

Without canonical tags on variant URLs, Google may index hundreds or thousands of near-duplicate pages for a single product. This splits your page's authority (link equity) across all those URLs instead of concentrating it on one, directly weakening your product page's ability to rank. Google may also choose a variant URL as the canonical itself — one that may disappear when stock runs out — causing rankings to drop unpredictably. Crawl budget is wasted re-crawling redundant variants instead of discovering new or updated pages. Fixing this consolidates all ranking signals on your main product page, typically improving organic visibility and protecting you against ranking volatility as variants come and go.

How do I fix seo variant urls not canonicalized?

Add a canonical tag to every product variant URL pointing back to the base product page, so Google consolidates ranking signals on one URL instead of splitting them across hundreds of duplicates.

Authoritative references

Related SEO issues