Methodology
How we score
The technical SEO score is a weighted roll-up of pass / warn / fail checks across seven dimensions. The SEO Ranking Score in the full report builds 6 more pillars on top of it. Here is every number that goes into both.
Dimension weights
Total = Σ(dimension score × weight) ÷ Σ(weights of scored dimensions). A dimension that couldn’t be measured is dropped and the rest are re-normalised; the report then says “Based on N of 7 dimensions”.
| Dimension | Weight |
|---|---|
| Crawlability & Indexing | 25% |
| On-Page & Content | 20% |
| Performance | 15% |
| Mobile Usability | 10% |
| Structured Data & Social | 10% |
| HTTPS & Trust | 10% |
| Architecture & Internal Links | 10% |
Authority, Search Visibility and Competitors (full report) are scored 0–100 on their own and never enter the total.
Check weights and credit
Dimension score = Σ(credit × weight) ÷ Σ(weight) × 100, rounded. Weight comes from severity; credit from status.
Severity → weight
- Critical · 4
- High · 3
- Medium · 2
- Low · 1
Status → credit
- Pass · 100%
- Warn · 50%
- Fail · 0%
- Info / not measured · excluded
Fewer than 3 measured checks in a dimension → no score for it (“Insufficient data”), and it is excluded from the total. Fewer than 5 pages crawled → Architecture is marked low-confidence and excluded.
Gate rules
These five failures make the rest of the report moot, so they cap it. Any one failing → its dimension is capped at 30, the total at 40, the grade at F, and the report opens with a “Fix this first” banner.
crawl.entry.status— the entry URL does not end on a 200crawl.entry.indexable— the entry page is noindex (meta or X-Robots-Tag)crawl.robots.blocks-site— robots.txt disallows / for * or Googlebotsec.https— HTTPS is not availablesec.tls.expired— the certificate has expired or the handshake fails
Two conditions come before any scoring: if a firewall or challenge page blocks our crawler we publish no score at all; if the entry page is an empty JavaScript shell we score what raw HTML allows and mark content checks as not measured.
Page-level checks
Checks like “missing title” or “broken internal link” are judged by the share of crawled pages affected, not by a single page.
- 0% of pages affected → pass
- ≤ 20% affected → warn
- > 20% affected → fail
A few checks use their own bands where Google’s guidance differs (for example image alt text: ≤ 10% missing pass, ≤ 30% warn). Every page-level evidence line opens with the sample size — “Across 20 crawled pages…”.
Core Web Vitals thresholds
Real-user p75 values from the Chrome UX Report (CrUX) via PageSpeed Insights, mobile. Good → pass, needs improvement → warn, poor → fail. No field data → the lab value is used, capped at warn and labelled “lab, single run”. PageSpeed unavailable → not measured.
| Metric | Good | Needs improvement | Poor |
|---|---|---|---|
| LCP (Largest Contentful Paint) | ≤ 2.5 s | ≤ 4.0 s | > 4.0 s |
| INP (Interaction to Next Paint) | ≤ 200 ms | ≤ 500 ms | > 500 ms |
| CLS (Cumulative Layout Shift) | ≤ 0.1 | ≤ 0.25 | > 0.25 |
| TTFB (Time to First Byte) | ≤ 800 ms | ≤ 1800 ms | > 1800 ms |
Grade scale
A
≥ 85
B
≥ 70
C
≥ 55
D
≥ 40
F
< 40
Same scale as the AI visibility report, so the two never disagree about what an “A” means.
Data sources and limits
- Our crawler (AEOeyeBot): robots.txt, up to 6 sitemap files, 4 protocol/host variants, a random-path 404 probe, and 20 HTML pages on the free report (12 by navigation, 8 sampled from the sitemap by path) or 40 on the full report (25 + 15). Raw HTML only — no JavaScript rendering.
- Google PageSpeed Insights: one mobile run per report (plus desktop on the full report). CrUX is aggregated over 28 days; Lighthouse is a single lab run and varies.
- DataForSEO (full report): backlink summary and anchors, ranked keywords (Google US, English) with their difficulty and result-page features, competitor domains, the top 10 organic results — with AI Overview, featured snippet and People also ask — for up to 6 of your queries, the domain rank of the sites that rank, and two searches for your brand. Traffic and index figures are estimates.
- Top-ranking pages (full report): the top 5 results for each of those queries, fetched once each by our crawler as raw HTML, robots.txt respected.
- Google Search Console (full report, optional): read-only search analytics for the property you connect — see below.
Full report
The SEO Ranking Score
The technical score asks whether Google can crawl and index you. The Ranking Score asks whether your pages can win the ranking: 7 pillars and 40 sub-scores, each 0–100 and traced to evidence on your pages, your backlinks, your brand’s search results and the pages that rank today. No AI model grades anything — every sub-score is a rule published below, so the same site gets the same score twice.
Pillars and weights by type of site
Score = Σ(pillar score × weight) ÷ Σ(weights of scored pillars); inside a pillar, sub-scores roll up the same way. An online store lives or dies on its technical health, a local business on its reviews, a health or money site on trust — so the weights follow the type of site, and the report says which one it used (“Scored as”).
| Pillar | Business, SaaS or publisher site | Online store | Local business | Health, finance or legal site |
|---|---|---|---|---|
| Relevance & search intentDecides whether you can rank at all | 25% | 25% | 20% | 20% |
| Content quality (E-E-A-T)Decides whether rankings survive core updates | 20% | 15% | 15% | 30% |
| Authority, links & reputationDecides who wins among similar pages | 20% | 20% | 25% | 20% |
| WinnabilityDecides whether these are fights you can win | 10% | 10% | 10% | 10% |
| AI search & clicksDecides whether a ranking still earns the visit | 10% | 5% | 5% | 5% |
| User satisfactionValidates the result — measured with Search Console, estimated without it | 10% | 10% | 10% | 10% |
| Technical foundationThe threshold — failing it voids everything else | 5% | 15% | 15% | 5% |
| Total | 100% | 100% | 100% | 100% |
How we pick the type
- Health, finance or legal site: 30%+ of content pages cover health, money or legal topics (the same word lists as the authorship rule).
- Local business: LocalBusiness-type schema on the entry page or on 2+ pages, or an address and phone number on the homepage with a phone number on 30%+ of pages.
- Online store: Product or Offer schema on 20%+ of readable pages (or on 5+ pages), product-format pages making up 20%+, or 20%+ of URLs under /product(s)/, /shop/, /collections/ or /cart.
- Business, SaaS or publisher site: Everything else — SaaS, business and publisher sites.
Checked in that order from the pages we crawl — the first match wins. Same pages, same type, every run.
Sub-score weights
- Local business: Off-site reputation counts for 25% of the Authority, links & reputation pillar instead of 14%; the pillar’s other sub-scores shrink in proportion.
- A sub-score we can’t measure shows as “Not measured” and its weight goes to the rest of its pillar — it is never scored as zero. Grades use the same scale as the technical score.
The technical gate
If the technical score has a blocker — any of the five gate rules — the Ranking Score is capped at 40 and graded F whatever the other pillars score, and the report says to fix the blockers first. Content and links can’t rank a site Google can’t index.
Confidence labels
Every sub-score carries one, so you know how hard the number is.
- MeasuredRead directly from data — your crawled pages, the Chrome UX Report or DataForSEO.
- EstimatedA rule-based estimate from page text — word lists, heading comparisons and counts. Good at patterns, blind to meaning.
- ProxyPage traits standing in for user-behaviour data that Google doesn't share with anyone.
A label can change with the data behind it: One page per intent, for example, is Estimated from your pages and Measured once Search Console shows which pages share a query.
Expected click-through by position
The yardstick for Click-through vs. expected: the share of searchers who click an organic result at each Google position.
#1
27.6%
#2
15.8%
#3
11.0%
#4
8.4%
#5
6.3%
#6
4.9%
#7
3.9%
#8
3.3%
#9
2.7%
#10
2.4%
#11+
1.0%
For non-brand queries with 50+ impressions, expected clicks = impressions × the rate at the query’s average position, interpolated between positions. Score = 85 × your clicks ÷ expected clicks, capped at 100 — matching the curve scores 85. Brand queries are left out: people searching your name click you anyway.
Source: Backlinko's 2023 study of Google organic click-through rates. Real curves shift with the query and the layout of the result page, so read it as a yardstick: matching it is good, not perfect.
Google Search Console (optional)
Without it, three sub-scores are estimated or not measured. With it, they’re measured from your real search data: Click-through vs. expected, Ranking momentum and One page per intent.
What we read
- Google’s Search Console API with one permission:
webmasters.readonly. We can’t change settings, submit anything or add users. - Search analytics for the property that matches the audited domain: clicks, impressions, CTR and average position by query and by page — the 28 days ending 3 days ago, and the 28 days before.
- Up to 100 queries and 100 pages by impressions, plus query–page pairs to find pages competing for the same search.
How connecting works
- Sign in (an email code, no password) and open your unlocked report.
- Press Connect. You get a verification tag that’s unique to your request.
- Add the tag to your homepage’s
<head>— or a TXT record to your domain’s DNS — and, in Search Console → Settings → Users and permissions, add our service account’s email as a Restricted user. - Press Verify. We check that the tag is live on the audited site and that a domain property, or a URL-prefix property on the same host, is shared with us. Your scores update straight away.
Why the tag: anyone can share a Search Console property with our service account, but only someone who controls the site can publish a tag made for their request — the same way Google verifies site owners. You can remove the tag after verification.
Privacy
- Anyone with this report link can see the Search Console data shown here. Report links aren’t listed or indexed, but whoever you send one to can open it — Search Console numbers included.
- The data shows only in unlocked full reports, never in free previews, and it’s in your JSON export — it’s your data.
- We never see your Google password: you grant access in your own Search Console. Disconnecting removes the data from the report and re-scores it; to revoke our access completely, also remove the service account under Users and permissions.
Relevance & search intent
20–25%Decides whether you can rank at all.
- Search intent match25%Estimated
- Whether each page's format fits its query's intent — a comparison for a “vs” query, a how-to for “how to…” — and, where we compared, the format the top results use. Score = the share of query–page pairs that fit.
- Semantic coverage25%Estimated
- The subtopics (H2/H3) that at least two of the top 5 results share, and how many of them your page covers. Covering 70% of them scores 100; fewer than 3 shared subtopics and it isn't measured.
- Information gain20%Estimated
- Per query, what your page adds that the top results don't: 8 points per subtopic none of them cover (up to 5), 20 for 5+ more data points than their median (10 for 1+), 15 for an extra table, 15 for 2+ of your own images (8 for one) and 10 for 2+ first-hand phrases. Without competitor pages it is estimated from your page alone and capped at 60.
- Title, H1 & answer-first15%Measured
- Per query: the share of its core words in your title (40 points) and H1 (30), plus 30 when at least half of them appear in the first 150 words.
- One page per intent15%Estimated
- Pages competing for the same intent: content pages whose title topic words overlap 60%+ and share a format, URLs ranking for the same keyword, and — with Search Console — queries where 2+ pages each take 10%+ of the impressions. The score falls from 100 to 0 as the share of content pages caught in such a group rises from 0 to 30%.
Content quality (E-E-A-T)
15–30%Decides whether rankings survive core updates.
- First-hand experience22%Estimated
- Per content page: first-hand phrases such as “we tested” or “in our experience” (up to 3, for 70 points) and at least one self-hosted, non-stock image (30).
- Original data & verifiable sources18%Estimated
- Per content page: original-data phrases such as “our survey” or “sample of 500” (2 earn the full 40 points), at least one table (20), and links to authoritative sources — .gov, .edu, official docs, research, major news — per 1,000 words (2+ → 40, 1+ → 25, any → 10).
- Authorship & trust pages18%Measured
- Bylines on content pages (40), author schema (15), an About page (15), a Contact page with an email, phone or address (15), and Organization schema with 2+ sameAs profiles (15). When 20%+ of content pages cover health, money or legal topics, bylines on fewer than 80% of them cost 15 more.
- Freshness12%Measured
- Content pages dated within the last 365 days (60), pages with any published or modified date (20), and titles without a year older than last year (20).
- Scaled-content risk18%Estimated
- Starts at 100 and deducts for near-duplicate content pages (up to 40, by share), AI boilerplate phrases (25 at 3+ per 1,000 words, 12 at 1.5+), 40%+ of 10+ pages published on one day (20), thin pages under 300 words (up to 20, by share) and 80%+ of pages with no first-hand signal (10). Higher means lower risk.
- Citation health12%Measured
- Whether your citations still hold up: dead links among the outbound links we tested (50 points, 0 at 20% dead; needs 5+ tested), content pages whose newest year mentioned is 3+ years old (30, by share), and content pages with no outbound link at all (20, by share). A part with nothing to measure is dropped and the rest re-weighted.
Winnability
10%Decides whether these are fights you can win.
- Weak spots in the top 530%Measured
- Per query, how many of the top 5 results have a weak spot: forum or user-generated, stale (not updated in 18 months), thin (under 500 words), off-intent (title shares under a third of the query's words, or the wrong format) or low authority (domain rank under 100, or no higher than yours). 0 weak results scores 20, 1 → 50, 2 → 80, 3+ → 100. Needs a query with 3+ known results.
- Difficulty fit25%Measured
- Keyword difficulty (0–100) against your strength — your domain rank ÷ 8, capped at 100: KD within 10 points of it scores 100, within 25 → 70, within 40 → 40, beyond → 10, weighted by search volume. Without a domain rank, absolute KD: up to 30 scores 100, up to 45 → 70, up to 60 → 40, higher → 10.
- Authority gap vs. ranking sites20%Measured
- Your domain rank against the average domain rank of each query's top 10 (or the median of the top 5 we checked): at or above it scores 100, 60%+ of it → 70, 30%+ → 40, lower → 10.
- Striking-distance keywords10%Measured
- Your non-brand ranked keywords by position, weighted by search volume: 1–3 scores 100, 4–10 → 70, 11–20 → 40, lower → 10. Keywords at 4–15 with 50+ searches a month are listed as the nearest wins.
- Ranking momentum15%Measured
- With Search Console: clicks in the last 28 days against the 28 before — flat scores 50, +40% or better 100, −40% or worse 0. Without it: ranked keywords that are new or moving up, minus those moving down or lost, as a share of all of them (50 ± 50).
AI search & clicks
5–10%Decides whether a ranking still earns the visit.
- AI Overview presence & citations30%Measured
- For each analysed query whose Google results show an AI Overview we could read: 100 if it cites your site, 0 if not, averaged. Not measured when none of the queries shows one.
- AI crawler access20%Measured
- The share of AI search and assistant crawlers your robots.txt lets in — OAI-SearchBot, ChatGPT-User, PerplexityBot, Perplexity-User, ClaudeBot, Claude-SearchBot, Claude-User, Bingbot, Applebot — for 70 points, and HTML that isn't an empty JavaScript shell (30). Training-only crawlers such as GPTBot and Google-Extended are listed, not scored: blocking them is a business choice.
- Citability of your content25%Estimated
- Per content page: an opening paragraph of 60 words or fewer carrying half the title's topic words (25), 2+ question-style headings or an FAQ (20), data points per 1,000 words (20 at 5+, 10 at 2+), lists or tables (15), Article, FAQ, HowTo or Product schema (10), and a byline with a date (10).
- Click opportunity on your SERPs25%Measured
- How much of the click your keywords' result pages leave for organic results, weighted by search volume. Each feature takes a share — AI Overview 35%, featured snippet 20% (none if it's yours), answer box 20%, ads or shopping 15%, local pack 15%, knowledge panel 10%, video, People also ask and top stories 5% each — capped at 85%. Score = 100 × (1 − the average share taken).
User satisfaction
10%Validates the result — measured with Search Console, estimated without it.
- Real-user experience (Chrome data)25%Measured
- LCP, INP and CLS from the Chrome UX Report — real Chrome users, page-level where available, otherwise your whole origin. Good earns full credit, needs improvement half. Not measured without real-user data.
- Click-through vs. expected (Search Console)25%Measured
- Search Console only: clicks on your non-brand queries with 50+ impressions against the clicks expected at their average position (27.6% at #1, 15.8% at #2, 11.0% at #3 … 2.4% at #10, 1.0% beyond). Matching the curve scores 85; beating it by about 18% scores 100.
- Task completion: answer-first & next step20%Proxy
- The answer within the first 150 words (40), a next-step link in the last third of content pages (30), FAQs on articles (15), and no pop-up or overlay markup (15).
- Readability & scannability15%Proxy
- Flesch reading ease (60+ → 50, 40+ → 35, 30+ → 20, lower → 10; 35 when the page isn't in English), paragraphs averaging 80 words or fewer (20; 120 or fewer → 10), 300 words or fewer per heading (15), and lists or tables on content pages (15, by share).
- Title promise integrity15%Proxy
- Starts at 100 and deducts for clickbait titles (up to 50), titles that promise a number the page doesn't deliver (up to 30), and titles whose topic doesn't show up early on the page (up to 20).
Technical foundation
5–15%The threshold — failing it voids everything else. The pillar score is the free Technical SEO score itself, gate cap included, so the two never disagree.
- Crawl & index25%Measured
- The Crawlability & Indexing score from the free Technical SEO score. Can Google reach, crawl and index the pages that matter? Robots, sitemaps, canonicals, redirects and blockers.
- On-page basics20%Measured
- The On-Page & Content score from the free Technical SEO score. Titles, descriptions, headings, alt text, thin and duplicate content across the pages we crawled.
- Core Web Vitals15%Measured
- The Performance score from the free Technical SEO score. Core Web Vitals from real Chrome users (CrUX p75), with Lighthouse as the diagnostic layer.
- Mobile usability10%Measured
- The Mobile Usability score from the free Technical SEO score. Viewport, tap targets, font sizes, image sizing and mobile/desktop content parity.
- HTTPS & trust10%Measured
- The HTTPS & Trust score from the free Technical SEO score. HTTPS everywhere, certificate health, mixed content and the trust pages every site needs.
- Site structure10%Measured
- The Architecture & Internal Links score from the free Technical SEO score. Click depth, internal link counts, broken links, orphan signals and navigation consistency.
- Structured data10%Measured
- The Structured Data & Social score from the free Technical SEO score. JSON-LD validity and required fields per Google's docs, Open Graph, Twitter cards and favicon.
What it can’t see
- Behaviour is partly scored through page traits. Google doesn't share dwell time or returns to the results page. The User satisfaction pillar uses real Chrome UX Report data and — once you connect Search Console — your real click-through; the rest scores the traits that drive satisfaction (an early answer, a next step, readable text, titles that keep their promise) and is labelled Proxy.
- Comparisons are a sample. Up to 6 queries × the top 5 organic Google results (US, English), read once at the time of the run. Pages that block AEOeyeBot in robots.txt or don't load are skipped and shown as not fetched.
- Your keywords first, then your rankings. Up to 3 target keywords you add come first, then keywords you already rank for — non-brand first, highest search volume, one per page. A site with no ranking data is compared on the topics of its homepage and most-linked content pages instead.
- AI Overviews change from search to search. We read one US result page per query. An AI Overview can appear, disappear or cite different sources an hour later, so treat it as a snapshot, not a verdict.
- Reputation is what Google shows. Brand reputation reads page one for your brand and for your brand plus “reviews”. Review sites Google doesn't surface there aren't counted.
- Subtopics are matched by wording, not meaning. Two H2/H3 headings count as one subtopic when at least half their words overlap. A page that covers a topic under unusual wording can be under-credited.
- Word lists catch phrasing, not truth. “We tested” earns first-hand credit whether or not you did. The score rewards signals that usually come with real experience; it can't verify them.
- A model, not a forecast. It measures the factors that decide rankings; it doesn't predict positions. Without Search Console it can't see your real clicks: click-through isn't scored and momentum falls back to ranking changes.
Disclaimer
Reports are automated, reflect a single point in time, and sample a subset of a site’s pages. They are not a guarantee of rankings and are not affiliated with or endorsed by the audited site, Google or DataForSEO. Thresholds follow Google Search Central and web.dev guidance and may change as that guidance does; this page is updated when they do.