Every check the audit runs, in plain English, and every check it doesn't.
The audit walks 184 checks in eight phases. 135 of
them we measure ourselves from your live site; the rest need your Search Console data, a backlink
export, or a judgement no crawler gets to make. They are all listed below either way, because a
check nobody ran is not a check you passed, and a scoring system that quietly drops them is one
that flatters every site it touches.
None of it is our own invention. Every group below says where it comes from and links the
page it is grounded in. That is Google's own documentation in almost every case, and where a check
isn't Google's (Open Graph, for one) we say so rather than lending it authority it doesn't have.
Our score never does that. A check we couldn't measure comes out of both sides of the fraction,
so it can neither help you nor hurt you, and the report says how many of those there were.
Every audit
Measured on every audit, including the free single-page scan.
Partial
We measure part of this. The report says which part, and never implies more.
Site crawl
Needs more than one page, so it runs on a paid crawl.
Not automated
No collector can measure it: it needs your Search Console or backlink data, or a human call. The report asks for what would unlock it.
The free scan returns 27 of these: the ones whose verdict is
arithmetic, where a threshold decides it and no reading of the page is required. Everything that
needs the page read rather than measured is in the paid report.
1. Crawlability & Indexability
67 checks ·
52 on every audit ·
7 on a site crawl ·
8 needing your data
Before anything else can matter, Google has to be able to reach the page, read it, and decide it is the version worth keeping. Most of the damage we find in real audits lives here. A stray directive, a redirect chain, a canonical pointing at the wrong URL: none of it is visible from the front end.
robots.txt
A single line in this file can hide a whole section of a site, and nothing on the page will look wrong. We fetch it, parse the groups that apply to Google, and test them against the URL you gave us instead of assuming.
Not automatedUnderstood as crawl control, not index control
Every auditSitemap: directive present
PartialWildcard / $ rules behave as intended
Every auditAI-crawler directives intentional
Every auditNo stray crawl-delay / unsupported directives
XML Sitemaps
A sitemap is how you tell Google which URLs you consider worth having. It helps most when it is honest, listing canonical, indexable URLs with real modification dates, and hurts when it lists redirects, 404s and a lastmod of "today" on every row.
Site crawlLists canonical, indexable URLs only (sitemap ↔ crawl reconciliation)
PartialURLs absolute, single host, correctly encoded (100-URL sample)
Every auditWithin limits
Partial<lastmod> accurate
Every auditImage/Video/News sitemaps where relevant
Every auditxhtml:link hreflang alternates declared in the sitemap
Every auditAlso checked RSS/Atom autodiscovery and web app manifest: other discovery surfaces the same <head> advertises
Indexability
Whether the page is allowed into the index at all. A noindex left over from a staging deploy, or a "missing" page that answers 200 instead of 404, costs more traffic than any amount of keyword work will win back.
Partialnoindex used, not robots.txt, to exclude pages
Every auditCorrect status codes
Every auditMeta robots / X-Robots-Tag don't conflict
Every auditCustom 404 returns a real 404/410
Every auditInternal search results pages noindex
Every auditStaging / dev / preview not indexable
PartialSnippet/preview controls intentional
Every auditOnly supported meta tags used
Canonicalization & duplicates
The same page is usually reachable at several URLs: with and without www, with a trailing slash, with tracking parameters. Google picks one to index. These checks are about making sure it picks the one you meant.
Not automatedGoogle-selected canonical matches declared (needs GSC)
PartialAll signals agree
Every auditSingle hostname + protocol (4-way http/https × www probe)
Site crawlParameter / sort / filter URLs don't duplicate
Every auditTrailing-slash, case, index-file variants consolidated
Every auditCanonical target indexable, final-status, relevant
Redirects & migrations
Redirects pass ranking on, but only if they are permanent, short and pointed at a real equivalent. Chains, loops and long-lived temporary redirects are the usual reason traffic never comes back after a site move.
Every auditPermanent moves use 301/308 (every hop recorded)
Every auditNo chains or loops
Not automatedRedirects point to relevant equivalents
Every auditHTTPS migration fully canonicalized
Every auditNo meta-refresh or JS redirect
Every auditLong-lived 302s converted to 301 (status per hop)
Site crawlInternal links point to final URLs
Not automatedMigration has a tested 1:1 redirect map
Rendering & JavaScript SEO
Google renders JavaScript, but what it ends up with is not always what you see. We fetch the raw HTML and the rendered page separately and compare them, so "the content is there" is a measurement rather than a hope.
Every auditPrimary content + links in rendered HTML
Every auditInternal links are real <a href>
Every auditTitle / canonical / schema stable after render
Not automatedUnique crawlable URLs (History API, not hash routing)
PartialLazy-load / infinite scroll fallback
PartialRendering strategy sound
Site architecture & internal linking
How pages are linked decides which of them Google treats as important. A page the navigation carries but no article ever cites is a page you have told Google not to care about.
Only large sites need to think about this: if Google spends its visits on filter combinations and session URLs, the pages you actually sell from get crawled less often. Most of it can only be answered from your own logs and Search Console.
Not automatedFaceted/parameter URLs mostly not crawled
HTTP responses & headers
The part of the site no visitor sees. Wrong content types, missing compression, a stale cache policy or an open directory listing all cost something, and all are usually a one-line fix in the server config.
Every auditSensible Cache-Control on static assets
Every auditNo 5xx under normal load
Every auditAlso checked open directory index: not in the playbook, but a real leak
Every auditAlso checked /ads.txt presence and record count: adtech hygiene, not an SEO check
Every auditAlso checked subresources aimed at private or internal addresses: the browser refuses them, and the attempt is recorded
2. On-Page & Metadata
20 checks ·
19 on every audit ·
0 on a site crawl ·
1 needing your data
What the page tells a search engine about itself, and what the result looks like in the search listing. Cheap to fix, easy to get quietly wrong, and directly visible to anyone deciding whether to click.
Titles & descriptions
The title and description are the advert for the page. Google rewrites them when they are missing, duplicated, or describe something the page does not actually contain, which is why we also measure whether the title's words appear in the body at all.
Every auditFavicon valid & findable (fetched: status, type)
Every auditVisible dates honest & consistent
Social & sharing metadata
Open Graph and Twitter cards decide what a shared link looks like in a message or a feed. Worth saying plainly: this is not a Google specification and not a ranking factor. It is in the audit because a link that renders as a bare grey box gets clicked less.
Every auditog:title, og:description, og:image, og:url
Every auditog:image correct size & absolute URL (fetched: status, bytes)
Every audittwitter:card set
PartialSocial meta consistent with visible content
URLs & images
Readable URLs and described images. Alt text is an accessibility requirement first and an SEO one second, and image weight is usually the single biggest thing standing between a page and a good LCP score.
23 checks ·
10 on every audit ·
0 on a site crawl ·
13 needing your data
Whether the page is actually worth ranking. Very little of this is measurable, and we say so rather than dressing up a word count as a quality score. What we can do is put the rendered text, the structure and the topic coverage in front of a model and have it read the page the way an editor would.
Every auditContent crawlable, indexable, renderable (the render diff proves it)
Not automatedAnswers the main query clearly, early
Not automatedOriginal facts/comparisons/examples/evidence
PartialClear entity/author/business info
Not automatedFAQ content genuinely useful, not schema spam
Every auditAlso checked /llms.txt: presence, size, link count, and whether it is really markdown rather than an HTML error page served as 200
PartialAlso checked site age: first web.archive.org capture and years since
Every auditAlso checked independent crawler reach: whether the latest Common Crawl index has the site's URLs
4. Structured Data & Rich Results
11 checks ·
9 on every audit ·
0 on a site crawl ·
2 needing your data
Structured data is what turns a plain blue link into a rich result. We check that it parses, that it carries the properties its type requires, that it survives JavaScript rendering, and that it agrees with the dates and entities on the page.
Not automatedValidates in Rich Results Test + GSC enhancements
Not automatedMatches visible page content
Every auditRequired properties present per type
PartialMost specific applicable type used (types listed)
Every auditOne canonical set per page; no conflicting duplicates
Every auditJS-generated schema in the rendered DOM
Every auditOrganization schema on homepage
Every auditArticle dates match visible dates
Every auditEntities connected via @id
PartialNo effort spent on retired rich results
5. Page Experience, Core Web Vitals & Mobile
15 checks ·
15 on every audit ·
0 on a site crawl ·
0 needing your data
Core Web Vitals as Google measures them: field data from real Chrome users first, lab diagnostics only to explain it. Where the field data exists we also pull six months of trend and the four parts LCP breaks into, which is the only evidence that says why a page is slow rather than that it is.
Every auditpreconnect/dns-prefetch for critical third-party origins
Every auditThird-party scripts audited
Every auditbfcache not broken
Every auditRender-blocking resources minimized
Every auditMinify + compress + cache + CDN
Every auditMobile-first ready
Every auditNo intrusive interstitials
Every auditHTTPS everywhere, no mixed content (up to 20 offending URLs)
PartialSecurity headers where appropriate (HSTS only)
6. Off-Page / Backlinks
7 checks ·
0 on every audit ·
0 on a site crawl ·
7 needing your data
Backlinks. We do not buy a link-index API, so we measure none of this and never pretend otherwise. The report tells you exactly which export to drop in and what it would answer.
Not automatedReferring domains: quantity, quality, trend
Not automatedLink relevance
Not automatedAnchor-text distribution natural
Not automatedToxic / spammy links identified
Not automatedLost & broken backlinks reclaimed
Not automatedCompetitor backlink gap
Not automatedUnlinked brand mentions
7. Specialty
30 checks ·
22 on every audit ·
1 on a site crawl ·
7 needing your data
The checks that only apply to some sites: a local business, a multi-language site, a storefront. Irrelevant sections are skipped rather than padded with passes.
Local SEO
Most local ranking is decided outside your website, in your Business Profile and in how consistently your name, address and phone number appear elsewhere. We can read the schema on the page; the rest needs your account.
Every auditlocal-005 Phone in the schema when the page shows one
Every auditlocal-006 Schema phone matches the clickable tel: link
Every auditlocal-007 Click-to-call
Every auditlocal-008 Phone in E.164 (carries a country code, so it works from any market)
Every auditlocal-009 Map link or embed
Every auditlocal-010 sameAs profiles on the business entity
Every auditlocal-011 Multiple locations are separately addressable
Every auditlocal-012 areaServed declared when the site has region alternates
Every auditlocal-013 Per-locale parity
Every auditlocal-014 NAP invariance across locales
Not automatedGoogle Business Profile complete & verified
Not automatedLocal citations accurate
Not automatedReviews: volume, recency, responses
Not automatedLocal keywords on-page
Not automatedUnique local landing pages
International / Multilingual
hreflang tells Google which language version to show which visitor. It only works when the references point both ways and at indexable URLs, which is exactly where most implementations break.
Every audithreflang references canonical, indexable (200) URLs
Not automatedGenuine localization
E-commerce
Product markup, clean category URLs, and filters that do not generate an endless supply of near-identical pages for Google to crawl instead of your products.
PartialFaceted nav / filters don't create crawl traps
Site crawlClean, stable category/product URLs
PartialPagination / "load more" is crawlable
Not automatedOut-of-stock handled well
Every auditBreadcrumbs + category → product structure
8. Analytics, Search Console & Monitoring
11 checks ·
0 on every audit ·
0 on a site crawl ·
11 needing your data
Search Console, analytics and monitoring. All of it needs your account, so all of it is listed as needing data, with the specific export and the specific finding it would unlock.