Seo facet url not canonicalized

Moderate effort

Found on 13% of audited stores.

Add a canonical tag to every filtered, sorted, and paginated collection/category URL pointing back to the clean (unfiltered) category URL, so Google consolidates duplicate pages and focuses crawl budget on your real content.

What it is

When shoppers filter your product listings by size, colour, price, or sort order — or browse to page 2, 3, etc. — your store generates a new URL for each combination (e.g. `/collections/hoops?color=red&sort=price` or `/collections/hoops?page=5`). These "facet URLs" display largely the same products as the base category page, making them near-duplicate pages. A canonical tag is a small piece of HTML that tells Google: "Treat THIS page as the authoritative, indexable version — not the one you just crawled." Pointing every facet URL's canonical back to the clean category URL (e.g. `/collections/hoops`) is the standard, Google-recommended way to handle this.

Why it matters

Without canonical tags, Google may index hundreds or thousands of near-identical filter and pagination URLs instead of your core category pages — diluting the ranking signals (links, authority, clicks) that should be concentrated on those pages. Crawl budget is wasted on low-value filter combinations, meaning new or updated products get discovered more slowly. Duplicate content confusion can push the wrong URL into search results, giving shoppers a paginated or pre-filtered page that looks broken. Fixing canonicals consolidates ranking signals onto your clean category pages, improves crawl efficiency, and protects your organic traffic from unnecessary duplication penalties.

How to fix it

  1. Identify all URL parameters your store generates for filtering (e.g. ?color=, ?size=, ?sort=, ?page=) by checking your category pages with filters applied.
  2. Determine the clean canonical target for each category — typically the base URL with no query parameters (e.g. /collections/hoops, /category/shoes).
  3. Add a <link rel="canonical" href="https://www.example.com/collections/hoops"> tag in the <head> of every filtered/sorted/paginated variant of that page, pointing to the clean base URL.
  4. For pagination specifically, ensure page 2+ canonical tags also point to the first/base page (NOT page=1 — use the clean URL without any page parameter).
  5. Verify implementation using browser DevTools (View Source → search 'canonical') or Google Search Console's URL Inspection tool to confirm the declared canonical is being respected.
  6. After deploying, monitor Google Search Console's Coverage report to watch indexed facet URLs drop and base category URLs gain impressions over the following weeks.

Fix it on your platform

Pick your platform for the exact steps.

How to fix seo facet url not canonicalized on Shopify
  1. Shopify automatically outputs a self-referencing canonical on most pages, but it does NOT automatically set a canonical on facet/filter URLs generated by third-party filter apps or ?sort_by= and ?page= parameters.
  2. Open your theme code: Online Store → Themes → Actions → Edit Code.
  3. Open the file 'layout/theme.liquid'. Locate the existing <link rel="canonical"> tag (search for 'canonical').
  4. Replace or wrap the canonical logic so that for collection pages, the canonical always outputs the clean collection URL without query parameters. Use Liquid: {% assign canonical_url = canonical_url | split: '?' | first %} then <link rel="canonical" href="{{ canonical_url }}">.
  5. If you use a faceted-search app (e.g. Boost Commerce, Searchpie, Filterify), check the app's settings for a 'Canonical URL' or 'SEO' section — many have a built-in toggle to enforce canonicals. Enable it.
  6. Save changes and use the URL Inspection tool in Google Search Console to verify the canonical on a filtered URL (e.g. ?sort_by=price-ascending) now points to the clean collection URL.
How to fix seo facet url not canonicalized on Shopify Plus
  1. Same as Shopify above. Additionally, if you use a custom storefront or headless setup, ensure your front-end framework outputs the canonical in the <head> using the clean collection URL for all filtered/paginated routes.
  2. For Shopify Plus stores using Launchpad or scripts, confirm no script overrides the canonical meta at render time.
  3. Use the Shopify Storefront API's built-in SEO object if rendering canonical tags server-side in a custom theme.
How to fix seo facet url not canonicalized on WooCommerce
  1. Install or ensure Yoast SEO, Rank Math, or SEOPress is active — these plugins handle canonical output for WooCommerce pages.
  2. In Yoast SEO: Go to SEO → Search Appearance → Taxonomies → Product Categories. Ensure canonical tags are enabled (they are by default). Yoast automatically outputs a self-referencing canonical, but for filter URLs you need additional configuration.
  3. To suppress or canonicalize facet/filter URLs, go to SEO → Tools → Bulk Editor, or use Yoast's 'Advanced' tab on individual pages. For query-string-based filters, configure Yoast to strip known parameters: SEO → Search Appearance → Advanced → 'URL Parameters to ignore'.
  4. If you use WooCommerce Product Filters (Barn2), FacetWP, or AJAX Filters, check those plugins' SEO/canonical settings — FacetWP has an explicit 'Canonical URL' option under Settings → FacetWP → Settings → SEO.
  5. For Rank Math: Dashboard → Titles & Meta → Products → ensure 'Canonical URL' is set and use the 'Remove Query Parameters from Canonical' option if available.
  6. Test with a filtered URL in Google Search Console URL Inspection or by viewing page source and searching for 'canonical'.
How to fix seo facet url not canonicalized on BigCommerce
  1. BigCommerce automatically generates canonical tags for standard category pages, but filter/facet URLs (e.g. ?brand=Nike&color=Red) may output self-referencing canonicals rather than pointing to the clean category URL.
  2. Go to Storefront → Themes → Edit Theme Files (Stencil theme). Open templates/layout/base.html and find the existing canonical tag or the {{{head.canonical_link}}} Handlebars helper.
  3. To override the canonical for faceted URLs, you need to modify the Stencil template logic so that on category pages, the canonical is always set to the category's base URL without query parameters. Use: {{#if category}} <link rel="canonical" href="{{urls.self | remove_query_params}}"> {{/if}} — exact syntax depends on your theme helpers.
  4. Alternatively, use a third-party SEO app from the BigCommerce App Marketplace (e.g. Amasty SEO, StoreSEO) that provides canonical control for faceted navigation.
  5. For BigCommerce native faceted search: go to Products → Product Filtering in the admin and ensure 'SEO URL format' is set to the cleanest option — BigCommerce can generate SEO-friendly filter URLs instead of query strings, which are easier to canonicalize.
  6. Verify in Google Search Console URL Inspection after deployment.
How to fix seo facet url not canonicalized on Adobe Commerce (Magento)
  1. In the Admin Panel, go to Stores → Configuration → Catalog → Catalog → Search Engine Optimization.
  2. Set 'Use Canonical Link Meta Tag for Categories' to 'Yes'. This tells Magento to output a canonical pointing to the clean category URL on all filtered/layered-navigation variants.
  3. Also set 'Use Canonical Link Meta Tag for Products' to 'Yes' for product pages.
  4. For pagination: Magento by default sets canonical on paginated pages to page 1. Confirm this is working by viewing source on /category?p=3 and checking the canonical value.
  5. If you use custom layered navigation extensions (Amasty Improved Navigation, Mirasvit Layered Navigation, etc.), check their SEO settings panel for a 'Canonical URL' option — most expose this as a toggle.
  6. Clear the full-page cache after making changes: System → Cache Management → Flush Magento Cache. Then verify with Google Search Console URL Inspection.
How to fix seo facet url not canonicalized on Magento Open Source
  1. Follow the same steps as Adobe Commerce above: Stores → Configuration → Catalog → Catalog → Search Engine Optimization → set both canonical meta tag options to 'Yes'.
  2. Flush cache at System → Cache Management after saving.
  3. Verify by loading a filtered category URL, viewing page source, and confirming <link rel="canonical"> points to the base category URL.
How to fix seo facet url not canonicalized on Wix
  1. Wix automatically adds canonical tags to store collection pages. For standard Wix eCommerce filter URLs, Wix typically outputs a self-referencing canonical, which may not consolidate duplicate filter pages.
  2. Go to your Wix dashboard → SEO → SEO Settings. Check the 'Canonical Tags' section — Wix lets you set canonical URLs for individual pages via the SEO panel.
  3. For collection pages: open the page in the editor, click the page SEO settings (three dots → SEO), and manually set the canonical URL to the clean collection URL if the filtered version is being indexed.
  4. To prevent filter parameter URLs from being crawled/indexed at all (an alternative to canonicals), go to SEO → Crawlers & Indexing → URL Parameter Handling, and add your filter parameters (e.g. 'sort', 'filter', 'page') to the ignore list.
  5. For Wix Stores specifically, the faceted filtering URLs are often hash-based (#filter) and may not be indexed by Google at all — verify first in Google Search Console Coverage report before implementing changes.
How to fix seo facet url not canonicalized on Squarespace
  1. Squarespace automatically adds canonical tags to all pages and does not natively expose faceted filter URLs as separate indexable pages in the same way as custom platforms.
  2. If you are using Squarespace Commerce and have filter URLs appearing in Google Search Console as separate indexed pages, go to Pages → [Your Shop Page] → SEO (gear icon) → and set the canonical URL explicitly to the clean shop/category URL.
  3. For tag or category filter URLs (e.g. /shop?tag=red), use Squarespace's URL slug settings to ensure only the primary shop page is indexable. There is no native query-parameter canonical override — use the 'noindex' robots meta as an alternative for heavily filtered URLs via Pages → SEO → Page Settings → Disable indexing for that specific tag page.
  4. Check Settings → SEO → Crawlers & Indexing to configure what Squarespace exposes to search engines.
How to fix seo facet url not canonicalized on Webflow
  1. Webflow automatically adds self-referencing canonical tags to all CMS and e-commerce pages. For filtered/sorted collection URLs generated by Webflow's native filtering or by third-party filter widgets (Finsweet CMS Filter, etc.), you need to customise the canonical output.
  2. Open your Webflow project → Pages panel → select the Collection List page or E-commerce Category page → open Page Settings → SEO Settings. In the 'Canonical URL' field, enter the clean base URL for this collection (without query parameters).
  3. If filter parameters are added dynamically via JavaScript (as with Finsweet CMS Filter), the canonical in the <head> already points to the clean URL since it is set at page-load time before JS runs — verify this is the case by inspecting the rendered HTML source.
  4. For Webflow Commerce: go to Ecommerce → Categories, click on a category, and set the canonical URL in the SEO panel to the clean category URL.
  5. Publish the site and verify with Google Search Console URL Inspection.
How to fix seo facet url not canonicalized on Headless / Custom (I build in code)
  1. In your page rendering logic (Next.js, Nuxt.js, Astro, etc.), detect when query parameters representing filters, sorts, or pagination are present on a category/collection route.
  2. Construct the canonical URL by stripping all recognised filter/sort/pagination parameters from the current URL, leaving only the clean path.
  3. Inject the canonical into the <head> using your framework's head-management solution (e.g. Next.js: use <Head><link rel='canonical' href={cleanCategoryUrl} /></Head> via next/head or the App Router metadata API; Nuxt: use useHead({ link: [{ rel: 'canonical', href: cleanCategoryUrl }] })).
  4. Ensure this logic runs server-side (SSR or SSG) so the canonical is present in the initial HTML response, not injected after JavaScript runs.
  5. Add an automated test that checks the canonical tag value on a URL with query parameters matches the expected clean URL.
  6. Deploy and verify with Google Search Console URL Inspection.
How to fix seo facet url not canonicalized on Next.js
  1. In the App Router (Next.js 13+): export a generateMetadata function from your category page (e.g. app/collections/[slug]/page.tsx). Inside, construct the canonical URL from params only (no searchParams) and return it as: return { alternates: { canonical: `https://www.example.com/collections/${params.slug}` } };
  2. In the Pages Router: use next/head inside your category page component. Compute the canonical URL by using router.pathname (not router.asPath, which includes query strings): <Head><link rel='canonical' href={`https://www.example.com${router.pathname.replace('[slug]', router.query.slug)}`} /></Head>.
  3. Verify by running next build && next start, then viewing source on a filtered URL to confirm the canonical is the clean path.
How to fix seo facet url not canonicalized on Nuxt.js
  1. In your category page component or layout, use the useHead composable (Nuxt 3) to set the canonical dynamically based on the route path, excluding query params: useHead({ link: [{ rel: 'canonical', href: `https://www.example.com${route.path}` }] });
  2. This uses route.path (clean path only) rather than route.fullPath (which includes query strings).
  3. For Nuxt 2 with vue-meta, use head() { return { link: [{ rel: 'canonical', href: `https://www.example.com${this.$route.path}` }] }; }.
  4. Verify by building and checking page source on a filtered URL.
How to fix seo facet url not canonicalized on PrestaShop
  1. PrestaShop generates canonical tags via its core SEO module. Go to Shop Parameters → SEO & URLs and enable 'Canonical URL' if available in your version.
  2. For faceted search (the native Faceted Search module or ps_facetedsearch): go to Modules → Module Manager → Faceted Search → Configure. Look for a 'Generate canonical URL' or 'SEO' option and enable it — this sets the canonical of filtered pages to the clean category URL.
  3. If the module does not provide this option, edit the ps_facetedsearch module template or override the canonical tag in your theme's header.tpl to output the base category URL for all layered navigation pages.
  4. Clear cache: Advanced Parameters → Performance → Clear cache. Verify with Google Search Console.
How to fix seo facet url not canonicalized on OpenCart
  1. OpenCart does not output canonical tags by default. Install an SEO extension such as 'SEO Mega Pack' or 'Journal3 SEO' from the OpenCart Marketplace that adds canonical tag support.
  2. Once installed, configure the extension to set the canonical URL for category pages to the base category URL, stripping filter/sort query parameters.
  3. Alternatively, edit catalog/view/theme/[your-theme]/template/common/header.twig to manually add: <link rel="canonical" href="{{ canonical_url }}"> and set $data['canonical_url'] in the Header controller to the clean category URL.
  4. Clear the OpenCart cache via Dashboard → Settings and verify with page source inspection.
How to fix seo facet url not canonicalized on Next.js (Headless)
  1. Locate (or create) your collection/category route. In the App Router this is typically `app/collections/[slug]/page.tsx`; in the Pages Router it is `pages/collections/[slug].tsx`. All canonical logic below targets the App Router — see the Pages Router note at the bottom of the snippet for the equivalent.
  2. Extract the clean canonical URL from the route segment alone (the `slug` param) — deliberately ignoring every search-param that represents a facet, sort order, or page number (e.g. `?color=red&sort=price&page=2`). Build the full absolute URL with your `NEXT_PUBLIC_SITE_URL` environment variable.
  3. In the App Router, export an async `generateMetadata` function from the same `page.tsx` file. Set `alternates.canonical` to the clean URL string — Next.js renders this as `<link rel='canonical'>` in `<head>` automatically.
  4. Ensure the `generateMetadata` function receives the `searchParams` prop but does NOT include any of those params in the canonical href — the canonical must always point to the unfiltered base URL regardless of which filters or page numbers are active.
  5. For the Pages Router, import `next/head` and render `<link rel='canonical' href={canonicalUrl} />` inside `<Head>` in the page component, applying the same logic: derive `canonicalUrl` from `router.query.slug` only, ignoring all other query params.
  6. Deploy and validate with 'Inspect URL' in Google Search Console or by viewing page source — confirm `<link rel='canonical'>` points to the clean category URL on filtered, sorted, and paginated variants.

Does your site have this issue?

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

Scan my site free

Frequently asked questions

What is Seo facet url not canonicalized?

When shoppers filter your product listings by size, colour, price, or sort order — or browse to page 2, 3, etc. — your store generates a new URL for each combination (e.g. `/collections/hoops?color=red&sort=price` or `/collections/hoops?page=5`). These "facet URLs" display largely the same products as the base category page, making them near-duplicate pages. A canonical tag is a small piece of HTML that tells Google: "Treat THIS page as the authoritative, indexable version — not the one you just crawled." Pointing every facet URL's canonical back to the clean category URL (e.g. `/collections/hoops`) is the standard, Google-recommended way to handle this.

Why does seo facet url not canonicalized matter?

Without canonical tags, Google may index hundreds or thousands of near-identical filter and pagination URLs instead of your core category pages — diluting the ranking signals (links, authority, clicks) that should be concentrated on those pages. Crawl budget is wasted on low-value filter combinations, meaning new or updated products get discovered more slowly. Duplicate content confusion can push the wrong URL into search results, giving shoppers a paginated or pre-filtered page that looks broken. Fixing canonicals consolidates ranking signals onto your clean category pages, improves crawl efficiency, and protects your organic traffic from unnecessary duplication penalties.

How do I fix seo facet url not canonicalized?

Add a canonical tag to every filtered, sorted, and paginated collection/category URL pointing back to the clean (unfiltered) category URL, so Google consolidates duplicate pages and focuses crawl budget on your real content.

Authoritative references

Related SEO issues