Same input, same score
Each check is a rule applied to what we fetched: HTTP responses, the page HTML, robots.txt, sitemap.xml, and optional data from Google PageSpeed Insights (Lighthouse and the Chrome UX Report) and Google search results via Serper. There is no AI scoring and no randomness. If your score changes between scans, something we measured changed: your pages, server response, real-user speed data, or rankings. Each report records the methodology version it was scored with.
Category weights
The overall grade is a weighted average of six categories, each scored 0-100. A category whose module was not part of a scan gets a neutral 75 and is labelled "not measured", so skipping a module neither helps nor hurts.
| Category | Weight | What it answers |
| Technical | 20% | Can search engines fetch and crawl the site? |
| On-page | 25% | Are titles, descriptions, headings and markup in order? |
| Content | 20% | Is there enough readable text? |
| Performance | 15% | How fast is the site for real visitors? |
| Accessibility | 10% | Lighthouse accessibility score (mobile). |
| Rankings | 10% | Do your target keywords rank? |
Grade bands
A · 90-100
B · 80-89
C · 70-79
D · 60-69
F · 0-59
Technical (20%)
Can search engines fetch and crawl the site? Each category starts at 100; the deductions below apply.
- Crawl errors
- Share of crawled pages that fail or return HTTP 4xx/5xx. Over 25% costs 30 points; over 10% costs 18.
- XML sitemap
- No /sitemap.xml costs 10 points; an empty sitemap costs 5.
- robots.txt
- Blocking all crawlers costs 20 points; a missing robots.txt costs 5. Rules are evaluated per user agent.
- Broken internal links
- 4 points per broken link, up to 20.
- Favicon
- No favicon costs 10 points.
- Lighthouse Best Practices
- When available, blended in at 25%.
On-page (25%)
Are titles, descriptions, headings and markup in order? Each category starts at 100; the deductions below apply.
- Critical issues
- 8 points each, up to 40: missing titles, duplicate titles, broken links, invalid JSON-LD, fetch errors.
- Warnings
- 3 points each, up to 25: missing or long descriptions, long titles, missing or multiple H1s, missing canonical or viewport, images without alt text, noindex pages (meta or X-Robots-Tag), invalid canonicals, hreflang conflicts, redirect chains, incomplete Open Graph, missing Twitter Card.
- Duplicates
- Duplicate titles (5 each, up to 15), duplicate descriptions (5 each, up to 10), near-duplicate page text at or above 85% shingle similarity (5 each, up to 15).
- Structured data
- Pages without JSON-LD (2 each, up to 10); incomplete Open Graph (2 each, up to 8).
- Lighthouse SEO
- When available, blended in at 20%.
Content (20%)
Is there enough readable text? Each category starts at 100; the deductions below apply.
- Coverage
- Two or fewer crawled pages costs 15 points.
- Average length
- An average below 300 words costs 15 points.
- Thin pages
- 3 points per page under 300 words, up to 15.
- Readability
- Flesch Reading Ease and Flesch-Kincaid grade are reported per page (standard published formulas).
Accessibility (10%)
Lighthouse accessibility score (mobile). Each category starts at 100; the deductions below apply.
- Lighthouse Accessibility
- Used directly when PageSpeed Insights data is available.
Rankings (10%)
Do your target keywords rank? Each category starts at 100; the deductions below apply.
- Positions
- Share of keywords in the top 3 (50%) plus share in the top 10 (50%), from Google results via Serper.
AI-search readiness (separate sub-grade)
Scored out of 100 and reported next to the overall grade. It does not change the overall grade.
| Check | Points | Rule |
| AI crawler access | 30 | Answer-engine crawlers allowed in robots.txt (points are proportional). Training crawlers are listed but never penalised. |
| llms.txt | 15 | A valid /llms.txt (H1 title required; links recommended). Half points if present but invalid. |
| Identity schema | 20 | Organization, LocalBusiness or Person JSON-LD on the homepage with name, url, logo and sameAs (plus address and telephone for local businesses). 4 points off if the schema name does not appear in the title or H1. |
| Content without JavaScript | 20 | Share of the page's words present in the raw HTML compared with the browser-rendered page. Estimated from raw HTML when rendering is off. |
| Semantic structure | 15 | <main>, <header>/<footer>, <nav>, exactly one H1, headings in order, and an html lang attribute. |
Answer-engine crawlers (scored): OAI-SearchBot, ChatGPT-User, PerplexityBot, Perplexity-User, Claude-SearchBot, Claude-User, Googlebot, Bingbot, Applebot.
Training crawlers (reported, never penalised): GPTBot, ClaudeBot, Google-Extended, Applebot-Extended, CCBot, Meta-ExternalAgent, Bytespider.
Limits we want you to know about
- The free scan checks your homepage only. Signed-in scans crawl up to the page limit you choose.
- Lighthouse numbers are lab data from one simulated load and can vary between runs; they are weighted below real-user data when that is available.
- Pages are analysed from their raw HTML. Browser rendering, when enabled on this server, is used for the homepage only.
- Search result previews use approximate pixel widths; Google may rewrite titles and snippets.