Canonical Tag Checker
Enter any URL to trace its canonical tag chain. Detect self-referential canonicals, cross-domain canonicals, missing canonical tags, and canonical loops that cause duplicate content issues.
Enter any URL to trace its canonical tag chain and catch duplicate content issues.
How Canonical Tags Work
When search engines encounter the same content at multiple URLs — which happens constantly through trailing slashes, case variations, UTM parameters, paginated versions, and HTTP/HTTPS pairs — they must decide which URL to index and rank. The canonical tag is your way to make that decision explicitly rather than leaving it to Google's crawl heuristics.
A properly configured canonical setup means every page either has a self-referential canonical (pointing to itself) or points directly to the preferred URL in a single hop. Canonical chains, loops, and missing canonicals all cause Google to ignore your hints and choose for itself — often choosing wrong.
Common Canonical Problems
Missing canonical
Google must guess which duplicate URL to rank. Ranking signals split across URL variants reduce the authority of each.
Canonical chain (A → B → C)
Google follows at most one canonical hop in practice. Intermediate URLs in a chain may not pass signals as expected.
Canonical loop (A → B, B → A)
Google ignores looping canonicals entirely and indexes both pages independently, neither benefiting from the other's signals.
Cross-domain canonical unintended
A canonical pointing to a different domain transfers ranking credit away from your site. Often caused by CMS templates or copied code.
Canonical conflicts (header vs HTML)
When the Link header and HTML canonical disagree, Google resolves the conflict itself — often not in your favor.
Setting Canonicals in Next.js
// app/products/[slug]/page.tsx
export async function generateMetadata({ params }): Promise<Metadata> {
return {
alternates: {
canonical: `https://builtbyme.io/products/${params.slug}`,
},
}
}
// For static pages, set it directly:
export const metadata: Metadata = {
alternates: {
canonical: 'https://builtbyme.io/about',
},
}Next.js renders this as <link rel="canonical" href="..."> in the page head automatically.
Frequently Asked Questions
What is a canonical tag and why does it matter for SEO?
A canonical tag is an HTML element — <link rel='canonical' href='...'> — that tells search engines which version of a page is the 'original' or 'preferred' version when multiple URLs show the same or similar content. Without canonical tags, search engines may split ranking signals across duplicate URLs: the www and non-www version, HTTP and HTTPS, URLs with and without trailing slashes, paginated pages, and URLs with UTM parameters. The canonical tag consolidates those signals to the preferred URL, improving its ranking potential and preventing duplicate content penalties.
What is a self-referential canonical and is it necessary?
A self-referential canonical is a canonical tag that points to the page it is on: the canonical URL matches the page URL. This is best practice even when you have no duplicate content issues. It tells Google explicitly that this is the canonical version of itself, preventing accidental canonicalization from external links that add parameters, scrapers that republish your content with a different URL, or CDN and proxy configurations that create URL variants. Google recommends self-referential canonicals on all pages. Next.js and other frameworks add them automatically when you set the canonical in your metadata.
What is a canonical chain and why is it a problem?
A canonical chain occurs when Page A points to Page B as its canonical, and Page B points to Page C, requiring multiple hops to reach the final canonical URL. Canonical chains are a problem because Google only follows canonical hints, not canonical rules — if the chain is long or inconsistent, Google may ignore the intermediate signals and choose its own preferred URL. A single direct canonical hop from every page to its canonical is always better than a chain. If you have recently consolidated URLs or migrated from HTTP to HTTPS, check for residual chains.
Can a canonical tag appear in an HTTP response header instead of HTML?
Yes. The Link HTTP response header can carry a canonical hint: Link: <https://example.com/page>; rel='canonical'. This is equivalent to the HTML <link rel='canonical'> tag and Google respects both. HTTP header canonicals are useful for non-HTML content types like PDFs where you cannot add HTML tags, or for pages where you want the canonical set at the server layer without modifying HTML. If both a header canonical and an HTML canonical exist and they conflict, Google will use its own judgment. This tool checks both sources.
What is a cross-domain canonical and when should I use one?
A cross-domain canonical is a canonical tag that points to a page on a different domain. This is intentional when you syndicate content to a publisher and want the original page to receive the ranking credit, or when you migrate a site to a new domain and want to signal which domain is authoritative during the transition. Google respects cross-domain canonicals but treats them as a strong hint rather than a directive. If you see a cross-domain canonical on a page that should not have one, it may be pointing link equity and ranking signals to a third-party domain unintentionally.
Related tools