On-page SEO · Canonical URL
Check Canonical Tags
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.
When a canonical check is the right first scan
Use this page when ranking signals look split across URL variants. Use a heading or Next.js launch checklist when the problem is markup or production config instead.
Use this checker
www vs non-www, trailing slash, HTTP vs HTTPS, or a preview host still appears in Search Console as a competing page. You need to know whether rel=canonical exists, is absolute, and resolves to the production 200 URL.
Problem → aftermath → next step
Problem: Google may index more than one URL for the same document. Aftermath: links and impressions split, so neither URL ranks well. Next step: set one absolute HTTPS canonical, then confirm Google's selected canonical matches it.
Pick the adjacent tool, not another copy of this page
If the page is noindexed, canonical will not recover it — open the noindex checker. If the heading is missing from HTML, open the H1 checker. If robots.ts, metadataBase, or Vercel preview hosts are the launch risk, open the Next.js production checklist.
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
- H1 tag checker — heading issues are a different failure than duplicate URLs
- Next.js production checklist — metadataBase and preview-host canonicals on App Router
- 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