rankato
Website SEO Audit/How we score

How we score your site

Every point deducted from your SEO score maps to a real detected issue. Nothing is fabricated. Here's the full rubric so you can defend the number to your team.

Our truth-only promise

  • • We never invent findings to inflate the report.
  • • We never inflate the score with fake "bonuses."
  • • We never artificially lower a score to sell an upgrade.
  • • Every deduction points to a check row you can trace back to the code.

1. Severity penalties

Each unique failing check is deducted from its category's starting 100. Multiple pages triggering the same check don't stack linearly — we scale by an affected-page ratio (see below).

SeverityMax deductionExample
Critical22Non-2xx response, robots.txt blocking, missing title
Warning8Missing meta description, missing H1, no viewport tag
Notice2Short word count, generic anchor text, missing favicon
Info0Purely informational — never deducts

2. Category weights

Your overall score is a weighted average of category scores. Categories that control whether the page can rank at all weigh more than those covering polish.

CategoryWeight
crawlability3.0×
indexability3.0×
on page2.5×
performance2.5×
mobile2.0×
content quality2.0×
security2.0×
structured data1.5×
links1.5×
accessibility1.5×
images1.2×
geo1.2×
html quality1.0×
media1.0×
tracking0.6×
social0.6×
domain0.4×

3. Affected-page scaling

A missing meta description on 1 of 100 pages costs less than a missing meta description on 100 of 100 pages. We scale each penalty by:

multiplier = 0.5 + 0.5 × (affected_pages / total_pages)

Range is 0.5× (a single page in a large crawl) to 1.0× (every page affected). Single-URL audits are always at 1.0×.

4. Hard caps

Certain issues make a page effectively invisible to search. When we detect one, we cap the overall score so on-page wins can't hide the blocker. Fix the cap-triggering issue and the ceiling comes off.

CheckScore capWhy
page.status_code55Non-2xx response means the page can't rank.
page.robots_txt_allows45Blocked by robots.txt — Google can't crawl it.
page.robots_meta60noindex meta explicitly de-lists the page.
page.x_robots_tag60X-Robots-Tag header excludes the page from search.
page.canonical_conflict65Canonical points to a different domain.

5. Worked example

Consider a 10-page audit with two issues: a missing meta description on 8 pages (warning) and a short word count on 2 pages (notice).

  1. Meta description (warning): base 8 × multiplier 0.5 + 0.5 × (8 ÷ 10) = 0.9 = −7.2 in on_page.
  2. Short word count (notice): base 2 × multiplier 0.5 + 0.5 × (2 ÷ 10) = 0.6 = −1.2 in content_quality.
  3. on_page: 100 − 7.2 = 92.8; content_quality: 100 − 1.2 = 98.8.
  4. Weighted average across all categories (unaffected ones still count as 100) rounds to roughly 97. No hard cap triggered.

Ready to test it?

Every report links back to this page so anyone can verify the math.