Canonical tag checker: see where your canonical really points
Enter any page URL. MrKeyword fetches it live, reads the rel=canonical tag and the HTTP Link header, then follows the canonical target to check that it answers HTTP 200, can be indexed and points to itself.
Free, no account needed. MrKeyword fetches the page live and shows only what it found.
A canonical tag is a <link rel="canonical" href="…"> element in the page head that names the preferred URL when several addresses show the same or very similar content, such as tracking parameters, sorted product lists or http and https copies. Files that have no HTML head, like PDFs, can send the same signal in an HTTP Link header.
Google treats the canonical as a strong hint, not a rule. It weighs it with redirects, internal links, the sitemap and HTTPS, and it can pick a different URL when the signals disagree. Two canonicals that name different URLs, or a canonical that points at a redirect, an error or a noindex page, make it more likely that Google ignores your choice.
This checker reads both sources on the live page, then requests the canonical target without following redirects, so it can show the target's own status, noindex directives and canonical, and follow up to five pages to find chains and loops. For the full set of indexing signals on one URL, use the indexability checker.
In the result
Clear answers, with the reason shown.
Both sources
HTML tag and Link header.
Every rel=canonical in the page head and in the HTTP Link header, resolved to a full URL, with conflicts, relative URLs, http targets and query strings flagged.
Self-referencing canonical confirmed
HTML and header conflicts shown
The target, followed
Where the canonical leads.
Each canonical target is fetched live with its HTTP status, noindex directives and its own canonical, up to five pages deep.
Redirects and errors flagged
Chains and loops caught
Worked example
A canonical that points at a redirect.
The fictional northwind-plumbing.example adds ?ref=footer to a footer link, and the page's canonical names the clean address without the trailing slash. The site later moved every page to a trailing slash with a 301. This is what the checker shows for https://northwind-plumbing.example/boiler-repair?ref=footer:
https://northwind-plumbing.example/boiler-repair?ref=footer1 to fix
NoteThe canonical points to another address: https://northwind-plumbing.example/boiler-repair. Google treats this as a hint that the other URL is the main version.
FixThe canonical points to a redirect: https://northwind-plumbing.example/boiler-repair answers HTTP 301 and sends visitors to https://northwind-plumbing.example/boiler-repair/. Point the canonical at the final URL.
Example result for a fictional website (northwind-plumbing.example). It is produced by the checker's own code from the setup described above; run the checker for your own pages.
Pointing the tracked URL at the clean one is right, but the clean URL now answers 301, so Google has to resolve a redirect before it can use the hint and may choose another URL instead. The fix is to update the canonical tag in the page template to the final address, https://northwind-plumbing.example/boiler-repair/, so every page names a URL that answers HTTP 200 and points to itself. Read canonical tags explained for when to use a self canonical, and check the rest of the indexing signals with the indexability checker.
Reading the result
How do you read the canonical checker result?
The canonicals table
Every canonical URL found on the page, resolved to a full address, and whether it came from the HTML head or the HTTP Link header. More than one different URL is a conflict.
The chain table
The first row is the page you entered. Each next row is a canonical target the checker requested live, without following redirects, with its HTTP status, whether it can be indexed and the canonical it names in turn.
The findings
Each finding is labelled Problem, Fix, Note or Good, and the chip at the top sums them up. A canonical to another URL is a note, not an error: it is often intentional.
Common errors
What are the most common canonical problems?
Canonical points to a redirect
Usually left over from a migration or a trailing-slash change. Update the canonical to the final URL that answers HTTP 200.
Canonical points to a 404 or noindex page
Google will not use a missing or noindex page as the main version. Point the canonical at a live, indexable page, or use a self canonical.
HTML and Link header disagree
A CDN or plugin often adds a Link header that the template does not know about. Remove one source or make both name the same URL.
Canonical chains and loops
Page A names B, and B names C (or A again). Point every duplicate straight at the one final URL.
Relative or http:// canonicals
Use an absolute https:// URL, so the canonical cannot resolve to the wrong host or protocol.
When to check
When should you check canonical tags?
Check a page's canonical whenever URLs change or Search Console reports that Google chose a different canonical.
After a migration or URL change
Old canonicals often keep naming addresses that now redirect.
When Search Console says “Duplicate, Google chose different canonical”
Check that your canonical answers HTTP 200, is indexable and agrees with the Link header.
After installing an SEO plugin or CDN rule
A second source of canonicals can conflict with the one in your template.
For filtered or tracked URLs
Confirm parameter versions point at the clean URL, and that the clean URL points to itself.
A canonical tag on a page that names that same page's URL. It tells Google which version of the address you prefer, for example without tracking parameters, so links and signals are counted for one URL.
Does Google always follow the canonical tag?
No. Google treats rel=canonical as a hint. It can choose another URL when redirects, internal links, the sitemap or the content point elsewhere. Search Console URL Inspection shows the canonical Google selected.
Can a canonical point to a URL that redirects?
It works badly. Google has to resolve the redirect and may pick a different URL. Point the canonical straight at the final URL that answers HTTP 200.
What happens if the HTML and the Link header disagree?
When a page sends two different canonical URLs, Google may ignore both. Keep one source, or make both name the same URL.
Should a canonical be an absolute URL?
Yes. Google supports relative URLs but recommends absolute ones, such as https://example.com/page, because a relative path can resolve to the wrong host or protocol.