Methodology

How we score your site.

Five weighted checks. One formula. A score that tells you where you stand.

What we measure

We fetch your site the way AI crawlers do — a plain HTTP request — and score what that fetch returns. (We also render the page in a real browser and compare, so your report can show you how much of your content depends on JavaScript.) Then we run five checks, each scored 0–100 and weighted by how much it matters for AI visibility.

Crawler access 20%

Can AI crawlers reach your site? We read your robots.txt for the ten AI crawlers we test — GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended, CCBot, FacebookBot, and cohere-ai — then verify with a live fetch. If crawlers are blocked, nothing else matters.

Structure 25%

A clear heading order — one main heading, no skipped levels — plus semantic landmarks (header, nav, main, footer). Best practice, not law: a page with messier structure can still be read, it just gives AI less to work with. Clean structure helps AI parse a page into answers.

Metadata 25%

Title tag, meta description, canonical URL, OpenGraph tags, and Schema.org markup. These are the signals AI uses to understand and cite your page.

Content 15%

Is there enough substantive text for AI to work with? We measure word count, content depth, and whether key information appears in the raw HTML (not just after JavaScript runs).

Performance 5%

Page weight and load characteristics. Lighter pages get crawled more thoroughly.

The scoring formula

Let C, S, M, Co, P be the category scores (each 0–100). The weighted base score is:

$$\text{Base} = 0.20C + 0.25S + 0.25M + 0.15\text{Co} + 0.05P$$

Maximum base: 90 points (0.90 × 100)

Sites with helpful Q&A content earn a bonus; sites with none lose points:

$$B(s) = \begin{cases} -10 & \text{if } s \le 40 \\ 0 & \text{if } 41 \le s \le 70 \\ +10 & \text{if } s > 70 \end{cases}$$

where s is the FAQ subscore (0–100)

The final score applies the FAQ adjustment, with two capping rules:

$$\text{Score} = \min(\text{Base} + B(s), 100)$$

Capping rules:

  • If C = 0 (crawler access scores zero — three or more of the ten crawlers blocked), then Score ≤ 40 regardless of other categories.
  • Score is clamped to [0, 100]. The natural maximum is 100 (90 base + 10 FAQ bonus).

Why these weights

The weights follow what our study of 10,369 small-business websites showed actually separates readable sites from unreadable ones. Structure (25) and metadata (25) carry the most weight because that's where facts get lost — their study averages are 70.5 and 80.8, the widest gaps after FAQ. Crawler access (20) is weighted heavily because it's a gate: blocked crawlers make every other check moot, which is also why a site scoring zero on crawler access is capped at 40. Content (15) matters, but volume alone doesn't make facts findable. Performance (5) carries the least weight because it's nearly universal — the study average is 99.0, so it rarely separates one site from another. The FAQ adjustment sits outside the 90 points because question-and-answer content is the most directly quotable material on a site: sites that have it earn up to 10 back, sites with none give up to 10 up.

One honest limit: the score measures how completely AI systems can read a site. It does not measure — and cannot guarantee — whether an assistant will cite or recommend the business. That also depends on reviews, directories, competition, and the question asked.

Score bands

BandScoreMeaning
Ready90–100AI systems can find and fully read your site — the strongest position to be cited from, though readability alone never guarantees a citation.
Workable70–89Usable, but specific fixes would improve AI visibility.
Needs Work0–69Significant barriers prevent AI from understanding your site.

Worked example

A site scores: \(C=100, S=80, M=70, \text{Co}=60, P=90\), FAQ subscore \(s=75\).

$$\begin{aligned} \text{Base} &= 0.20(100) + 0.25(80) + 0.25(70) + 0.15(60) + 0.05(90) \\ &= 20 + 20 + 17.5 + 9 + 4.5 = 71 \end{aligned}$$ $$B(75) = +10 \quad (\text{since } 75 > 70)$$ $$\text{Score} = \min(71 + 10, 100) = \mathbf{81} \rightarrow \text{Workable}$$

What we don't do

  • We don't score the JavaScript-rendered page. Your score reflects the plain fetch — if your content only appears after JS executes, we report it as missing, because that's what simple crawlers see. A separate browser render runs only as a comparison, so you can see the gap.
  • We don't guess. Every finding in your report links to the exact location on your site where we found the issue.
  • We don't sell your data. Scan results are private to your account.

Informational checks

These don't affect your score, but we report them because they matter:

  • llms.txt — whether you have one, and what it contains
  • Raw vs. rendered — word count comparison showing how much content lives behind JavaScript