← Back to the auditor

How HealthAuditor works

Every number in a HealthAuditor report can be recalculated by hand. This page documents the data we collect, the scoring maths, the prioritisation formula and — just as importantly — the things this tool cannot see. Ruleset version 0.2.0 contains 60 rules.

1. What happens when you run an audit

  1. Your URL is validated and normalised (private and internal addresses are rejected).
  2. We request the page from our server, following redirects and recording every hop.
  3. The HTML is parsed; images, scripts, stylesheets, fonts, iframes and links are extracted.
  4. Each resource is measured with a real HEAD or ranged GET request — sizes are never estimated.
  5. robots.txt and the sitemap are fetched, and discovered links are probed for their status code.
  6. If a PageSpeed Insights API key is configured, a Lighthouse mobile run adds Core Web Vitals (LCP, CLS, TBT, Speed Index) and field INP when Chrome UX data exists.
  7. Every rule runs against that collected context and returns pass, fail or not-applicable.

2. How the scores are calculated

Category score

Each rule carries a weight derived from its severity: critical = 10, high = 6, medium = 3, low = 1. A category score is the share of that weight which passed:

categoryScore = 100 × (weight of passing rules ÷ weight of applicable rules)

Rules that do not apply to your page (for example form-label checks on a page with no forms) are excluded from both sides of the division, so they can neither help nor hurt your score.

Performance blending

When Lighthouse data is available the performance score is 60% measured Lighthouse score + 40% HealthAuditor resource rules. Without an API key it is the rule score alone, and the Core Web Vitals rules are marked not applicable rather than guessed.

Overall health score

Performance     × 0.3
SEO             × 0.2
Accessibility   × 0.2
Best Practices  × 0.1
Security        × 0.2

The overall score is the weighted mean of the category scores, renormalised over the categories that produced a score. 90+ is good, 50–89 needs improvement, below 50 is poor. It is a HealthAuditor score, not a Google ranking.

3. How findings are prioritised

priority = impact(severity) × reach(occurrences) × effort × categoryWeight

impact:  critical=10  high=7  medium=4  low=2
reach:   1 + log10(affected elements) ÷ 2, capped at 2
effort:  easy=1.3  medium=1  hard=0.75

Quick wins are findings with an easy fix, a severity above “low”, and a priority score of at least 5. When one underlying problem is detected by more than one rule it is counted once (deduplicated by a stable key), so the same issue never damages your score twice.

4. What we check

Every rule is documented — ID, severity, why it matters, how it is detected and how to fix it — in docs/RULES.md in the repository.

5. Limitations — what HealthAuditor cannot detect

6. Privacy