GSCReadiness / a boringhaus tool

About

A Boringhaus tool · ruleset 2026.09.0+1eb49e80

GSC Readiness is a free auditor. You paste a URL, we run it against the things Google Search Central documentation tells you to do, and you get a graded report.

What it checks

The audit runs 55 Google-documented rules across 10 categories, plus 20 unscored advisories. Every rule below cites the exact Google page it encodes and the date that page was last read against the rule's logic (latest: 2026-09-07).

How scoring works

Each check returns pass / warn / fail, or info for observations that carry no judgement. Only rules that are Google-documented and active count: pass = 1, warn = 0.5, fail = 0, averaged into a 0–100 score. Letter grade is A (≥90), B (≥80), C (≥70), D (≥60), F otherwise.

How it stays current

Google changes its documentation most weeks. Every Monday a job re-fetches each Google page cited below, compares it with the copy it hashed the week before, and reads the Search Central changelog. Any rule whose source changed, moved or disappeared is marked under review here and on scan results, and a reviewer re-reads the page and proposes the rule change as a pull request. Nothing changes in the audit until a human merges it. The catalog and current flags are also available as JSON at /gscreadiness/api/rules.

Rule catalog

55 scored · 20 advisory · 5 deprecated · 3 retired

Indexing & crawl

RuleTierStatusSource · verified
Served over HTTPS
idx.https
2026.09.0: source moved from the retired /advanced/security/https page (now on web.dev) to the page-experience doc, which lists secure serving.
Google, scored active developers.google.com/appearance/page-experience
2026-09-07
Page returns HTTP 200
idx.http.status
2026.09.0: source moved to the Google Crawling site (2025-11). Google only indexes pages served with 200.
Google, scored active developers.google.com/crawling/docs/troubleshooting/http-status-codes
2026-09-07
Content-Type is an indexable HTML type
idx.http.content-type
2026.09.0: new rule: Google indexes only supported file types; HTML pages must be served as text/html or application/xhtml+xml.
Google, scored active developers.google.com/crawling-indexing/indexable-file-types
2026-09-07
Redirect chain length
idx.redirect.chain
2026.09.0: unchanged thresholds (0–1 pass, 2–3 warn, 4+ fail). Google recommends server-side 301/308 and follows a limited number of hops.
Google, scored active developers.google.com/crawling-indexing/301-redirects
2026-09-07
Redirect lands on a different host
idx.redirect.cross-host
2026.09.0: new informational rule: a cross-host redirect means the audited URL is not the canonical host; robots.txt and sitemap are read from the requested host.
Google, scored active developers.google.com/crawling-indexing/301-redirects
2026-09-07
robots.txt present
idx.robots.present
2026.09.0: absence downgraded from warn to info: Google treats a missing robots.txt as allow-all.
Google, scored active developers.google.com/crawling-indexing/robots/intro
2026-09-07
robots.txt allows Googlebot to crawl this URL
idx.robots.googlebot-allowed
2026.09.0: parser rewritten to honour * and $ wildcards, case-insensitive product tokens, longest match with least-restrictive tie-break, and groups not split by blank lines (RFC 9309 as Google interprets it).
Google, scored active developers.google.com/crawling/docs/robots-txt/robots-txt-spec
2026-09-07
Sitemap declared in robots.txt
idx.robots.sitemap-directive
2026.09.0: warn only when no sitemap was discovered by any route; info when found at a conventional path without a directive.
Google, scored active developers.google.com/crawling-indexing/sitemaps/build-sitemap
2026-09-07
Google-Extended (AI training) robots handling
idx.robots.google-extended
2026.09.0: new informational rule: reports whether Google-Extended is blocked. It controls Gemini/Vertex training use only and has no effect on Search or AI Overviews.
Google, scored active developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers
2026-09-07
XML sitemap discovered
idx.sitemap.discovered
2026.09.0: discovery now follows robots.txt Sitemap: directives, then /sitemap.xml, then /sitemap_index.xml. Absence downgraded from fail to warn (sitemaps are recommended, not required).
Google, scored active developers.google.com/crawling-indexing/sitemaps/build-sitemap
2026-09-07
Sitemap provides <lastmod>
idx.sitemap.lastmod
2026.09.0: unchanged: Google uses lastmod when consistently accurate; priority and changefreq are ignored.
Google, scored active developers.google.com/crawling-indexing/sitemaps/build-sitemap
2026-09-07
Sitemap URLs are fully qualified
idx.sitemap.absolute-urls
2026.09.0: new rule: Google requires absolute URLs in <loc>.
Google, scored active developers.google.com/crawling-indexing/sitemaps/build-sitemap
2026-09-07
No noindex directive
idx.noindex
2026.09.0: now reads <meta name="robots">, <meta name="googlebot"> anywhere in the document (Google honours body placement, changelog 2026-03-24), and the X-Robots-Tag header; noindex and none both count.
Google, scored active developers.google.com/crawling-indexing/block-indexing
2026-09-07
Canonical declared
idx.canonical.present
2026.09.0: also accepts the HTTP Link: rel="canonical" header. Absence downgraded to warn: Google picks a canonical itself when none is declared.
Google, scored active developers.google.com/crawling-indexing/canonicalization
2026-09-07
Canonical is an absolute URL
idx.canonical.absolute
2026.09.0: new rule: Google recommends absolute canonical URLs.
Google, scored active developers.google.com/crawling-indexing/canonicalization
2026-09-07
Canonical points to this URL
idx.canonical.self
2026.09.0: split from the old combined canonical check; a canonical pointing elsewhere is a warn with the target shown.
Google, scored active developers.google.com/crawling-indexing/canonicalization
2026-09-07
Links are crawlable <a href>
idx.links.crawlable
2026.09.0: new rule: Google only follows <a> elements with an href that resolves to a URL, not javascript: or click handlers.
Google, scored active developers.google.com/crawling-indexing/links-crawlable
2026-09-07
lang attribute on <html>
idx.html-lang
2026.09.0: retired: Google states it does not use the lang attribute and detects language from content. Was a hard fail.
Google, scored retired developers.google.com/crawling-indexing/special-tags
2026-09-07

Page metadata

RuleTierStatusSource · verified
<title> present
meta.title
2026.09.0: merged the old "Title tag" / "Title tag present" rows into one.
Google, scored active developers.google.com/appearance/title-link
2026-09-07
<title> length
meta.title.length
2026.09.0: warn-only heuristic (15–65 chars). Google publishes no character limit; it rewrites titles that are too long, generic or stuffed.
Google, scored active developers.google.com/appearance/title-link
2026-09-07
Meta description present
meta.description
2026.09.0: merged the old "Meta description" / "Meta description present" rows into one.
Google, scored active developers.google.com/appearance/snippet
2026-09-07
Meta description length
meta.description.length
2026.09.0: warn-only heuristic (50–165 chars). Google states there is no fixed length; snippets are generated from page content when the description is unhelpful.
Google, scored active developers.google.com/appearance/snippet
2026-09-07
Primary heading (<h1>)
meta.h1
2026.09.0: missing h1 downgraded from fail to warn: the SEO starter guide recommends meaningful headings but Google has no h1 requirement.
Google, scored active developers.google.com/fundamentals/seo-starter-guide
2026-09-07
Section headings (<h2>)
meta.h2-count
2026.09.0: moved to advisory: heading structure helps readers; Google documents no h2 requirement.
Beyond Google active developers.google.com/fundamentals/seo-starter-guide
2026-09-07
Favicon declared
meta.favicon.link
2026.09.0: rel list now includes apple-touch-icon-precomposed; a /favicon.ico fallback counts as declared.
Google, scored active developers.google.com/appearance/favicon-in-search
2026-09-07
Favicon fetchable by Googlebot-Image
meta.favicon.fetchable
2026.09.0: new rule: the icon must return 200 with an image type and must not be blocked for Googlebot-Image or Googlebot.
Google, scored active developers.google.com/appearance/favicon-in-search
2026-09-07
Favicon is square and at least 48×48
meta.favicon.size
2026.09.0: new rule: 1:1 aspect ratio required; larger than 48×48 recommended; SVG accepted (formats listed 2026-08-28).
Google, scored active developers.google.com/appearance/favicon-in-search
2026-09-07
Snippet / AI-feature controls
meta.snippet.controls
2026.09.0: new informational rule: nosnippet, max-snippet:0 and data-nosnippet also remove the page from AI Overviews and AI Mode.
Google, scored active developers.google.com/crawling-indexing/robots-meta-tag
2026-09-07
Character encoding declared
meta.charset
2026.09.0: new rule: Google reads charset from <meta charset>, http-equiv Content-Type, or the Content-Type header.
Google, scored active developers.google.com/crawling-indexing/special-tags
2026-09-07

Images

RuleTierStatusSource · verified
Preferred image declared (og:image / primaryImageOfPage)
img.preferred
2026.09.0: new rule from the 2026-03-02 "preferred image" section: Google reads og:image or schema.org primaryImageOfPage to pick the representative image.
Google, scored active developers.google.com/appearance/google-images
2026-09-07
Images have alt text
img.alt-coverage
2026.09.0: new rule: alt text is "the most important attribute" for image metadata; ≥90% coverage passes.
Google, scored active developers.google.com/appearance/google-images
2026-09-07
Hero images not lazy-loaded
img.lazy-above-fold
2026.09.0: new low-confidence rule: primary content should not require interaction or lazy-loading to render.
Google, scored active developers.google.com/crawling-indexing/javascript/lazy-loading
2026-09-07
Images use <img>, not CSS backgrounds
img.uses-img-element
2026.09.0: new informational rule: Google discovers images through <img>/<picture>, not CSS background-image.
Google, scored active developers.google.com/appearance/google-images
2026-09-07

Structured data

RuleTierStatusSource · verified
JSON-LD structured data present
sd.jsonld.present
2026.09.0: absence downgraded from fail to warn: structured data is recommended for rich results, not required for indexing.
Google, scored active developers.google.com/appearance/structured-data/intro-structured-data
2026-09-07
JSON-LD parses as valid JSON
sd.jsonld.valid
2026.09.0: source changed: the troubleshooting-structured-data page no longer exists.
Google, scored active developers.google.com/appearance/structured-data/intro-structured-data
2026-09-07
Organization or WebSite entity declared
sd.site-entity
2026.09.0: absence downgraded to warn; source moved from the retired logo page to the Organization page.
Google, scored active developers.google.com/appearance/structured-data/organization
2026-09-07
Organization has name, url, logo
sd.organization.props
2026.09.0: new rule: logo must be ≥112×112 and crawlable; sameAs recommended.
Google, scored active developers.google.com/appearance/structured-data/organization
2026-09-07
WebSite has name and url
sd.website.props
2026.09.0: new rule: WebSite name/url drive the site name shown in results.
Google, scored active developers.google.com/appearance/site-names
2026-09-07
Article has headline, image, datePublished, author
sd.article.props
2026.09.0: new rule covering Article, BlogPosting, NewsArticle, TechArticle.
Google, scored active developers.google.com/appearance/structured-data/article
2026-09-07
Product has name and offers/review/rating
sd.product.props
2026.09.0: new rule: product snippets need at least one of offers, review, aggregateRating.
Google, scored active developers.google.com/appearance/structured-data/product
2026-09-07
BreadcrumbList
sd.breadcrumb
2026.09.0: absence downgraded to info; when present, itemListElement entries are validated (name on all, item on all but last). Breadcrumb display is desktop-only since 2025-01.
Google, scored active developers.google.com/appearance/structured-data/breadcrumb
2026-09-07
ProfilePage has mainEntity with name
sd.profilepage.props
2026.09.0: new rule.
Google, scored active developers.google.com/appearance/structured-data/profile-page
2026-09-07
VideoObject has name, thumbnailUrl, uploadDate
sd.videoobject.props
2026.09.0: new rule.
Google, scored active developers.google.com/appearance/structured-data/video
2026-09-07
Structured data matches visible content
sd.type-page-consistency
2026.09.0: new low-confidence rule: Article markup on a page with almost no visible text violates the "content must be visible" policy.
Google, scored active developers.google.com/appearance/structured-data/sd-policies
2026-09-07
Sitelinks search box (SearchAction)
sd.searchaction
2026.09.0: deprecated: Google retired the sitelinks search box on 2024-11-21. Previously every site without SearchAction got a warn.
Google, scored deprecated developers.google.com/search/updates
2026-09-07
FAQPage structured data
sd.faqpage
2026.09.0: deprecated: FAQ rich results stopped appearing on 2026-05-07; Search Console and Rich Results Test support ended 2026-06.
Google, scored deprecated developers.google.com/search/updates
2026-09-07
HowTo structured data
sd.howto
2026.09.0: deprecated: How-to rich results were removed in 2023.
Google, scored deprecated developers.google.com/search/updates
2026-09-07
Other retired structured data types
sd.retired-types
2026.09.0: reports ClaimReview, SpecialAnnouncement, Vehicle listing, practice-problem (Quiz) markup as informational; support was removed 2025–2026.
Google, scored deprecated developers.google.com/search/updates
2026-09-07
Content-specific schema in use
sd.content-type.any
2026.09.0: retired: replaced by per-type validators (Article, Product, Breadcrumb, ProfilePage, VideoObject).
Google, scored retired developers.google.com/appearance/structured-data/search-gallery
2026-09-07

International

RuleTierStatusSource · verified
hreflang annotations
intl.hreflang.present
2026.09.0: absence is now info (not a 50% category): hreflang is only needed for localized variants.
Google, scored active developers.google.com/specialty/international/localized-versions
2026-09-07
hreflang x-default
intl.hreflang.x-default
2026.09.0: unchanged: x-default recommended for the unmatched-language fallback.
Google, scored active developers.google.com/specialty/international/localized-versions
2026-09-07
hreflang set includes this page
intl.hreflang.self
2026.09.0: unchanged: every language version must list itself and all other versions.
Google, scored active developers.google.com/specialty/international/localized-versions
2026-09-07
hreflang URLs are fully qualified
intl.hreflang.absolute
2026.09.0: new rule: Google requires fully-qualified URLs including transport method.
Google, scored active developers.google.com/specialty/international/localized-versions
2026-09-07

Mobile

RuleTierStatusSource · verified
Viewport meta configured
mobile.viewport
2026.09.0: now the single viewport check (was duplicated in metadata). Mobile-first indexing is complete for all sites; a page that does not render on mobile is not indexed.
Google, scored active developers.google.com/crawling-indexing/mobile/mobile-sites-mobile-first-indexing
2026-09-07
AMP variant
mobile.amp
2026.09.0: deprecated: AMP has not been required for any Search feature since 2021; the old check penalised every non-AMP site. Now info only when an amphtml link is present.
Google, scored deprecated developers.google.com/crawling-indexing/amp
2026-09-07
apple-touch-icon
mobile.apple-touch-icon
2026.09.0: moved to advisory: iOS home-screen UX, not a Google signal.
Beyond Google active developer.mozilla.org/HTML/Reference/Attributes/rel
2026-09-07
theme-color meta
mobile.theme-color
2026.09.0: moved to advisory: browser chrome colour, not a Google signal.
Beyond Google active developer.mozilla.org/HTML/Reference/Elements/meta/name/theme-color
2026-09-07
Web app manifest
mobile.manifest
2026.09.0: moved to advisory: PWA installability, not a Google signal (Lighthouse dropped its PWA category in v12).
Beyond Google active developer.mozilla.org/Progressive_web_apps/Manifest
2026-09-07

HTTPS & headers

RuleTierStatusSource · verified
No mixed content
sec.mixed-content
2026.09.0: unchanged logic; source now the page-experience doc (secure serving).
Google, scored active developers.google.com/appearance/page-experience
2026-09-07
HSTS (Strict-Transport-Security)
sec.hsts
2026.09.0: moved to advisory: not documented by Google as a Search signal (was a hard fail).
Beyond Google active developer.mozilla.org/HTTP/Reference/Headers/Strict-Transport-Security
2026-09-07
X-Content-Type-Options: nosniff
sec.nosniff
2026.09.0: moved to advisory: not a Google signal (was a hard fail).
Beyond Google active developer.mozilla.org/HTTP/Reference/Headers/X-Content-Type-Options
2026-09-07
Clickjacking protection (X-Frame-Options / frame-ancestors)
sec.clickjacking
2026.09.0: moved to advisory: not a Google signal (was a hard fail).
Beyond Google active developer.mozilla.org/HTTP/Reference/Headers/Content-Security-Policy/frame-ancestors
2026-09-07
Content-Security-Policy
sec.csp
2026.09.0: moved to advisory.
Beyond Google active developer.mozilla.org/HTTP/Reference/Headers/Content-Security-Policy
2026-09-07
Referrer-Policy
sec.referrer-policy
2026.09.0: moved to advisory.
Beyond Google active developer.mozilla.org/HTTP/Reference/Headers/Referrer-Policy
2026-09-07
Permissions-Policy
sec.permissions-policy
2026.09.0: moved to advisory.
Beyond Google active developer.mozilla.org/HTTP/Reference/Headers/Permissions-Policy
2026-09-07

Core Web Vitals

RuleTierStatusSource · verified
LCP (Largest Contentful Paint)
cwv.lcp
2026.09.0: unchanged: good ≤2.5s, poor >4s at p75 of CrUX field data.
Google, scored active developers.google.com/appearance/core-web-vitals
2026-09-07
INP (Interaction to Next Paint)
cwv.inp
2026.09.0: unchanged: good ≤200ms, poor >500ms. INP replaced FID in 2024.
Google, scored active developers.google.com/appearance/core-web-vitals
2026-09-07
CLS (Cumulative Layout Shift)
cwv.cls
2026.09.0: unchanged: good ≤0.1, poor >0.25.
Google, scored active developers.google.com/appearance/core-web-vitals
2026-09-07
CrUX field data availability
cwv.field-data
2026.09.0: new informational rule replacing three "no CrUX field data" warns: lack of real-user data is not a defect.
Google, scored active developers.google.com/appearance/core-web-vitals
2026-09-07
PageSpeed Insights API
cwv.psi-unavailable
2026.09.0: informational: surfaced only when PSI could not be queried.
Beyond Google active developers.google.com/speed/docs/insights/v5/get-started
2026-09-07
Time to first byte
perf.ttfb
2026.09.0: moved from indexing to a performance advisory: TTFB is a web.dev diagnostic, not a documented Google Search signal.
Beyond Google active web.dev/articles/ttfb
2026-09-07
Lighthouse Performance
perf.lighthouse.performance
2026.09.0: moved to advisory: lab score, not the field data Google ranks on.
Beyond Google active developer.chrome.com/docs/lighthouse/overview
2026-09-07
Lighthouse Accessibility
perf.lighthouse.accessibility
2026.09.0: moved to advisory.
Beyond Google active developer.chrome.com/docs/lighthouse/overview
2026-09-07
Lighthouse Best Practices
perf.lighthouse.best-practices
2026.09.0: moved to advisory.
Beyond Google active developer.chrome.com/docs/lighthouse/overview
2026-09-07
Lighthouse SEO
perf.lighthouse.seo
2026.09.0: retired: double-counted checks this auditor already performs.
Beyond Google retired developer.chrome.com/docs/lighthouse/overview
2026-09-07

Spam-policy hygiene

RuleTierStatusSource · verified
No meta-refresh redirect
spam.meta-refresh
2026.09.0: new rule: instant meta refresh to another URL is a sneaky-redirect pattern; Google recommends server-side redirects.
Google, scored active developers.google.com/essentials/spam-policies
2026-09-07
No hidden text or links
spam.hidden-text
2026.09.0: new low-confidence rule: large text/link blocks wrapped in display:none, opacity:0, font-size:0 or off-screen positioning.
Google, scored active developers.google.com/essentials/spam-policies
2026-09-07
No back-button hijacking
spam.pushstate-hijack
2026.09.0: new low-confidence rule: "back button hijacking" was added to the malicious-practices spam policy on 2026-04-13.
Google, scored active developers.google.com/essentials/spam-policies
2026-09-07

Open Graph & X cards

RuleTierStatusSource · verified
Open Graph core tags
social.og.core
2026.09.0: moved to advisory (Google has no social-cards doc; the old docs link 404s). Matching now accepts name= or property= in any order. og:image itself is scored under img.preferred.
Beyond Google active ogp.me/
2026-09-07
og:image:width / og:image:height
social.og.image-dimensions
2026.09.0: moved to advisory.
Beyond Google active ogp.me/
2026-09-07
og:image:alt
social.og.image-alt
2026.09.0: moved to advisory.
Beyond Google active ogp.me/
2026-09-07
X (Twitter) Card core tags
social.twitter.core
2026.09.0: moved to advisory; X moved its Cards documentation to docs.x.com (the old developer.x.com deep link redirects).
Beyond Google active docs.x.com/
2026-09-07
twitter:image:alt
social.twitter.image-alt
2026.09.0: moved to advisory.
Beyond Google active docs.x.com/
2026-09-07

What it doesn't check

We're an external auditor. We can't see:

For that you need the real Search Console at search.google.com/search-console. This tool is the "would your site pass if you submitted it today" predictive layer.

Independent and free

GSC Readiness is built by Boringhaus, an independent digital media company that runs a portfolio of useful, boring web tools. No login, no email capture, no upsell tier. The codebase fork from AEORadar's scanner added the GSC-specific checks; the audit logic and methodology page are open if you want to inspect what we score.

Contact

Questions, scan-result bug reports, partnerships: team@boringhaus.com.