On-page SEO · Canonical URL
Canonical Tag Checker
Without a <link rel="canonical"> tag, Google may index multiple URL variants of the same page — www vs non-www, with/without trailing slash, HTTP vs HTTPS — and split your ranking signals across them. Paste your URL and we verify canonical exists and points to the right place, then stamp CLEARED / HOLD / DENIED.
How to check canonical tags and common canonical issues
These silently dilute SEO value. You won't see an error — just slower ranking and fragmented authority.
Missing canonical tag entirely
Search engines guess which URL variant to index. www and non-www versions both get indexed, splitting link equity and causing duplicate content issues.
Canonical points to a preview/staging domain
rel=canonical still pointing at *.vercel.app or a staging URL. Google indexes the wrong domain and your production URL never accumulates authority.
Canonical is a relative URL
Some platforms render relative canonical URLs (/page instead of https://...). Crawlers may resolve them incorrectly, especially across subdomains.
Conflicting canonical and og:url
When rel=canonical and og:url point to different URLs, social platforms and search engines disagree on the canonical version.
Canonical points through a redirect
A declared canonical should resolve directly to the preferred 200 URL. Redirecting canonicals add ambiguity and make audits harder to interpret.
Alternative page with a proper canonical tag
Search Console may exclude a duplicate URL when it correctly points to another canonical page. Confirm the selected destination is the preferred 200 URL before treating the exclusion as an error.
Copy-paste canonical fixes
Always use absolute HTTPS production URLs in canonical tags.
Next.js App Router — metadata API
export const metadata = {
alternates: {
canonical: 'https://yourdomain.com/',
},
}Plain HTML
<head>
<link rel="canonical" href="https://yourdomain.com/" />
</head>
<!-- Must be absolute, HTTPS, production domain -->Per-page canonical (Next.js)
// app/blog/post-1/page.tsx
export const metadata = {
alternates: {
canonical: 'https://yourdomain.com/blog/post-1',
},
}Still check by hand
- □Canonical must be an absolute URL (https://yourdomain.com/...)
- □Ensure it never points at preview or staging hosts
- □Use one canonical per page — don't chain redirects through canonicals
- □Verify with URL Inspection in Search Console after deploy
- □Compare the declared canonical with Google's selected canonical in Search Console
- □Treat 'alternative page with proper canonical tag' as expected when the destination is intentional
Related
- Title tag checker
- Open Graph checker — og:url should match canonical
- Noindex checker — noindex overrides canonical
- robots.txt checker
- Website launch checklist
- Methodology
- Go-Live Clearance home