Canonical tag checker
Paste a page URL and its HTML to see every canonical link, its resolved URL, and the checks that need attention.
No check run yet
Paste HTML to inspect its canonical links.
Canonical links found
A canonical is a preference signal
A canonical link tells search engines which URL you prefer for duplicate or very similar pages. Google can still select another URL when its other signals point elsewhere.
Google describes redirects and canonical link annotations as strong signals, while sitemap inclusion is weaker. Internal links should also point consistently to the preferred URL.
A missing canonical is not automatically a defect
A unique page can be understood without an explicit canonical. Treat a missing tag as an observation until duplicate versions, inconsistent internal links, or Search Console evidence show a real problem.
Relative and cross-site values need human review
The checker resolves relative values against the page URL or a valid base tag. A canonical pointing to another page or another site can be intentional, so the result describes the relationship instead of marking every mismatch as wrong.
This check covers pasted HTML
The tool does not fetch a live page or inspect an HTTP Link header. Paste the rendered HTML you want to review. You can send its title and description straight to the title and meta description checker without pasting them again.
Your HTML stays in the browser
The HTML is parsed in this browser tab and is not uploaded. Only a small set of candidate details is kept while the check is running.
Read the canonical result
The checker finds every canonical link in the HTML, resolves it to a full URL and says how it relates to the page: it points to itself, to another page on the same site, or to another site. It also reports more than one canonical, a canonical outside the head, and a value that cannot be read.
| Result | What it usually means |
|---|---|
| Points to itself | The normal case for a unique page. Nothing to do. |
| Points to another page | This page says it is a copy. Right for a filtered or tracking URL, wrong for a page you want ranked. |
| More than one | Google may ignore all of them. Keep one. |
| Missing | Fine for most unique pages. Worth adding where the same content has several URLs. |
Why Google picks a different canonical
A canonical tag is a request, not an order. Google weighs it against redirects, internal links, the sitemap, HTTPS and how similar the pages are. When those point somewhere else, Google can choose another URL, and Search Console says so with the status Duplicate, Google chose different canonical than user. The fix is to make the signals agree: link to the URL you want, list only that URL in the sitemap, and redirect the others when you can.
The status Alternate page with proper canonical tag is usually good news. It means Google found a duplicate, saw its canonical and indexed the page it points to. Act on it only when the listed page is one you wanted in the index.
Fix common canonical mistakes
- Every page points to the home page. A template bug that tells Google the whole site is one page.
- Canonical to a page that redirects or returns an error. Point it at the final, working URL.
- Mixed signals. The canonical says one URL while internal links and the sitemap use another, such as a trailing slash or
http. - Canonical and noindex on the same page. They ask for different things. Pick one.
- Translated pages pointing to the original. Each language version needs its own self-referencing canonical, with hreflang linking them. The hreflang generator builds that set.
Check canonicals across your site with your agent
One page tells you about one template. The seo crawl command checks every page it reaches on your own machine and reports missing, conflicting, repeated and relative canonicals, canonicals placed outside the head and chains where a canonical points to a page with its own canonical. Your agent can then trace each one to the template that prints it. Ask:
Crawl example.com and list every page whose canonical points somewhere other than itself, grouped by templateThe crawl runs from the CLI on your machine. Install it and run setup:
npm i -g seo && seo startOr add the hosted MCP server to your agent and sign in with Google:
Run it in a terminal, then sign in with Google.
Or run it on your machine
Installs the CLI, signs you in and adds the skill to your agents. Site crawls and Bing data run this way, on your own machine. A crawl fetches many pages, and Bing blocks our hosted server.