# Inspector Score



The **VitalSentinel Inspector Score** (shown on the score card and often shortened to **Inspector Score**) is a single 0–100 number summarizing the health of an inspected URL across five weighted pillars. It appears at the top of every completed inspection as a gauge, with a per-pillar breakdown below it. The score also maps to a letter grade (A–F) that this page uses to describe score ranges; the card itself shows the number, not the letter.

## Pillars [#pillars]

The score starts at 100. Issues subtract from one of five pillars, each with a fixed point budget:

| Pillar             | Max Points | What it measures                                                         |
| ------------------ | ---------- | ------------------------------------------------------------------------ |
| **Performance**    | 40         | Core Web Vitals, page weight, code efficiency, main-thread health        |
| **SEO**            | 25         | Crawlability, on-page fundamentals, JS rendering parity, structured data |
| **Security**       | 20         | TLS/SSL, security headers, content security, cookie hygiene              |
| **Infrastructure** | 10         | Caching, compression, protocol version, operational maturity             |
| **Availability**   | 5          | HTTP status, response time                                               |

Each pillar contributes independently up to its cap. A page with poor performance but perfect security cannot score 0 - security still contributes its full 20 points.

The pillar card on the detail page shows each pillar's percentage, its score out of the pillar budget, and a status word with a color band:

| Pillar % | Color | Status          |
| -------- | ----- | --------------- |
| 90–100%  | Green | Looking great   |
| 50–89%   | Amber | Room to improve |
| 0–49%    | Red   | Needs work      |

## Grade Bands [#grade-bands]

The numeric score maps to a letter grade:

| Score  | Grade | Meaning                                                            |
| ------ | ----- | ------------------------------------------------------------------ |
| 90–100 | **A** | Excellent - meets best practices across all pillars                |
| 75–89  | **B** | Good - minor issues that don't materially harm users               |
| 50–74  | **C** | Needs work - multiple warnings or one critical issue               |
| 25–49  | **D** | Poor - critical issues across multiple pillars                     |
| 0–24   | **F** | Failing - page is broken, insecure, or invisible to search engines |

## How Deductions Work [#how-deductions-work]

Every issue carries a **severity** that caps how much a single occurrence can deduct from its sub-pillar:

| Severity     | Max deduction per issue          |
| ------------ | -------------------------------- |
| **Critical** | up to the full sub-pillar budget |
| **Warning**  | 4 points                         |
| **Info**     | 1.5 points                       |

When several issues hit the same sub-pillar, **diminishing returns** apply - the second issue costs 75% of the first, the third costs 75% of the second, and so on. This prevents a stack of minor problems in one area from disproportionately tanking the score, while still rewarding fixes for the worst issue first.

The sub-pillar score is floored at 0 - it never goes negative.

## Fatal Penalty [#fatal-penalty]

Some failures are catastrophic - an expired SSL certificate, a 5xx server error, a `noindex` directive - and a normal pillar deduction wouldn't reflect their real impact. For these, Inspector applies a **multiplicative cross-pillar penalty** on top of the pillar deductions:

```
final_score = round(pillar_sum × 0.85^fatal_count)
```

Each fatal issue knocks an additional 15% off the entire score.

| Fatal count | Multiplier | Score 95 becomes | Score 80 becomes |
| ----------- | ---------- | ---------------- | ---------------- |
| 0           | 1.00       | 95 (A)           | 80 (B)           |
| 1           | 0.85       | 81 (B)           | 68 (C)           |
| 2           | 0.72       | 68 (C)           | 58 (C)           |
| 3           | 0.61       | 58 (C)           | 49 (D)           |

A page can never get a clean A grade if it has an expired certificate or is blocked from search engines, no matter how good everything else is.

### Fatal Issues [#fatal-issues]

| Pillar       | Fatal rule                        | Why                                               |
| ------------ | --------------------------------- | ------------------------------------------------- |
| SEO          | `noindex` directive active        | Page tells search engines not to index it         |
| SEO          | robots.txt blocks the URL         | Crawlers cannot access the page                   |
| SEO          | robots.txt blocks Googlebot       | Google specifically cannot reach the page         |
| SEO          | Robots directive changes after JS | Search engines may see contradictory instructions |
| Security     | SSL certificate expired           | Browser shows full-page security warning          |
| Security     | SSL hostname mismatch             | Browser shows full-page security warning          |
| Availability | Server returned 5xx               | The page is broken                                |
| Availability | Server returned 404               | The page does not exist                           |

A fatal issue also zeroes its own sub-pillar in addition to applying the cross-pillar multiplier.

## Worked Example [#worked-example]

A staging site accidentally exposed to production: expired certificate, `noindex` tag, otherwise fine.

* TLS/SSL sub-pillar zeroed: `−8` (fatal)
* Crawlability sub-pillar zeroed: `−10` (fatal)
* Pillar sum: `40 + 15 + 12 + 10 + 5 = 82`
* Two fatals → multiplier `0.85² = 0.7225`
* Final score: `round(82 × 0.7225) = 59` - Grade C

Without the fatal mechanism, a page with two browser-warning failures could still grade B. The penalty makes sure catastrophic problems are never masked by perfection elsewhere.

## Domain Health Is Advisory [#domain-health-is-advisory]

WHOIS findings (domain expiring soon, recently registered, privacy enabled) are surfaced as issues but do **not** deduct from the score and never trigger the fatal penalty. Domain registration sits outside the page's technical implementation and has no direct user-experience impact.

## What's Not Counted [#whats-not-counted]

* **No bonus points** - the score starts at 100 and only goes down. There are no extra-credit items.
* **CrUX no-data is not a penalty** - a low-traffic URL with no field data is flagged as informational only.
* **TTFB measured from three angles** (CrUX, Chrome inspector, uptime) is intentionally counted in three sub-pillars without coalescing - a consistently slow server is confirmed from every vantage point.

## Related [#related]

<Cards>
  <Card title="Issues" href="/inspector/issues">
    How issues are categorized, prioritized, and deduplicated.
  </Card>

  <Card title="Checks" href="/inspector/checks">
    The six data sources Inspector uses to detect issues.
  </Card>
</Cards>
