Canonical Tag Checker

Enter a page URL to see the canonical URL it declares in HTML and HTTP headers, whether that canonical is self-referencing, and whether the canonical target returns 200, redirects, or is noindex.

Reads the page's raw HTML and response headers. Canonical tags added later by JavaScript aren't seen.

What this canonical tag checker tests

A canonical tag tells search engines which URL you want indexed when the same content is reachable at more than one address. This tool fetches one page, finds every canonical it declares, and flags the mistakes that make Google ignore the tag or pick a URL you didn't want: missing or empty tags, more than one canonical, tags in the <body>, relative or http URLs, fragments and tracking parameters, conflicts with noindex, and canonical targets that redirect, return 404, or point somewhere else again.

What a canonical tag does

The tag goes in the <head> of the page:

<link rel="canonical" href="https://example.com/dresses/green-dresses">

It says: this URL is the representative version of this content. Google groups duplicate URLs together, picks one as canonical, and usually shows that one in search results. Google treats rel="canonical" as a strong signal, but its documentation is explicit that a canonical preference is "a hint, not a rule." Redirects are also a strong signal, and listing a URL in a sitemap is a weak one. Google also prefers HTTPS URLs over HTTP ones and URLs that are part of hreflang clusters. When your signals conflict, Google is more likely to choose a different URL than the one you declared.

Use a self-referencing canonical on pages you want indexed

Google recommends putting a canonical on the canonical page itself, pointing at its own URL. That protects the page when someone links to it with ?utm_source=newsletter or a session parameter, because each of those variants still declares the clean URL. Duplicate pages, such as a product reached through two category paths, point their canonical at the version you want indexed. Pages that aren't duplicates should never canonicalize to each other. For more on the pages on the other side of that relationship, see what a non-canonical URL is.

HTML tag or HTTP header

PDFs and other non-HTML files have no <head>, so they declare a canonical in the Link response header instead:

HTTP/1.1 200 OK
Content-Type: application/pdf
Link: <https://www.example.com/downloads/white-paper.pdf>; rel="canonical"

HTML pages can use the header too. If you use both, they must point at the same URL. Google says not to specify different canonicals through different methods, and recommends choosing one because keeping two in sync is error prone. A common cause of disagreement is a CDN or server rule adding a header that the CMS doesn't know about.

Cross-domain canonicals

A canonical can point at another domain. That's useful when the same content is served on two domains you control and you can't redirect one to the other. Google no longer recommends cross-domain canonicals for syndicated articles; its troubleshooting guide suggests asking syndication partners to block indexing of your content instead. A cross-domain canonical you didn't add is worth investigating: it can come from a copied theme or from injected code on a hacked site.

How to see which canonical Google chose

In Search Console, run the URL Inspection tool on the page. The indexed result shows the user-declared canonical (what your page says) and the Google-selected canonical (what Google actually uses). The live test can't tell you which URL Google will select; only the indexed data shows that. Across a whole site, the Page indexing report groups URLs under statuses such as "Alternate page with proper canonical tag" (working as intended) and "Duplicate, Google chose different canonical than user" (Google overrode your tag).

Common canonical tag mistakes

Canonicalizing paginated pages to page 1

Page 2 of a category is not a duplicate of page 1. Pointing it at page 1 asks Google to drop the products or articles that only appear on page 2. Google's pagination guidance says to give each page its own canonical.

<!-- Wrong, on /shoes?page=2 -->
<link rel="canonical" href="https://example.com/shoes">

<!-- Right -->
<link rel="canonical" href="https://example.com/shoes?page=2">

This is one case where a query string in the canonical is correct.

Relative URLs and missing schemes

Google supports relative canonicals but recommends absolute URLs. A relative canonical copied to a staging server resolves to the staging URL, and a <base href> on the page changes what it resolves to. Worse is a full URL written without its scheme, which browsers and crawlers read as a relative path:

<!-- On https://example.com/shop/cupcakes, this resolves to
     https://example.com/shop/example.com/cupcakes -->
<link rel="canonical" href="example.com/cupcakes">

<!-- Right -->
<link rel="canonical" href="https://example.com/cupcakes">

Building the canonical from the request URL

Templates that output the current request URL copy every tracking parameter, session ID and letter-case variant into the canonical, so the tag agrees with whatever URL was requested and consolidates nothing.

<!-- Wrong: echoes the request -->
<link rel="canonical" href="https://example.com/post?utm_source=x&utm_medium=email">

<!-- Right: built from the page's stored URL -->
<link rel="canonical" href="https://example.com/post">

Fragments are a related problem. Google generally doesn't support them in canonicals, so remove anything after #.

Pointing at a redirect, a 404 or a noindex page

The canonical target should return 200, without redirecting, and be indexable. A canonical that points at a URL that redirects sends mixed signals; after a URL change, update the canonical to the final URL. A canonical to a 404 or to a page with noindex points Google at a page it can't index. This tool fetches the target and checks all three, and also flags chains (A points to B, B points to C) and loops (A points to B, B points back to A).

Mixing canonical and noindex

A canonical says "index the other URL instead." A noindex says "don't index this page." Google recommends against using noindex to control canonical selection within a site, because it blocks the page from Search entirely. For duplicates, use the canonical alone:

<!-- Conflicting -->
<meta name="robots" content="noindex">
<link rel="canonical" href="https://example.com/product">

<!-- Right for a duplicate -->
<link rel="canonical" href="https://example.com/product">

Multiple tags, empty tags and tags outside the head

When a page has more than one canonical with different URLs, Google has said it will likely ignore all of them. This usually happens when a theme and an SEO plugin each output one. An empty canonical usually means a template variable was blank. And Google only reads canonical tags in the <head>. That includes a subtle case: Google stops reading the head at the first element that isn't allowed there (anything other than title, meta, link, script, style, base, noscript and template), so an <img> or <iframe> injected high in the head can push a canonical below it out of reach. This tool reports where the head ends. If you add the canonical with JavaScript, Google says to set it to the same value as the canonical in the original HTML, or leave it out of the HTML entirely.

Checking canonicals across a whole site

A single-page check finds template bugs, but canonical problems are usually systematic. To audit a site, crawl it, extract the declared canonical from every page, and compare: pages whose canonical isn't themselves, canonicals that differ from the crawled URL only by case, slash or parameters, and canonical targets that don't return 200 or aren't indexable. Then compare the results with the Page indexing report in Search Console to see where Google disagreed. Our guide on finding and fixing every broken canonical tag on your site walks through that process.

Check every page, not just one

These tools look at one URL at a time. bseoa crawls your whole site on your own machine and checks every page for 300+ technical SEO issues across 16 analysis modules.

Start the 14-day free trial

More free SEO tools