Find every page whose canonical tag is missing or points somewhere else, catch canonicals that name http or a staging host, and see where Google ignored your canonical and picked its own URL.
You sign in with Google and pick the property. The check only runs on sites your Google account owns or is verified for in Search Console.
Free for the 7-day trial, no credit card needed. After the trial you need a paid plan, from €17 a month, because there is no free plan for the web app.
Connect Search Console with read-only access for the crawl. To compare with the canonical Google selected, URL Inspection also needs full access, which you can enable later.
The check runs only on properties your Google account owns or is verified for in Search Console. With one property, this step is skipped.
The app opens the report with the URL you typed. Filter on the canonical category to see every page whose canonical is missing or points elsewhere.
Fictional data for example.com. The first rows come from the crawl, with the severities the app gives them. The rows marked Google come from URL Inspection, which reports the canonical Google selected next to the one the page declares, and carry no severity of their own. Filter by severity or category to narrow the list.
Example report for example.com
Fictional data, shown so you can try the report without signing in.
Showing 14 of 14 findings
| Severity | Category | Issue | Page | Details |
|---|---|---|---|---|
| Critical | Indexability | Noindex directive | /blog/archive | Page is noindex but still earns impressions in Search |
| Medium | Canonical | Missing canonical tag | /blog/seo-basics | Missing canonical tag |
| Medium | Canonical | Missing canonical tag | /docs/setup | Missing canonical tag |
| Medium | Canonical | Canonical points elsewhere | /pricing | Canonical points to another URL (https://staging.example.com/pricing) |
| Medium | Canonical | Canonical points elsewhere | /en/about | Canonical points to another URL (http://www.example.com/en/about) |
| Medium | Canonical | Canonical points elsewhere | /products/blue-widget?color=navy | Canonical points to another URL (https://www.example.com/products/blue-widget) |
| Low | Canonical | Canonical points elsewhere | /blog/page/2 | Canonical points to another URL (https://www.example.com/blog) |
| Medium | Sitemap | Non-indexable page in sitemap | /blog/page/2 | Non-indexable page is listed in the XML sitemap |
| Medium | Sitemap | Non-indexable page in sitemap | /pricing | Non-indexable page is listed in the XML sitemap |
| Low | Technical | Page redirects | /services | Page redirects to https://www.example.com/services/ |
| Low | Sitemap | Indexable page missing from sitemap | /guides/canonical-tags | Indexable page is not in the XML sitemap |
| URL Inspection | Google-selected canonical differs | /shoes/running | Declared: https://www.example.com/shoes/running. Google selected: https://www.example.com/running-shoes. Google selected a different canonical from the one the page declares. | |
| URL Inspection | Google-selected canonical differs | /en/about | Declared: http://www.example.com/en/about. Google selected: https://www.example.com/en/about. Google selected a different canonical from the one the page declares. | |
| URL Inspection | No declared canonical | /blog/seo-basics | Declared: (none). Google selected: https://www.example.com/blog/seo-basics/. The page declares no canonical, so Google picked one on its own. |
No findings match this filter.
For every page, the crawl fetches the HTML your server returns and reads the first <link rel="canonical"> in it, resolving a relative or protocol-relative href against the page. It then compares the canonical with the URL the page finally resolved to, after any redirects, ignoring a fragment and a trailing slash.
A canonical on http while the site runs on https, or on a staging host, counts as pointing elsewhere, which is how the most expensive canonical mistakes surface.
A canonical never works alone. The same report checks the signals that should agree with it: a page that points its canonical elsewhere but sits in your XML sitemap is flagged as a non-indexable page in the sitemap, an indexable page missing from the sitemap is flagged too, a URL that redirects is listed with where it lands, and a noindex on a page that still earns impressions is critical. When the canonical, the sitemap, the redirects and your internal links all name the same URL, Google is far more likely to follow your choice.
When Google finds several URLs with the same or very similar content, it groups them and chooses one as the canonical, the version it indexes and shows in results. Your rel="canonical" is a strong hint in that choice, not an order. Google also weighs redirects, sitemap entries, internal links, https over http and which version other pages link to.
That is why the declared canonical and the Google-selected canonical can differ. Google's URL Inspection reports both for a URL: the user-declared canonical and the Google-selected canonical. In GSC Wizard's URL Inspection report the two sit side by side, a notice appears when Google selected a different canonical from the one the page declares, and the CSV export has a Canonical Match column. Where they differ, the usual fixes are to point internal links and the sitemap at the URL you want, redirect the duplicate, or accept Google's choice and update your canonical to match.
A public canonical checker can read one page's tag, but it cannot tell you which URL Google chose, because only the site owner can ask Google that. Signing in with the Google account that owns the property gives you both halves: the crawl checks the tags across up to 1,000 pages, and URL Inspection tells you what Google did with them. URL Inspection counts against a daily limit of 2,000 inspections per property, the same ceiling Google sets.
The example report on this page is free and needs no account. Checking the canonicals of your own site is free for the 7-day trial, with no credit card needed. After the trial you need a paid plan, from €17 a month, because there is no free plan for the web app.
The user-declared canonical is the URL your page asks Google to index, through a rel="canonical" link, an HTTP header or your sitemap. The Google-selected canonical is the URL Google actually chose after comparing the duplicates it found. They usually match. When they do not, Google indexes and ranks its own choice, and URL Inspection in Search Console is where you see both.
The crawl reads the first rel="canonical" link in the HTML of each page and resolves relative URLs against the page. A canonical sent only in an HTTP Link header is not read by the crawl, so such a page can show as missing a canonical. URL Inspection does report Google's view of it, because the user-declared canonical Google returns includes header canonicals.
A page whose canonical points to another URL is reported as "Canonical points elsewhere", because it will not be indexed under its own address. On a parameter URL or a print version that is exactly what you want, and the severity is low when the page earns no impressions. It is raised to medium when the page earns impressions under its own URL, because Google is then showing a page you told it to drop.
The crawl needs read-only Search Console access, which cannot change anything in your account. Google's URL Inspection API refuses read-only access, so to see the Google-selected canonical you enable full access for that Google account on the Account page. GSC Wizard uses it to read inspection results.
No, only on sites you own or are verified for in Search Console. There is no public crawl endpoint, and URL Inspection only works for properties your Google account has access to.
Crawl your site for technical and on-page SEO issues.
Find orphan pages, broken internal links and dead ends.
Check the index status of up to 2,000 URLs at a time.
See where your keywords rank in Google.
Look up the backlinks and referring domains of a domain.
Traffic trend, CTR, rankings and indexing in one routine.
Every free tool on one page.
Sign in with Google, pick your property and see which canonicals are missing, which point elsewhere and which Google overruled.
Check canonicalsFree for the 7-day trial, no credit card needed. After the trial you need a paid plan, from €17 a month, because there is no free plan for the web app.
Practical GSC and GA4 workflows, product updates and SEO experiments. No spam, unsubscribe anytime.