Skip to content
Free tool · No signup required

Shopify Canonical Tag Checker

Validate that your canonicals point where you think they do - free, no signup.

Free, no signup. We extract the canonical tag, then fetch the canonical URL and follow redirects up to 5 hops.

What this tool checks

  • Whether the page declares a <link rel="canonical"> tag at all - and if not, the duplicate-content risk that creates for products that appear under multiple Shopify collections.
  • Whether the canonical is absolute (https://example.com/path) or relative - relative canonicals are explicitly discouraged in Google's docs.
  • Whether the canonical is self-referencing (points back to the same URL) or points elsewhere - both can be valid, but unintentional cross-page canonicals leak ranking signals.
  • Whether the canonical is cross-domain - the most damaging mistake on Shopify multi-storefront setups, where a UK store accidentally canonicalises every page to the US store.
  • The full HTTP redirect chain when the canonical URL itself redirects - a canonical that requires multiple hops dilutes the ranking signal.
  • The final HTTP status of the canonical URL - 200 is healthy, anything 3xx is a chained canonical, 4xx/5xx means Google cannot follow it.

Why it matters for Shopify stores

Shopify's URL structure makes duplicate-content risk almost unavoidable without canonicals. The same product is reachable at /products/foo, /collections/all/products/foo, and /collections/<any-collection>/products/foo. Without a canonical telling Google "they are all the same product, treat /products/foo as the authoritative URL", Google has to guess - and guesses badly. Backlinks pointing to the collection-prefixed URL leak their ranking value to the wrong version. The fix is automatic in standard themes, but vanishes the moment a custom theme overrides the default canonical Liquid.

The single most expensive canonical mistake on Shopify is the cross-domain canonical. A UK store with a separate .co.uk storefront pointing every canonical to the .com store is invisible to Google.co.uk - the entire UK storefront is silently telling Google it shouldn't exist as a separate entity. We have seen 6-figure stores discover this only after a year of underperformance, traced back to a single line in theme.liquid that was hard-coded during initial development.

Canonical chains - where the canonical points to a URL that redirects to a third URL - are surprisingly common after store migrations. Each hop dilutes the canonical signal. Two hops is tolerable, three or more starts to break. Stores that rebrand or migrate domains typically inherit chains from the previous setup that nobody thinks to clean up.

A canonical that returns 404 is worse than no canonical at all. It's a strong signal to Google that the canonical version of the page does not exist, which usually means Google deindexes the original page rather than just ignoring the canonical. Stores with shifting product catalogues - flash sales, limited-edition drops - can accidentally generate stale canonicals pointing at deleted products. Auditing canonicals after every catalogue change is good hygiene.

How to fix this in Shopify admin

  1. 1

    Confirm the default canonical Liquid is in theme.liquid

    Shopify Admin → Themes → Edit code → layout → theme.liquid. The default head should include {{ canonical_url }} inside a <link rel="canonical" href="..."> tag. If your theme has hardcoded a URL or a different domain, restore the {{ canonical_url }} expression - this is the variable Shopify computes per-page automatically.

  2. 2

    Audit cross-domain canonicals on multi-storefront stores

    For each storefront (.co.uk, .com, .com.au), open theme.liquid and confirm the canonical Liquid does not hardcode a URL pointing at a different storefront. If you use Shopify Markets, the canonical should still resolve to the storefront the user is currently on - test by visiting the same product URL on each storefront.

  3. 3

    Fix canonicals after a domain migration

    After migrating from yourstore.myshopify.com to yourstore.com, double-check theme.liquid still uses {{ canonical_url }} (which auto-computes the new domain) rather than a hardcoded reference to the old myshopify.com domain. Same for migrations between custom domains.

  4. 4

    Resolve canonical chains

    If this tool shows your canonical redirects through multiple hops, identify the source: usually a 301 redirect set up in Shopify Admin → Online Store → Navigation → URL Redirects. Update the canonical declaration to point directly at the final URL so Google reads the signal in one hop.

Common Shopify mistakes

Hardcoded canonical to a developer-staging URL

During initial theme development, agencies sometimes hardcode the canonical to a staging or preview domain. If this isn't reverted before launch, every page on the live store canonicalises to a URL that returns 404 publicly - a guaranteed indexation disaster.

Trailing-slash inconsistency

Page URL ends in /, canonical doesn't (or vice versa). Google treats these as different URLs. Pick one canonical form and ensure the canonical declaration matches the URL the page is served from. Standard Shopify is consistent here - custom routing rules can break it.

Canonical pointing to /collections/all instead of /products/<handle>

Custom themes that try to "consolidate" duplicate-content risk by canonicalising every product to the all-products page actually destroy ranking - now no specific product page can rank, because they all defer to one consolidated URL.

Canonical with query parameters stripped or added incorrectly

Filtered collection pages should generally canonicalise to the unfiltered collection URL. But canonicals that strip pagination parameters (?page=2) cause every page of the collection to point at page 1, hiding products from index. Pagination should be self-referencing or use rel=prev/next.

Lowercase vs uppercase canonical URLs

Some Shopify URL fields output mixed-case URLs. Canonical URLs should always be lowercase. Mixed-case canonical that doesn't match the served URL exactly fails to consolidate signals.

Canonical to noindex pages

A canonical pointing to a page that itself has <meta robots="noindex"> tells Google "the authoritative version of this content is not in our index" - effectively suppressing both pages. Common when staging-protected pages get canonicalised by mistake.

Frequently asked questions

Does Shopify add canonical tags automatically?

+

Yes - default Shopify themes inject <link rel="canonical" href="{{ canonical_url }}"> in theme.liquid. {{ canonical_url }} resolves to the canonical form of the current URL, computed by Shopify based on the storefront domain and current page handle. Custom themes can override or remove this.

What does "self-referencing canonical" mean?

+

It means the canonical points to the same URL the page is served from. This is the default and correct behaviour for most Shopify pages - product pages, collections, blog posts. Self-referencing canonicals consolidate any backlink variants (with utm parameters, trailing slashes, etc.) onto the canonical URL.

Why does Shopify have duplicate-content risk in the first place?

+

Because the same product is reachable at /products/<handle>, /collections/all/products/<handle>, and /collections/<any-collection>/products/<handle>. Without a canonical, Google sees three URLs serving identical content. The canonical tells Google /products/<handle> is the authoritative version.

Can a canonical point to a different domain?

+

It can but rarely should. Cross-domain canonicals are correct when content is republished from one site to another (with the source canonicalising to the destination). On a single Shopify storefront, cross-domain canonicals are almost always a mistake - typically a misconfigured multi-storefront setup or a leftover from migration.

How many redirect hops are too many for a canonical URL?

+

Google's Gary Illyes has said up to 5 hops are followed. Practically, 1 hop is fine, 2 hops are tolerable, 3+ hops start to dilute the canonical signal noticeably. After major catalogue or domain changes, audit canonicals for chained redirects.

Should pagination pages have self-referencing canonicals?

+

Yes - /collections/foo?page=2 should canonicalise to itself, not to /collections/foo. Page 2 contains different products than page 1, so Google should treat them as separate pages. Canonicalising every paginated page to page 1 hides products on subsequent pages from index.

What about canonicals on filtered collection pages?

+

Filtered collections (e.g. /collections/jeans?filter.variant.colour=Blue) should generally canonicalise to the unfiltered collection (/collections/jeans). The filter is a UX overlay, not a unique landing page worth its own ranking. Exceptions exist for high-intent filters that you actively want to rank - in that case, give them their own URL pattern with their own canonicals.

My canonical is correct but Google indexes a different URL. Why?

+

A canonical is a hint, not a directive. Google can override it if other signals (backlinks, internal links, sitemap entries) strongly suggest a different URL is more authoritative. If Google consistently picks the wrong URL, audit your internal linking - the canonical and the internal links must agree.

Want the full Shopify SEO audit?

This tool checks one thing. SEOScan checks 60+ Shopify-specific issues with AI-powered fix guides. Free scan, no signup.

Run Full Shopify SEO Scan

More free tools