Canonical tags and duplicate content: how to get them right

Contents
  1. Which checks cover canonical?
  2. What does the tag look like?
  3. When should the canonical point elsewhere?
  4. What are the common mistakes?
  5. How do you reduce duplicate content in the first place?
  6. Key takeaways

The same page is often reachable at many addresses. With and without www, with tracking parameters, with a trailing slash, over http and https. To a crawler these can be separate pages with identical content. A canonical tag says which one counts.

Which checks cover canonical?

Check idWhat it testsPasses when
canonicalA canonical link is presentThe tag exists
canonical_selfThe canonical points to this pageThe canonical resolves to the scanned URL
canonical_absoluteThe canonical is an absolute URLIt starts with a scheme like https:
og_url_matches_canonicalog:url agrees with the canonicalBoth name the same page
meta_robots_conflictRobots directives do not contradictNo index with noindex

What does the tag look like?

<link rel="canonical" href="https://example.com/care">

Use the full URL, with the scheme and host. A relative value like /care is easy to break and fails canonical_absolute.

When should the canonical point elsewhere?

When the page is a deliberate copy: a print version, a filtered list, or a tracking-parameter variant. Then canonical_self will fail, and that is correct. Decide on purpose. If a page is meant to rank by itself, it should point to itself.

What are the common mistakes?

  1. Canonical pointing at the home page from every page.
  2. A canonical that differs from the redirect target or from og:url.
  3. Two canonical tags that disagree.
  4. A canonical pointing at a URL that is blocked or marked noindex. See robots.txt and AI crawlers.
  5. Mixing index and noindex in one robots meta.

How do you reduce duplicate content in the first place?

  1. Redirect http to https and pick one hostname.
  2. Pick a trailing slash policy and keep it.
  3. Keep parameters out of internal links.
  4. Give each page its own title and description. See meta descriptions.

Key takeaways

FAQ

What is a canonical tag?
It is a link in the head that names the preferred address for a page. Search engines use it to pick one URL when the same content is reachable at several.
Should a page point its canonical at itself?
Usually yes. A self-referencing canonical is the safe default. Point elsewhere only when the page really is a copy of another.
Is the canonical a command?
No. It is a strong hint. Search engines can pick a different URL if other signals disagree.
Why does findable skip canonical_self?
It needs a canonical to compare against. With no canonical tag, canonical_self and canonical_absolute are skipped and canonical fails.

How does findable score a page?

FamilyWeightQuestion it asks
SEO50%Can crawlers read and index this page?
AEO25%Is it easy to lift an answer from this page?
GEO25%Does the page give a generative model a reason to cite it?

The hosted audit waits up to 10 s for a page and fetches at most 5 MB. It reads robots.txt and llms.txt up to 512 KB each.

More guides

Every findable AEO Check ID and How to Fix It
All 35 AEO checks in findable explained, from aeo_faq to aeo_summary. See what each id tests, how loose the test is and how to fix it. AEO is 25% of the score.
FAQ Schema for Answer Engines: Markup and Checks
How to add FAQPage JSON-LD that answer engines can lift, and how findable tests aeo_faq, aeo_faq_count and faq_valid. Includes a working example.
Get Findable in 15 Minutes: A Step by Step Checklist
Install findable, audit a page and your site, fix the top failures, then add MCP, the web UI, the API and a CI gate. Every step has a copy-paste command.
Every findable GEO Check ID, Plus AI Crawler Checks
All 27 GEO checks in findable explained, plus the unscored Site checks for GPTBot, ClaudeBot and llms.txt. GEO is 25% of the score. Fixes included.
Image Alt Text, Dimensions and Lazy Loading Explained
Fix img_alt, img_dimensions, img_alt_quality, img_lazy_loading and img_modern_format. See what each image check in findable tests and how to pass.
JSON-LD Schema Basics: What findable Checks and Why
Learn what JSON-LD is, which schema.org types findable validates, and how to fix jsonld_valid, jsonld_context and empty or relative values.
llms.txt: What It Is and How findable Checks It
llms.txt is a plain Markdown file at your site root that points AI tools to your key pages. See the llms-txt check and how to write the file.
How to Write a Meta Description That Passes findable
Write a meta description of 120 to 160 characters, one per page, that matches the page. See the checks desc_exists, desc_length and desc_single.
Open Graph and Twitter Cards: Fix Your Share Previews
Add og:title, og:description, og:image, og:url and twitter:card so links unfurl well. See every social check findable runs and how to pass it.
robots.txt and AI Crawlers: GPTBot, ClaudeBot, PerplexityBot
How robots.txt rules decide whether GPTBot, ClaudeBot, PerplexityBot and Google-Extended can fetch your page, and how findable tests each one.
Every findable SEO Check ID and How to Fix It
A plain guide to all 98 SEO checks in findable, from title_length to csp. See what each id tests, when it passes and the fix. SEO is 50% of your score.
SEO vs AEO vs GEO: The Difference in Plain Words
SEO, AEO and GEO each target a different reader: a search crawler, an answer box, or a generative AI model. See what wins in each and how to check them.
Why AI Answer Engines Skip Your Site and How to Fix It
ChatGPT, Perplexity and Claude may ignore your pages for five fixable reasons, from robots.txt blocks to missing answers. Learn each cause and its check id.