TechnicalFree

Canonical URLs

Validates your canonical tag to ensure AI engines know which version of a page is authoritative. Prevents duplicate content confusion.

Why It Matters for AI Visibility

A canonical tag tells AI engines which URL is the authoritative version of your page. Without it, ChatGPT, Perplexity, and Google AI Overviews must guess. Your content might be accessible at multiple URLs -- with and without trailing slashes, with query parameters, through HTTP and HTTPS -- and AI engines need to know which one to cite. The canonical tag eliminates that ambiguity. When AI engines encounter duplicate or near-duplicate URLs without canonical guidance, they may split authority across those variants, cite an unexpected URL version, or skip the page entirely in favor of a competitor with cleaner URL signals. A self-referencing canonical tag consolidates all authority signals to one definitive URL. The impact is most visible for sites with complex URL structures: e-commerce sites with filtered product pages, blogs with paginated archives, and SaaS platforms with localized content. Every URL variant without a canonical tag is a potential authority leak. The canonical tag plugs those leaks and tells AI engines exactly where to point when they reference your content.

How We Score It

The analyzer reads the `<link rel="canonical">` tag from your page and evaluates four scenarios. No canonical tag at all scores a 0. A canonical that matches the analyzed URL (after normalizing case and trailing slashes) scores a perfect 10. A canonical pointing to a different path on the same domain scores a 5 -- this might be intentional, but the analyzed page is not the preferred version. A canonical pointing to a different domain scores a 3 -- legitimate only for syndicated content. The comparison is case-insensitive and normalizes trailing slashes, so `https://example.com/page/` and `https://example.com/page` are treated as equivalent. However, protocol (HTTP vs HTTPS) and domain (www vs non-www) must match exactly. A score of 7 or higher passes.
See how your site scores on this factorAnalyze My Site

How to Improve

  • 1

    Add a self-referencing canonical tag to every page

    Every page should include `<link rel="canonical" href="https://yourdomain.com/current-page">` in the head. The canonical URL should exactly match the page's preferred URL. This is the single highest-impact fix -- going from no canonical (score 0) to a matching canonical (score 10) in one line of HTML.

  • 2

    Ensure the canonical uses HTTPS, not HTTP

    If your site uses HTTPS but your canonical tag references `http://`, AI engines receive conflicting protocol signals. Always use the HTTPS version in your canonical tag. Check your CMS settings -- some generate HTTP canonicals by default even on HTTPS sites.

  • 3

    Match the canonical to your preferred www/non-www format

    If your site uses `example.com` (no www), your canonical should also use `example.com`. A canonical pointing to `www.example.com` when the page loads at `example.com` creates a mismatch. Pick one format and enforce it everywhere with redirects and consistent canonical tags.

  • 4

    Audit pages with same-domain canonical pointing elsewhere

    A canonical pointing to a different path on the same domain scores a 5. This is sometimes intentional -- parameter variations canonicalizing to a clean URL -- but it can also indicate misconfiguration. Review these pages to confirm the canonical target is correct and that you intended the analyzed page to be non-canonical.

Before & After

Before
<head>
  <title>10 Tips for Better API Design</title>
  <!-- No canonical tag. Score: 0 -->
</head>
After
<head>
  <title>10 Tips for Better API Design</title>
  <link rel="canonical" href="https://example.com/blog/api-design-tips">
  <!-- Score: 10 (canonical matches page URL) -->
</head>

Code Examples

Self-referencing canonical (best practice)

<link rel="canonical" href="https://example.com/blog/api-design-tips">

Cross-domain canonical for syndicated content

<!-- Only use when content is republished from another site -->
<link rel="canonical" href="https://original-publisher.com/article">

Next.js dynamic canonical generation

export function generateMetadata({ params }) {
  return {
    alternates: {
      canonical: `https://example.com/${params.slug}`,
    },
  };
}

Frequently Asked Questions

Why does a same-domain canonical to a different path score 5?

It is not necessarily wrong. You might intentionally canonicalize a URL variant (like a filtered product page) to the primary version. But it means the page you analyzed is not the preferred version, so the score reflects that ambiguity. Verify it is intentional, or analyze the canonical target URL instead.

Should every page have a canonical tag?

Yes. Every page should have a self-referencing canonical tag at minimum. This prevents AI engines from guessing which URL version is authoritative. Even if your site has no duplicate content issues, a canonical tag is a definitive signal that costs nothing to implement.

Does the canonical tag need to be an exact URL match?

The analyzer normalizes trailing slashes and case, so `https://example.com/page/` and `https://example.com/Page` are treated as equivalent. But protocol (HTTP vs HTTPS) and domain (www vs non-www) must match. Always use your preferred, production-ready URL format in canonical tags.

Related Factors

Check Your GEO Score

Run a free analysis on your website and see how you score across all 52 factors.

Analyze My Site