- Rules
- 113
- Scored rules
- 70
- Registered sources
- 98
- Ruleset
- 2.0.0
A rule carries one evidence class, taken from the strength of its strongest supporting source for that exact condition. Class sets weight and severity: C1 weighs 8 (25 rules), C2 weighs 4 (35 rules), C3 weighs 2 (10 rules), C4 weighs 0 (43 rules). Rules whose ID ends in -HC are house conventions, stricter than any source and off by default. Rules marked “scanner” are checks the book describes in prose but did not number, or splits needed for scoring. The classes themselves are explained on the evidence page.
HTTP and hosting 9
- SEO-HTTP-01C1 Mechanism· w8
- SEO-HTTP-02C1 Mechanism· w8
- SEO-HTTP-03C2 Recommended· w4Missing URLs return 404 or 410
Scope: preferred origin · Google
- SEO-HTTP-07C2 Recommended· w4HTTPS without certificate errors or downgrades
Scope: site · Google
- SEO-HTTP-09C1 Mechanism· w8HTML stays within Googlebot's 2 MB fetch limit
Scope: page (P) · Google
- SEO-HTTP-09BC4 Informational· w0
- SEO-HTTP-09-HCC4 Informational· w0
- SEO-HTTP-05C4 Informational· w0
- SEO-HTTP-06C4 Informational· w0
Hosts and URLs 7
- SEO-URL-01C2 Recommended· w4Host and protocol variants redirect to the preferred origin
Scope: site · Google and Bing
- SEO-URL-02C3 Standard· w2URLs contain only characters allowed in a URI
Scope: page (P) · RFC 3986
- SEO-URL-03C2 Recommended· w4Words in URL paths are separated by hyphens
Scope: each member of I · Google
- SEO-URL-03-HCC4 Informational· w0
- SEO-URL-04C2 Recommended· w4Content is not routed through URL fragments
Scope: site · Google
- SEO-URL-05C2 Recommended· w4One URL per resource regardless of letter case
Scope: site · Google
- SEO-URL-06C4 Informational· w0
robots.txt 11
- SEO-ROBOTS-02C1 Mechanism· w8robots.txt is UTF-8 text
Scope: each in-scope origin with a 2xx robots.txt · Google
- SEO-ROBOTS-03C1 Mechanism· w8robots.txt is smaller than 500 KiB
Scope: each in-scope origin with a 2xx robots.txt · Google
- SEO-ROBOTS-03-HCC4 Informational· w0robots.txt larger than 100 KiB (house convention)
Scope: each in-scope origin with a 2xx robots.txt
house conventioninformational - SEO-ROBOTS-04C1 Mechanism· w8robots.txt is reachable
Scope: each in-scope origin · Google
- SEO-ROBOTS-05AC1 Mechanism· w8
- SEO-ROBOTS-05BC2 Recommended· w4Resources needed for rendering are crawlable
Scope: page (P) · Google
- SEO-ROBOTS-08C1 Mechanism· w8Sitemap lines are fully qualified URLs
Scope: each in-scope origin with Sitemap lines · Google
- SEO-ROBOTS-09C2 Recommended· w4
- SEO-ROBOTS-01C4 Informational· w0
- SEO-ROBOTS-07C4 Informational· w0
- SEO-ROBOTS-10C4 Informational· w0
Indexing controls 7
- SEO-IDX-06C1 Mechanism· w8
- SEO-IDX-02C1 Mechanism· w8noindex is not hidden behind a robots.txt disallow
Scope: fetched URLs with an effective Google noindex · Google
- SEO-IDX-03C1 Mechanism· w8noindex is not placed in robots.txt
Scope: each in-scope origin · Google
- SEO-IDX-04C1 Mechanism· w8Server HTML does not carry a noindex that JavaScript removes
Scope: fetched pages · Google
requires rendered - SEO-IDX-01C4 Informational· w0
- SEO-IDX-05C4 Informational· w0
- SEO-IDX-07C4 Informational· w0JavaScript changes robots directives
Scope: fetched pages · Google
scannerinformationalrequires rendered
Document head and metadata 17
- SEO-HEAD-01C2 Recommended· w4Each page has exactly one non-empty title
Scope: page (P) · Google
- SEO-HEAD-01BC3 Standard· w2
- SEO-HEAD-02C3 Standard· w2One UTF-8 character encoding declaration
Scope: page (P) · the HTML Standard
- SEO-HEAD-04C3 Standard· w2The html element declares the page language
Scope: page (P) · the HTML Standard
- SEO-HEAD-05C2 Recommended· w4The head is not closed early
Scope: page (P) · Google
- SEO-HEAD-06C4 Informational· w0
- SEO-META-01C2 Recommended· w4Titles are distinct and descriptive
Scope: page (P) · Google
- SEO-META-01-HCC4 Informational· w0
- SEO-META-02AC3 Standard· w2At most one meta description per page
Scope: page (P) · the HTML Standard
- SEO-META-02BC2 Recommended· w4Meta descriptions are page-specific
Scope: page (P) · Google
- SEO-META-02CC2 Recommended· w4Pages carry a meta description
Scope: page (P) · Google
- SEO-META-05AC1 Mechanism· w8Favicon eligible for Google Search
Scope: home page of each in-scope hostname · Google
gate: feature:favicon - SEO-META-05BC2 Recommended· w4Favicon larger than 48×48
Scope: home page of each in-scope hostname · Google
- SEO-META-06C2 Recommended· w4No meta refresh redirects
Scope: page (P) · Google
- SEO-HEAD-03C4 Informational· w0
- SEO-META-03C4 Informational· w0
- SEO-META-04C4 Informational· w0
Canonicalization 8
- SEO-CANON-01C1 Mechanism· w8The canonical link is inside the head
Scope: pages in P with at least one link[rel~=canonical] · Google
- SEO-CANON-02C2 Recommended· w4Canonical URLs are absolute
Scope: pages in P with a head canonical · Google
- SEO-CANON-08C2 Recommended· w4
- SEO-CANON-04C3 Standard· w2The canonical target is a usable target
Scope: pages in P whose head canonical differs from their own URL · RFC 6596
- SEO-CANON-05C2 Recommended· w4Internal links and hreflang point to canonical URLs
Scope: page (P) · Google
- SEO-CANON-07C2 Recommended· w4noindex and robots.txt are not used to choose canonicals
Scope: fetched pages with a head canonical that differs from their own URL · Google
- SEO-CANON-03C4 Informational· w0
- SEO-CANON-06C4 Informational· w0
Sitemaps 13
- SEO-SITEMAP-07C1 Mechanism· w8
- SEO-SITEMAP-01C1 Mechanism· w8Sitemap files stay within protocol limits
Scope: each sitemap file · Google and Bing
- SEO-SITEMAP-02C1 Mechanism· w8Sitemap URLs are within the sitemap's scope
Scope: each sitemap file · Google and Bing
- SEO-SITEMAP-02BC2 Recommended· w4
- SEO-SITEMAP-02CC3 Standard· w2
- SEO-SITEMAP-03C2 Recommended· w4Sitemaps list canonical, non-redirecting URLs
Scope: each valid, fetched loc · Google
- SEO-SITEMAP-04AC3 Standard· w2lastmod uses W3C Datetime
Scope: each sitemap file with lastmod values · the Sitemaps protocol
- SEO-SITEMAP-04BC2 Recommended· w4lastmod is not in the future
Scope: each sitemap file with lastmod values · Google and Bing
- SEO-SITEMAP-04CC2 Recommended· w4
- SEO-SITEMAP-04-HCC4 Informational· w0
- SEO-SITEMAP-06C4 Informational· w0
- SEO-SITEMAP-05C4 Informational· w0
- SEO-SITEMAP-08C2 Recommended· w4
Links and headings 6
- SEO-LINK-02C2 Recommended· w4Every intended page is linked from another page
Scope: members of I other than home pages · Google
requires complete-crawl - SEO-LINK-03C2 Recommended· w4Anchor text is descriptive
Scope: page (P) · Google
- SEO-HDG-02C3 Standard· w2Heading levels do not skip
Scope: page (P) · the HTML Standard
- SEO-HDG-01C4 Informational· w0
- SEO-LINK-01C4 Informational· w0
- SEO-LINK-06C4 Informational· w0
Images 6
- SEO-IMG-01C2 Recommended· w4Images have a src fallback
Scope: page (P) · Google
- SEO-IMG-02C2 Recommended· w4Images carry an alt attribute
Scope: page (P) · Google
- SEO-IMG-04C3 Standard· w2Lazy-loaded images declare dimensions
Scope: page (P) · the HTML Standard
- SEO-IMG-04-HCC4 Informational· w0
- SEO-IMG-03C4 Informational· w0Image formats Google Images supports
Scope: page (P), first max_images_per_page images · Google
informational - SEO-IMG-03-HCC4 Informational· w0
Structured data 8
- SEO-SD-01C1 Mechanism· w8JSON-LD blocks are valid JSON
Scope: pages in P with JSON-LD · Google
- SEO-SD-02C1 Mechanism· w8Items include the properties Google requires for their feature
Scope: each (page, feature) pair for registry features that have required properties · Google
gate: feature:breadcrumb - SEO-SD-04C2 Recommended· w4The home page states a site name preference
Scope: home page of each in-scope origin · Google
- SEO-SD-05C1 Mechanism· w8The Organization logo meets Google's requirements
Scope: each Organization item with a logo · Google
gate: feature:org_logo - SEO-SD-03C4 Informational· w0
- SEO-SD-06-HCC4 Informational· w0
- SEO-SD-07C4 Informational· w0
- SEO-SD-08C4 Informational· w0
Localization 8
- SEO-I18N-07C1 Mechanism· w8
- SEO-I18N-02C1 Mechanism· w8hreflang includes the page itself and is reciprocated
Scope: pages in P with annotations · Google
- SEO-I18N-03C1 Mechanism· w8hreflang URLs are fully qualified
Scope: pages in P with annotations · Google
- SEO-I18N-04C1 Mechanism· w8hreflang values are supported codes
Scope: pages in P with annotations · Google
- SEO-I18N-06C2 Recommended· w4Localized pages canonicalize within their language
Scope: pages in P with annotations and a head canonical · Google
- SEO-I18N-08C2 Recommended· w4
- SEO-I18N-09C4 Informational· w0
- SEO-I18N-05C4 Informational· w0
Redirects 4
- SEO-REDIR-07C1 Mechanism· w8
- SEO-REDIR-03C2 Recommended· w4Redirects go straight to the final destination
Scope: redirect units · Google
- SEO-REDIR-01C4 Informational· w0
- SEO-REDIR-06C4 Informational· w0
Performance and mobile 2
- SEO-PERF-01C2 Recommended· w4Core Web Vitals meet the "good" thresholds in field data
Scope: (origin or member of P, form factor) pairs with data, for the form factors PHONE and DESKTOP only · Google
requires crux - SEO-PERF-03C2 Recommended· w4Mobile and desktop versions are equivalent
Scope: the home page and one sample intended page · Google
requires parity
JavaScript 2
- SEO-JS-01C2 Recommended· w4
- SEO-JS-04C4 Informational· w0Content and links that exist only after rendering
Scope: page (P)
scannerinformationalrequires rendered
AI crawlers and generative search 4
Search tooling 1
- SEO-TOOLS-01C4 Informational· w0