Canonical Tag Checker

Enter a page URL. See its declared canonical and the fixes that need attention.

The Canonical Tag Checker shows which URL a page declares as its preferred version and whether the checked signals contain problems. Enter a public page URL to inspect its HTML canonical links, HTTP Link headers and immediate canonical target. A valid declaration is useful evidence, but it does not confirm indexing or show which URL Google has selected.

Check the exact page URL

Start with the address causing concern, including its query parameters. If an email campaign links to https://example.com/products/blue-shirt?utm_source=email, check that variant rather than only the homepage. Then compare its declared target with the URL you actually want to represent that content.

If the submitted address redirects, the declarations come from its final response. The URL flow helps you distinguish that redirect from a canonical pointing elsewhere.

The checker examines one source and, when a single eligible target can be identified, at most one different target. A self-referencing canonical reuses the source. It reads delivered HTML and HTTP headers without executing JavaScript. It does not crawl your website, compare page content or inspect robots.txt and sitemap files.

Read the canonical checker's results

Read the result together with its coverage. The colors and icons help you find the next action; they are not an SEO score.

Result What it tells you Next action
Green ✓ No problems found in the checked signals Confirm that the declared target matches your intention
Red ✕ A confirmed problem, such as conflicting targets or a target with noindex Open the finding and repair its cause
Yellow ⚠ A warning, such as a missing, relative or repeated canonical Decide whether the declaration needs changing
Gray — Data could not be checked Resolve access or retry; do not assume the target is valid

“Complete” refers only to the supported source-and-target checks. “Partial” means some pages or declarations could not be fully examined. Read the stated reason before treating the report as confirmation.

A missing canonical is a warning, not proof that a page cannot rank. A timeout is an unavailable check, not proof that the destination returns an error. The analysis details and JSON download let you keep the observed evidence for a later comparison.

Check the canonical declaration

A canonical pointing to another page can be deliberate. For example, if a tracking URL serves the same blue-shirt product page, it can nominate the clean product address. The preferred page can nominate itself. This illustrative HTML belongs inside the page's head:

<link rel="canonical" href="https://example.com/products/blue-shirt">

Before applying that pattern, compare the actual content. A different product, language or substantially different listing should not be consolidated simply because its URL looks similar. A target on another domain also needs an intentional explanation; the checker does not verify content equivalence or ownership.

Inspect where each declaration appears. A canonical link in the HTML body is not a valid head declaration. An HTTP Link header can declare a canonical too, including for a non-HTML document. If HTML and HTTP declarations nominate different eligible URLs, the report flags the conflict rather than choosing one for you. Repeated identical declarations are a separate warning.

Check both the original and resolved URL. A relative path may resolve successfully, but an HTML base URL can affect its destination. Prefer a complete absolute URL and remove fragments from the canonical. These placement and URL recommendations follow Google's canonical documentation.

Check the canonical target

Look beyond the presence of the tag. Does the nominated address return the expected page with HTTP 200? Does it redirect, declare another canonical or contain a noindex directive?

If the target redirects, verify the intended final destination before updating the source. If the target carries noindex, review why a page excluded from indexing is being nominated. The absence of noindex alone does not prove that a page is indexable.

For a canonical chain A → B → C, the checker can read B's declaration of C after inspecting A and B. It does not fetch C. Run C separately before using it as the preferred destination. A loop A → B → A needs a consistent destination instead of circular declarations. RFC 6596 recommends avoiding targets that declare another canonical or return an error.

If the target could not be retrieved, its response and directives remain unverified. Resolve that limitation before deciding that the relationship is healthy.

Fix the cause and confirm the change

  1. Choose the preferred address for this content. Keep meaningful product, language and pagination differences in mind; do not point unrelated pages at the homepage.
  2. Update the setting, template or HTTP header that writes the declaration. Remove conflicting writers so the response gives one consistent preference.
  3. Check the preferred target itself. Review its response, redirects, canonical and noindex directives. Confirm that its content represents the source appropriately. Use Noindex Checker to inspect the page’s HTML and HTTP directives, including their source and applicability to Google web search.
  4. Retest the original variant. Compare the new declarations, URL flow and coverage with the earlier report, including any query parameters that triggered the problem.

For a property you can access in Search Console, use URL Inspection to compare the user-declared and Google-selected canonicals in indexed data. Its live test cannot predict Google's canonical selection. A repaired response today and Google's stored indexed version are separate observations.

If access remains the question, use the Robots.txt Tester for that URL and crawler. Use the Sitemap Checker to validate your XML file, or the On-Page SEO Checker for broader page signals. These checks complement the canonical report; none replaces a manual review of whether the chosen page is the right representative.

To compare response codes and redirect chains across a list of pages, use the Bulk HTTP Status Checker.

Canonical Tag Checker — FAQ

Understand the checks and their limits.

What are the limits?

One source and at most one different target, five redirects per document and 50 declarations per document. The check takes at most 20 seconds, with eight seconds and 2 MiB per document. Partial coverage is explicitly labeled.

What does this canonical checker inspect?

It reads canonical links in the source HTML and HTTP Link headers. If there is one valid target, it checks that destination’s response, canonical and noindex directives. It does not crawl the whole website.

What should I do about conflicting canonical targets?

Keep one intended target consistent across HTML and HTTP headers. Check that it is the preferred page before removing conflicting declarations.

Is a missing canonical always an error?

No. A missing declaration is a warning. A canonical pointing to another page or domain is not an error by itself; review whether it matches your intended preferred URL.

Does a valid canonical guarantee indexing?

No. The report shows declared signals. It does not identify Google’s selected canonical, compare page content or confirm indexing. JavaScript, robots.txt and sitemaps are outside the check.