How the score is calculated
No black box: every point comes from a measurable check. Nothing is estimated or guessed.
1. Checks
We run 63 deterministic checks. Each failed check has a severity and a penalty: critical = 25, warning = 10, suggestion = 3.
2. Pages affected
For checks evaluated on every page, the penalty is scaled by the share of crawled pages affected: penalty × (0.5 + 0.5 × affected / crawled). One page out of ten costs about half the penalty; all pages cost the full penalty.
3. Category score
Each category starts at 100 and is multiplied by (1 − penalty / 100) for every failed check. Example: one critical issue and one warning give 100 × 0.75 × 0.90 = 68. Multiplying gives diminishing returns, so a site with many small issues is not crushed to zero.
4. Overall score
Weighted average: SEO 30%, Performance 20%, Accessibility 20%, Technical 20%, Content 10%.
Limits
We crawl up to 10 pages (depth 2) and measure homepage resources only. Core Web Vitals are shown only when measured by Google PageSpeed Insights; we never estimate them. Colour contrast and keyboard behaviour need a real browser and are not covered yet.
All checks
| Check | Category | Severity |
|---|---|---|
| Page title | SEO | critical |
| Title length | SEO | warning |
| Unique titles | SEO | warning |
| Meta description | SEO | warning |
| Meta description length | SEO | suggestion |
| Unique meta descriptions | SEO | suggestion |
| Main heading (H1) | SEO | warning |
| Single H1 | SEO | suggestion |
| Sub-headings (H2) | SEO | suggestion |
| Canonical URL | SEO | suggestion |
| Single canonical | SEO | warning |
| Indexability | SEO | warning |
| robots.txt | SEO | warning |
| robots.txt rules | SEO | critical |
| XML sitemap | SEO | warning |
| Sitemap format | SEO | warning |
| Sitemap in robots.txt | SEO | suggestion |
| Pages blocked by robots.txt | SEO | suggestion |
| Internal links | SEO | critical |
| Internal linking | SEO | suggestion |
| hreflang codes | SEO | warning |
| hreflang x-default | SEO | suggestion |
| HTTPS | Technical | critical |
| TLS certificate | Technical | critical |
| HTTP → HTTPS redirect | Technical | warning |
| Mixed content | Technical | warning |
| Page status codes | Technical | critical |
| Redirect chains | Technical | warning |
| HTML size | Technical | warning |
| Mobile viewport | Technical | critical |
| Character encoding | Technical | suggestion |
| Favicon | Technical | suggestion |
| Open Graph | Technical | warning |
| Twitter / X card | Technical | suggestion |
| Structured data | Technical | suggestion |
| Valid structured data | Technical | warning |
| HSTS header | Technical | suggestion |
| External links | Technical | warning |
| Page resources | Technical | warning |
| Server response time | Performance | warning |
| Image weight | Performance | warning |
| Modern image formats | Performance | suggestion |
| Total page weight | Performance | warning |
| Text compression | Performance | warning |
| Render-blocking scripts | Performance | warning |
| Number of resources | Performance | suggestion |
| Image dimensions | Performance | suggestion |
| Lazy loading | Performance | suggestion |
| Browser caching | Performance | suggestion |
| Core Web Vitals | Performance | warning |
| Page language | Accessibility | warning |
| Image alt text | Accessibility | warning |
| Form labels | Accessibility | warning |
| Button names | Accessibility | warning |
| Link text | Accessibility | warning |
| Zoom allowed | Accessibility | warning |
| Heading order | Accessibility | suggestion |
| Unique IDs | Accessibility | suggestion |
| Iframe titles | Accessibility | suggestion |
| Keyboard order | Accessibility | suggestion |
| Content depth | Content | warning |
| Placeholder text | Content | warning |
| Legal / privacy pages | Content | suggestion |