50 checks in Crawlability & Site Architecture. Automated Its subsection has a live automated checker in the engine.
| ID | Check | Passes when |
|---|---|---|
| 2.3.01 | Extract canonical from raw HTML of homepage | Present |
| 2.3.02 | Validate canonical URL is absolute (https://…) | Absolute URL |
| 2.3.03 | Validate canonical URL uses HTTPS | HTTPS |
| 2.3.04 | Validate canonical URL matches final resolved URL | Identical |
| 2.3.05 | Validate canonical tag is not duplicated | Only one canonical |
| 2.3.06 | Compare canonical in raw HTML vs DOM | Identical |
| 2.3.07 | Ensure canonical URL matches preferred www or non-www version | Consistent |
| 2.3.08 | Ensure canonical URL matches trailing slash convention | Consistent |
| 2.3.09 | Validate canonical points to 200 URL | HTTP 200 |
| 2.3.10 | Detect canonical pointing to redirected URL | Avoid chain |
| 2.3.11 | Detect canonical loops (A→B→A) | None |
| 2.3.12 | Detect cross-domain canonical tags | Not used unless intentional |
| 2.3.13 | Validate canonical URLs do not include tracking parameters | Clean |
| 2.3.14 | Validate canonical URL does not include session parameters | Clean |
| 2.3.15 | Validate canonical URL does not include # fragments | Clean |
| 2.3.16 | Identify missing canonicals | Present on all indexable pages |
| 2.3.17 | Identify canonicals on noindex pages | Canonical not needed on noindex pages |
| 2.3.18 | Validate canonical consistency across mobile and desktop | Identical |
| 2.3.19 | Validate canonical consistency across UA types | Identical |
| 2.3.20 | Detect JS rewriting canonical tag after load | No JS overrides |
| 2.3.21 | Detect alternates (<link rel="alternate">) conflicting with canonical | No conflict |
| 2.3.22 | Validate one canonical per page | Exactly one |
| 2.3.23 | Validate self-referencing canonical is correct for homepage | Self-ref canonical |
| 2.3.24 | Validate self-referencing canonical for main service pages | Self-ref |
| 2.3.25 | Validate self-referencing canonical for blog posts | Self-ref |
| 2.3.26 | Detect canonical to non-existent page | None |
| 2.3.27 | Identify canonical collisions (different pages share same canonical) | Avoid collisions |
| 2.3.28 | Identify canonicalization of pagination pages | Valid rel=next/prev or correct canonical to page 1 |
| 2.3.29 | Identify canonical chains longer than 1 hop | None |
| 2.3.30 | Validate canonical logic for faceted/filter URLs | Correct canonical |
| 2.3.31 | Validate canonical logic for tag/category pages | Appropriate |
| 2.3.32 | Identify canonical pointing to HTTP instead of HTTPS | Correct |
| 2.3.33 | Identify canonical pointing to staging environments | None |
| 2.3.34 | Identify canonical pointing to alternate language pages | None unless hreflang-structured |
| 2.3.35 | Validate that canonical matches OpenGraph URL | Same canonical |
| 2.3.36 | Validate canonical matches Twitter Card URL | Same canonical |
| 2.3.37 | Validate canonical matches rel=alternate in hreflang set | Consistent |
| 2.3.38 | Ensure canonical does not include uppercase letters | Lowercase |
| 2.3.39 | Ensure canonical path is normalized | Clean path |
| 2.3.40 | Detect canonical pointing to redirect-to-404 or soft-404 | None |
| 2.3.41 | Identify canonical pointing to a URL that is blocked by robots.txt | None |
| 2.3.42 | Identify canonical pointing to a URL marked noindex | None |
| 2.3.43 | Inspect canonical usage for local SEO pages (service + city) | Correct |
| 2.3.44 | Inspect canonical usage for duplicate template pages | Canonicalized |
| 2.3.45 | Inspect canonical usage for homepage variants | Consistent |
| 2.3.46 | Validate canonical tag appears before end of <head> | Proper placement |
| 2.3.47 | Validate no canonical tag appears inside <body> | None |
| 2.3.48 | Identify canonical declared in metadata frameworks (Next.js, React Helmet) | Consistent |
| 2.3.49 | Validate canonical consistency across all sitemap URLs | Full match |
| 2.3.50 | Compute total canonical-integrity composite score | >= 90% |
← 2.2 Sitemap Integrity Suite2.4 Pagination & Index-Control Suite →
A Deep Audit scores every check here that applies to your page, then an AI pass of up to 150 checks. Included on Pro and Ultra, or $9 for one audit.
See plansMachine-readable: catalog totals and the full catalog as JSON (IDs, section, weight, status).