← Back to Blog

Canonical & Redirect Graph — visualize every chain SEO crawlers hate

Canonical & Redirect Graph — visualize every chain SEO crawlers hate

Two of the most common site-wide technical-SEO bugs don't show up in a single-page audit:

  1. Redirect chains — A → B → C → D. Googlebot has a cap on redirect hops (~10 but behavior degrades at 3+). Each hop drains crawl budget and the transferred PageRank decays at each hop.
  2. Canonical conflicts/page-a/ canonicalizes to /page-b/ but /page-b/ canonicalizes to /page-c/. Or /page-a/ sends a rel=canonical self-reference but /page-b/ also points at /page-a/. The crawler picks one to trust; often not the one you wanted.

Both bugs hide in the gaps between pages. You can't see them by looking at one URL — you have to look at the graph.

The Canonical & Redirect Graph crawls up to 50 URLs from your sitemap and renders the full redirect + canonical relationships as an interactive SVG.

What it surfaces

  • Redirect chains of length 2+, with each hop labeled by status code (301/302/307/308)
  • Canonical conflicts — page A's canonical points to B, but B's canonical points to C
  • Canonical self-reference loops (page canonicalizes to itself — normal, flagged green)
  • Cross-protocol chains — HTTP → HTTPS with a mid-chain HTTP step (security flag)
  • Cross-subdomain canonicalswww. and apex disagreeing on canonical target
  • Canonical to 404 — canonical target returns 404 (kills indexation)
  • Canonical to noindex — canonical target has noindex (intentional? usually not)
  • Canonical to non-200 — canonical target returns 3xx/5xx

Each node is one URL; edges show the relationship (redirect arrow, canonical arrow, canonical-to-noindex dashed arrow). Hover reveals the raw header/meta value.

Why the visual matters

A spreadsheet of redirect pairs doesn't show you that three separate domains chain into the same target. A graph does — the chain becomes a visible V shape, and you see the fix (flatten to 1 hop) as a shape change rather than a list of rules.

Same for canonical conflicts: the bug is always a cycle or a disconnected component, and cycles/components are pattern-recognition problems, not lookup problems.

How to use it

  1. Go to /tools/canonical-redirect-graph/
  2. Paste a sitemap URL (or the site root — tool auto-discovers /sitemap.xml)
  3. Tool crawls up to 50 URLs (rate-limited, polite)
  4. SVG renders with each node labeled by path and each edge color-coded (red = problem, green = clean)
  5. Click a node to see its raw response headers

Typical runtime: ~30-60 seconds for a 50-URL crawl.

What the tool can't check (yet)

  • JS-rendered canonicals — if your canonical <link> is injected post-render by a React/Vue hook, the server-rendered HTML won't have it. Use Prerender / JS Hydration Parity alongside this tool.
  • Server-side redirects with cookies — some sites return different redirects based on user-agent or cookie state. The tool uses a plain Googlebot-style UA.
  • Redirect intent — the tool can't tell you whether a 302 should be a 301. That's a human judgment about whether the move is temporary.

Related reading

Fact-check notes and sources

This post is informational, not SEO-consulting advice. Mentions of Google, Googlebot, and similar products are nominative fair use. No affiliation is implied.

← Back to Blog

Accessibility Options

Text Size
High Contrast
Reduce Motion
Reading Guide
Link Highlighting
Accessibility Statement

J.A. Watte is committed to ensuring digital accessibility for people with disabilities. This site conforms to WCAG 2.1 and 2.2 Level AA guidelines.

Measures Taken

  • Semantic HTML with proper heading hierarchy
  • ARIA labels and roles for interactive components
  • Color contrast ratios meeting WCAG AA (4.5:1)
  • Full keyboard navigation support
  • Skip navigation link
  • Visible focus indicators (3:1 contrast)
  • 44px minimum touch/click targets
  • Dark/light theme with system preference detection
  • Responsive design for all devices
  • Reduced motion support (CSS + toggle)
  • Text size customization (14px–20px)
  • Print stylesheet

Feedback

Contact: jwatte.com/contact

Full Accessibility StatementPrivacy Policy

Last updated: April 2026