Two of the most common site-wide technical-SEO bugs don't show up in a single-page audit:
- 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.
- Canonical conflicts —
/page-a/canonicalizes to/page-b/but/page-b/canonicalizes to/page-c/. Or/page-a/sends arel=canonicalself-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 canonicals —
www.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
- Go to /tools/canonical-redirect-graph/
- Paste a sitemap URL (or the site root — tool auto-discovers
/sitemap.xml) - Tool crawls up to 50 URLs (rate-limited, polite)
- SVG renders with each node labeled by path and each edge color-coded (red = problem, green = clean)
- 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
- URL Structure Hygiene Audit — single-URL hygiene
- Sitewide Crawl Sampler — broader crawl coverage
- Every new AEO tool for 2026
Fact-check notes and sources
- Redirect hop limits: Google Search Central — Crawl budget management.
- Canonical tag behavior: Google Search Central — Consolidate duplicate URLs.
- 301 vs 302 PageRank transfer: Google's John Mueller on redirects.
This post is informational, not SEO-consulting advice. Mentions of Google, Googlebot, and similar products are nominative fair use. No affiliation is implied.