A score you can rebuild by hand
This is a fixed, weighted checklist, and every row shows its points, so you can see exactly why a page scored 74 and which fix is worth the most. We fetch the page like a crawler (no JavaScript, following redirects) and read robots.txt for the Googlebot rules that apply to that URL. The grade is A at 90 and above, B at 80, C at 65, D at 50 and F below: our scale, not Google’s.
What carries the most weight
- Indexability (15). A 2xx status, no
noindexin the meta robots tag or X-Robots-Tag header, and robots.txt letting Googlebot in. If this fails, nothing else matters. - Title (10) and meta description (8). The two lines people read in search results. We check they exist and fit: roughly 60 characters for titles and 70 to 160 for descriptions.
- One H1 (8), canonical (7) and text in the HTML (7). A clear topic, one preferred URL, and content crawlers can read without running scripts.
- The rest (45). JSON-LD, image alt text, internal links, Open Graph tags, HTTPS and HSTS, a mobile viewport,
lang, redirects and server response time.
Which rows are Google’s rules, and which are ours
Indexability is a rule in practice: a page that returns an error or says noindex won’t be indexed. The length bands and counts are our conventions, meant to avoid cut-off titles and thin pages. Google says there’s no limit on how long a title element can be, but the title link is truncated as needed, typically to fit the device width, and the same goes for meta descriptions. One H1 is a convention too: Google’s SEO Starter Guide says it doesn’t matter to Search if headings are used out of order, and John Mueller said in 2019 that a page ranks fine with no H1 tags or five. The same guide says there’s no magical word count target. We still ask for one clear H1 and some text in the HTML because they make the page’s topic and content unambiguous.
How to work through it
Sort by missing points, not by colour. A failed indexability check costs 15; a missing lang costs 3. Fix the template, not the page: titles, canonicals and schema usually come from one layout, so one change fixes every page built on it. Then check a few other page types (a blog post, a product page, a category) because templates differ. Google says some changes take effect in a few hours and others can take several months, so re-run the check after you ship and give it a few weeks.
For a deeper look at one area, use the meta tag checker, the structured data validator, the rich results test or the heading checker. To check the status codes and redirects of many URLs at once, use the HTTP status checker. To see how a competitor’s page does on the same list, run the SEO compare tool. Our on-page SEO checklist and technical SEO checklist cover what a score can’t.
Mistakes to look for
- A noindex left over from staging. It costs all 15 indexability points.
- Blocking a page in robots.txt and adding noindex. The indexability row reports one problem at a time, noindex first, so check robots.txt too. Google says that if robots.txt blocks the page, the crawler will never see the noindex rule and the page can still appear in results. Remove the Disallow so Google can read the noindex. See noindex.
- A canonical that points somewhere else. Often a template copied from another page. Google says a canonical is a hint, not a rule, so it may index the other URL, and it recommends absolute paths.
- The same title on every page. One check can’t see this, so run two or three pages and compare. Google’s guidance is to avoid repeated or boilerplate text in title elements and give each page text of its own.
- Content that only exists after JavaScript. Google crawls, renders and indexes in separate phases and still recommends server-side or pre-rendering. That is the “text in the HTML” row.
What it doesn’t check
One URL at a time, from one place. It doesn’t run JavaScript on a page that answers normally, measure Core Web Vitals, judge content quality or count backlinks. The response time is one measurement from our server, so use PageSpeed Insights for rendering. For your own site, Google Search Console shows what Google actually crawled and indexed. If a site refuses our crawler (401, 403, 429, 503 or no connection), we read a copy from a real browser when one is available, say so on the page, and leave out the rows that need the raw HTML: text in the HTML, response time and redirects.