🔴 Broken — will cause problems

This is page 2 of 2 in a canonical loop. Its canonical points to page 1, which points back here. Neither page consolidates to a preferred version. View page 1 of the loop →

What this demonstrates

Both pages in this loop point their canonical at the other. Page 2 declares page 1 as its preferred version. Page 1 declares page 2. The result: Google detects the loop and ignores both canonicals, treating each page as its own canonical.

Why it matters

When Google detects a canonical loop, it disregards both canonicals and treats each page as self-canonical. Any duplicate content signals aren't consolidated — link equity stays split across both URLs. This is a common mistake when canonical logic is applied conditionally or when paginated series reference each other incorrectly.

The code

This is the canonical tag on this page. It points to page 1, which points back here — completing the loop.

<!-- On this page (looped-canonical-2.html) --> <link rel="canonical" href="https://sallymills.com/canonicals/looped-canonical-1/"> <!-- On page 1 (looped-canonical-1.html) --> <link rel="canonical" href="https://sallymills.com/canonicals/looped-canonical-2/">

What Google does

  1. Googlebot crawls this page and reads the canonical pointing to looped-canonical-1/.
  2. Googlebot crawls looped-canonical-1/ and reads the canonical pointing back to this page.
  3. Google detects the loop — neither page resolves to a stable canonical destination.
  4. Both canonicals are ignored. Each page is treated as self-canonical.
  5. Duplicate content signals are not consolidated. If both pages have similar content, ranking signals remain split.

How to detect it

  • view-source Ctrl+U (Windows) / Cmd+U (Mac) → search for canonical → confirm the href value. Then open page 1 and repeat — you'll see both pages pointing at each other.
  • curl Open Command Prompt (Windows) or Terminal (Mac) and run: curl -L https://sallymills.com/canonicals/looped-canonical-2/ | grep canonical — Returns the canonical tag from the raw HTML. Run against both pages to see each pointing at the other. (Windows: replace | grep canonical with | findstr canonical.)
  • Google Search Console If both pages appear in Coverage / Indexing under "Duplicate without user-selected canonical", this loop may be the cause.
  • Screaming Frog Crawl both pages → Canonicals tab → the "Canonical URL" column will show each page pointing to the other. Screaming Frog may flag this as a canonical chain or loop warning.

How to fix it

Ensure every canonical chain resolves to a single, stable destination with a self-referencing canonical. If these two pages are duplicates, pick one as the preferred version and point both canonicals at it. The preferred page should then have a self-referencing canonical:

<!-- Correct: both pages point to the same preferred URL --> <link rel="canonical" href="https://sallymills.com/canonicals/looped-canonical-1/">