GrowthGPTGrowthGPT
Start Building
SEO10 min read

How to Use the Canonical Tag Checker to Fix Duplicate URLs

Check any URL's canonical tag, og:url, and HTTP Link header in seconds. Learn what each of the seven checks means and how to fix missing or conflicting tags.

R
Rajesh Kalidandi
AI Engineer, GrowthGPT · September 23, 2026
Image coming soon

The Canonical Tag Checker is a free GrowthGPT tool that fetches any URL, reads the canonical declared in its HTML and HTTP headers, and runs up to seven checks: presence, uniqueness, absolute format, HTTPS, self-reference, og:url agreement, and Link header agreement. It tells you what the server actually declares, in seconds.

That last part matters more than it sounds. Most canonical bugs are not strategic mistakes. They are template bugs: a plugin printing a second tag, a staging domain baked into the production head, a framework that only adds the canonical after JavaScript runs. You cannot see any of those by reading your CMS settings. You see them by looking at what the server sends. This guide walks through the tool step by step, explains every check, and shows what to do with each result. For the strategy behind the tags, read the companion pillar on duplicate content and canonicals in the AI search era.

What is a canonical tag and why check it?

A canonical tag is a <link rel="canonical" href="..."> element in the head of a page that names the preferred URL for that content. When the same content is reachable at several addresses, such as with and without tracking parameters, over HTTP and HTTPS, or with and without a trailing slash, the canonical tells search engines which address you want indexed and credited.

Google is explicit that the tag is a signal, not a command. Its canonicalization documentation describes weighing the tag alongside redirects, HTTPS, and sitemap inclusion before choosing. That is exactly why the declared value has to be clean. A broken or contradictory canonical does not just fail to help. It hands the decision to Google and invites it to pick a URL you did not want.

In 2026 the stakes are higher than a lost ranking. Google's AI features guidance says a page has to be indexed and eligible for a snippet to appear as a supporting link in AI Overviews or AI Mode. Only the canonical version of a duplicate cluster is indexed. If the wrong URL wins, the wrong URL is the one an answer can cite.

How do I use the Canonical Tag Checker?

The tool takes one input, a URL, and returns a full report in a single request. Here is the process that gets the most out of it.

Step 1: Enter the URL you want to test

Open the Canonical Tag Checker and paste a full page URL into the field. If you leave off the protocol, the tool adds https:// for you. Not sure what a good result looks like yet? Use one of the quick check buttons below the field to run a known site first and get a feel for the report.

Step 2: Run the check and note the final URL

Click Check Canonical. The tool fetches the page from GrowthGPT's server, follows any redirects, and reports the URL it finally landed on as the Page URL. Compare that to what you typed. If you entered an HTTP or non-www address and the Page URL shows the HTTPS www version, your redirects are working and the canonical is being judged against the right page.

Step 3: Read the canonical banner and status badge

The banner shows the declared canonical in large type with a copy button. Under it, one of three badges summarises the situation: Self-referencing canonical, Points to a different URL, or Missing canonical tag. That badge is your first triage decision. Self-referencing on a page you want ranked is the normal healthy state.

Step 4: Work through the checks list

A three-tile summary counts results as Passed, Failed, and Info. Failures are the things to fix. Info items are context that may or may not be a problem depending on intent, such as a canonical that points elsewhere. Read each line in the Checks card, because the detail text explains what was found.

Step 5: Test the variants, not just the clean URL

The clean URL is the least interesting test. Run the same page with a tracking parameter appended, a sorted or filtered version, and the HTTP version. A parameterised URL should return Points to a different URL with the clean address as the canonical. If it comes back self-referencing with the parameter still attached, every tagged link you share is creating an indexable duplicate. Use Re-check after each fix to confirm the change is live.

What does each canonical check mean?

The tool only shows checks that apply to the page, so a report can have anywhere from one line to seven. Here is what each one tests.

  • Canonical tag present. Passes when at least one canonical link tag exists in the HTML. A failure here means search engines get no stated preference and will choose among your duplicates on their own.
  • Single canonical tag. Fails when more than one canonical tag is found, and a separate card lists every value. Google may ignore all of them when they conflict, which is the same as having none.
  • Absolute URL. Fails when the canonical is relative, such as /pricing. Google's guide to specifying a canonical recommends absolute URLs because relative paths resolve differently across hosts and protocols.
  • Uses HTTPS. Shows as info when the canonical points to an HTTP address. On a site that serves HTTPS, that canonical is asking Google to prefer the insecure version, which contradicts your redirects.
  • Self-referencing or points to a different URL. Always info. It reports whether the canonical matches the final page URL. The comparison ignores letter case and a trailing slash.
  • OG URL matches canonical. Passes when og:url and the canonical agree, shows info when they differ, and shows info when og:url exists with no canonical at all.
  • HTTP Link header. If the server sends a canonical in a Link response header, the tool compares it with the HTML tag. A match passes, a conflict fails, and a header-only canonical shows as info.

Any og:url value and Link header canonical also appear in an Additional Signals card, so you can copy the exact strings into a ticket.

How do I read canonical checker results?

Most reports fall into one of a handful of patterns. Map yours to the row below before you open a ticket.

What the checker showsWhat it usually meansWhat to do next
Self-referencing, zero failuresHealthy page with a clear stated preferenceTest parameter and HTTP variants of the same page
Missing canonical tagTemplate omits it, or it is injected by JavaScriptAdd a server-rendered self-referencing canonical
Multiple canonical tagsTheme and SEO plugin both print oneDisable one source so a single tag remains
Points to a different URL on a page you want rankedTemplate bug, often a hardcoded homepage or staging URLFix the template, then confirm the target with the Redirect Checker
Relative URL or HTTP canonicalLegacy template from before an HTTPS or domain migrationSwitch to absolute HTTPS URLs on the final host
HTTP Link header conflictCDN or server rule disagrees with the HTMLRemove one source, keep the HTML tag for pages

What does the canonical checker not test?

Knowing the edges of a tool keeps you from over-trusting a green result. The Canonical Tag Checker reports what one URL declares. It does not crawl your site, and a few things are deliberately out of scope.

JavaScript-injected canonicals

The tool reads raw server HTML and does not execute JavaScript. That is a feature for diagnosis. Google's JavaScript SEO basics recommend against setting canonicals with JavaScript, and many AI crawlers fetch HTML without rendering it at all, as covered in how AI crawlers work. If the checker reports a missing canonical but your browser inspector shows one, the tag is being added client side, and that is the bug.

Whether the canonical target is healthy

The checker does not fetch the canonical URL itself. Paste the target into the Redirect Checker to confirm it returns 200 without hops, then run it through the Meta Tag Analyzer to make sure it does not carry a noindex robots meta. A header-level x-robots-tag shows up in the HTTP Header Checker. A canonical that points at a redirect or a noindexed page is a contradiction Google will resolve without you.

Placement, sitemaps, and hreflang

The tool finds canonical link tags anywhere in the HTML, but Google only honours them in the head. If a canonical shows up and Google still ignores it, view source and check that it sits above the closing head tag. Sitemap agreement is a separate test: run your sitemap through the Sitemap Validator and make sure it lists only canonical URLs. Hreflang is not evaluated, so check language variants by hand: each should self-canonicalise rather than point to another language.

What Google actually chose

The checker shows your declaration. Google's decision lives in Search Console. The URL Inspection tool lists a user-declared canonical and a Google-selected canonical side by side, and the Page indexing report groups URLs under statuses such as "Duplicate, Google chose different canonical than user". When those disagree with a clean checker result, the problem is in your other signals, usually internal links or redirects. Our guide on getting pages indexed faster covers how to read those reports.

How do I fix the most common canonical problems?

Fix order matters. Start with the issues that send contradictory signals, then tidy the cosmetic ones.

  1. Collapse multiple tags to one. Find every source that prints a canonical: the theme, an SEO plugin, a framework metadata helper, an edge function. Keep one and disable the rest.
  2. Move canonicals into server HTML. If the tag only exists after JavaScript runs, render it on the server. In Next.js App Router, that means setting alternates.canonical in the page metadata rather than writing the tag from a client component.
  3. Make every canonical absolute and final. Use the full HTTPS URL on the host you actually serve, with the same trailing slash convention your redirects enforce, so the canonical never points at a redirect.
  4. Align og:url and Link headers. Generate og:url from the same value as the canonical. Drop Link header canonicals on HTML pages unless you have a reason to keep them; they are most useful for files like PDFs.
  5. Back it up with internal links. Link to the canonical URL everywhere in your own navigation and body copy. The Internal Linking Optimizer helps map those links, and internal linking for AI search explains why they count as a canonical vote.

Canonicals rarely break alone. When you find one template bug, it is worth a site-wide pass. The Website Grader runs a broad health check across SEO and technical signals, and the walkthrough on how to use the Website Grader shows how to prioritise what it finds. For the rest of the head, the Meta Tag Analyzer guide covers titles, descriptions, and robots directives, and the XML Sitemap Generator guide shows how to build a sitemap that lists only canonical URLs.

Check your canonical tags today

A canonical is a single line of HTML that decides which of your URLs gets the credit, in classic results and in AI answers. It is also one of the easiest lines to break without noticing. Run your homepage, your top five money pages, and one parameterised URL through the Canonical Tag Checker now. It takes about a minute, and if any of them come back with a failure, you have found a problem that was quietly costing you before anyone asked why traffic dipped.

Frequently Asked Questions

What does the Canonical Tag Checker check?

It fetches the URL you enter, follows any redirects, and reads every rel=canonical link tag in the HTML, the og:url meta tag, and any canonical in the HTTP Link header. It then checks whether a canonical exists, whether there is only one, whether it is absolute, whether it uses HTTPS, whether it points to the page itself, and whether og:url and the Link header agree with it.

Why does the checker say no canonical when I can see one in my browser?

The checker reads the HTML your server returns and does not run JavaScript. If your canonical is injected client side by a framework, tag manager, or plugin, it will not appear in that raw HTML. Browser developer tools show the rendered DOM, which includes those injected tags. Move the canonical into the server-rendered head so every crawler sees it on the first request.

Is a canonical that points to a different URL an error?

Not necessarily. The checker flags it as information, not a failure. It is correct on parameter URLs, filtered views, and true duplicates that should consolidate into a preferred page. It is a problem when it appears on a page you want ranked in its own right, which usually means a template is printing the wrong value.

Does a self-referencing canonical guarantee Google uses my URL?

No. Google treats rel=canonical as a strong hint, not a directive, and weighs it alongside redirects, internal links, sitemaps, and HTTPS. A clean self-referencing canonical makes your preference clear. To confirm what Google actually chose, compare the user-declared and Google-selected canonical in the URL Inspection tool in Search Console.

Should og:url match the canonical URL?

Yes, as a matter of consistency. og:url tells social platforms which URL to attribute shares to, and when it disagrees with the canonical you split share counts and send mixed signals about which URL is the real one. The checker marks a mismatch as information rather than a failure, but it is usually a one-line template fix.

Ready to put this into practice?

Explore free AI-powered workflows for SEO, growth, and content, built for teams who move fast.

Explore free tools