How the SEO Score Is Calculated
The score divides the checks that passed by the checks that applied to the page, and rounds the percentage to a whole number. Every applicable check weighs the same.
score = round(passed ÷ (total − not applicable) × 100)
The total is every check the audit ran or tried to run. Each result counts in one way:
| Result of the check | How it counts |
|---|---|
| Passed | Counts as passed. |
| Failed | Applicable, not passed: lowers the score. |
| To review | Applicable, not passed: lowers the score until the check passes. |
| Not checked or execution error | Applicable, not passed: lowers the score, because nothing proves the page passes. |
| Not applicable | Left out of the calculation. |
A Worked Example
An audit ran 91 checks: 70 passed, 6 failed, 4 are to review, 1 could not run and 10 did not apply. Its score is 86.
- Leave out the 10 checks that did not apply: 91 − 10 = 81 applicable checks.
- Divide the 70 passed checks by them: 70 ÷ 81 = 86.4%.
- Round to a whole number, which gives 86.
The report shows the same calculation with the numbers of each audit when you open the panel under the score ring.
Why Severity Does Not Change the Score
Severity says how urgent a finding is, so it orders Fix first and the remediation pack, from critical to info. The score answers another question: how much of what applies to this page is already right.
A page with one critical failure and a page with one info failure therefore get the same score. The report still lists the critical failure first.
What the Score Leaves Out
Checks that do not apply to the page, and checks that are not page rules, are left out of the score. Everything else counts.
- Not applicable checks, such as image checks on a page without images.
- Results of your site contract, shown with CTR ids next to the rules. They are the site owner's own conventions.
- Site rules of a crawl, such as broken internal links, which judge the pages of a website together.
- Rules the administrator switched off, which are not evaluated at all.
The plan of the audit owner can hide the details of some checks, but it never changes the score.
Core Web Vitals in the Score
The Core Web Vitals check counts like any other check. It passes when the field data of the page itself rates LCP, INP and CLS good or in need of improvement, and fails when one of them is poor.
Field data that only covers the whole site is a result to review, and no field data at all is not checked. The measurement arrives a few minutes after the audit, and the score of that audit is then recalculated with its result.
When an Audit Has No Score
The score is left empty, with the reason shown in its place, whenever the page could not be fully evaluated; it is never shown as 0 in that case.
- The request was blocked, timed out, failed or was refused by the fetch guard.
- The response was not HTML, or was too large and only its first part could be read.
- The page appears to depend on JavaScript to render its content, so its HTML alone cannot be judged.
- A mandatory rule could not run: H1 Missing, Page Blocked From Indexing, Meta Description Missing, Title Missing.
- No check applied to the page, so there is nothing to divide.
An error page is different: a complete 4xx or 5xx response is evaluated and scored like any page, and the error status is itself a failed rule.
Score Versions
Every audit stores the version of the formula that scored it, so a score can always be traced back to the formula that produced it.
| Version | What it counts |
|---|---|
3.0.0 (current) | The share of applicable checks that passed: round(passed ÷ applicable × 100). Failed checks, checks to review and checks that could not run count against it; not applicable checks and site contract assertions are left out. |
2.2.0 | Penalties: critical 30, error 15, warning 5 and info 2 points per failed scored rule, with a floor at 0. A one-item breadcrumb trail and a Core Web Vital rated poor for the page itself became scored warnings. |
2.1.0 | Penalties: info failures subtract points too, so a page scored 100 only when no scored rule failed. |
2.0.0 | First formula of the QuikSEO engine: critical 30, error 15, warning 5, and info failures subtracted nothing. |
1-legacy | Audits made before the QuikSEO engine. They carry no QuikSEO score; refreshing the audit evaluates the page again. |
When formula 3.0.0 replaced the penalties on 16 October 2026, the latest version of every audit was scored again from its stored results. Earlier versions in an audit's history keep the score they were given. The next audit of a page, manual, scheduled or started from the API, always applies the current formula.
SEO Score FAQ
What Is a Good SEO Score?
The report marks a score of 80 or more as good, 50 to 79 as a warning and anything lower as poor. These bands only colour the score ring. A score of 100 means every applicable check passed.
Why Does a Check to Review Lower the Score?
A check to review is one the page cannot prove on its own, such as a noindex directive on a site that has not said whether the page must be indexed. Until you confirm the state or fix it, the check has not passed, so it counts against the score like a failure.
Why Is the Score Empty Instead of 0?
An empty score means the page could not be fully evaluated, for example because the request was blocked or the page needs JavaScript to render. The report shows the reason in place of the number, so an unreadable page is never mistaken for a page that failed every check.
Do Site Contract Results Change the Score?
No. The assertions of your site contract are checked on every audit and reported with their own CTR ids, but they are left out of the score. A broken convention shows up in the findings, not in the number.
Related Documentation
The rule pages explain when each check passes; the source register lists the documents behind them.