Methodology
How the scores are calculated
Generated from the engine at build time · 61 checks in single-page mode
The short version
A report runs 61 checks against one page. Each check passes or fails. Failures are weighted by severity, each category gets a score from its weighted pass rate, and the overall score is a weighted average of the categories. The “fix these first” list is every failed check sorted by severity weight × category weight. There is no machine learning, no curve and no per-site adjustment: the same page always produces the same score.
What runs in a single-page check
The engine is the one behind deepseoanalysis.com’s full-site audits. Single-page mode drops the checks that only make sense across a crawl (orphan pages, duplicate titles across pages, click depth, broken external links) and adds a handful of live probes that a crawler cannot do cheaply: host-variant redirects, compression, security headers, mixed content, favicon and social tags. Core Web Vitals come from the PageSpeed Insights API after the main report is done, so they never delay it.
| Category | Checks | Critical | Warning | Info | Weight in overall |
|---|---|---|---|---|---|
| Technical SEO | 18 | 4 | 10 | 4 | 25% |
| On-Page | 13 | 2 | 9 | 2 | 22% |
| Structured Data | 4 | 1 | 3 | 0 | 15% |
| Links | 1 | 0 | 0 | 1 | 15% |
| AI Readiness | 5 | 0 | 3 | 2 | 15% |
| CMS & Platform | 20 | 1 | 14 | 5 | 15% |
Weights are relative: only the categories that actually ran on your page are included, and the overall score is normalised by the sum of their weights. CMS checks, for example, only run when a platform is detected.
Severity weights
- Critical — weight 3. The page is unlikely to rank or be crawled correctly until this is fixed: missing title, robots blocking everything, no H1, broken canonical.
- Warning — weight 1. A measurable ranking or click-through cost: title too long, missing meta description, no Open Graph tags.
- Info — weight 0.25. Best practice with a small or indirect effect: breadcrumb schema, favicon, Twitter card type.
The formula
category score = 100 × (1 − Σ weight(failed checks) / Σ weight(all applicable checks)) overall score = Σ (category score × category weight) / Σ category weight fix priority = severity weight × category weight (highest first, top 5 shown)
A category with no applicable checks scores 100 and is excluded from the average. Checks that cannot be evaluated on a page (for example, the question-heading ratio when the page has fewer than three headings) are marked not applicable and do not count against you.
The AI-visibility (GEO) score
The AI-visibility score is separate from the SEO score and answers a different question: how likely is this page to be fetched, understood and cited by answer engines such as ChatGPT, Perplexity and Google’s AI Overviews. It is a weighted sum of six factors, each scored 0–100:
| Factor | Weight | What it measures |
|---|---|---|
| llms.txt signal | 22% | Whether the site serves an llms.txt file and whether it is well formed. |
| AI crawler access | 18% | Whether robots.txt allows the AI crawlers we probe (GPTBot, ClaudeBot, Claude-Web, PerplexityBot, Google-Extended, CCBot, Bytespider). |
| Structured data completeness | 18% | Presence of Organization and WebSite schema on the homepage, and Article, FAQ, Breadcrumb or HowTo schema on the page. |
| Answer structure and chunkability | 18% | Heading density, question-style headings, a summary near the top, and lists or tables an answer engine can lift. |
| Entity clarity | 13% | sameAs links, consistent naming between title, schema and visible text, an author, and about or contact pages. |
| Freshness signals | 11% | Published or modified dates in schema and in visible text. |
Factors score 80 or above as “good”, 50–79 as “warning” and below 50 as “poor”. The weights reflect what answer engines can and cannot do today: they cannot cite a page their crawler is blocked from, and they lift structured, question-shaped content far more readily than prose. Read more in the AI visibility guide.
What the score is not
- It is not a ranking prediction. A 100 means the page has no on-page or technical defects we can detect, not that it will rank; authority and content quality are not measured here.
- It is not comparable across tools. Other checkers weight things differently; compare a page against its own earlier reports, not against a score from another tool.
- It is not a site score. One page is audited. For a site-wide picture, run the full crawl at deepseoanalysis.com.
Known limitations we have not fixed yet
Every checker has them; most do not publish them. These are ours, as of October 2026. If a check below matters to your decision, verify it by hand.
ai-llms-txt-existstrusts the status code. The probe treats any 2xx or 3xx response as "you have an llms.txt", so a server whose catch-all route answers/llms.txtwith an HTML page passes the check with no file at all. We measured it: of 52 sites we probed directly, 1 is a false positive this way. It also lifts the llms.txt factor of the AI-visibility score for a site that should score zero on it. The fix — require a non-HTMLtext/*content type — changes reported scores, so it is queued as a deliberate product change rather than slipped in. Until then, confirm withcurl -sI https://yoursite.com/llms.txt; see the llms.txt guide.- robots.txt is reported, not obeyed, for your own audit. When you submit a URL, the page is fetched regardless of what your robots.txt says about SEOCheckerBot; the report tells you whether it would have been allowed. Details and the block that does work are on the bot page.
- One page, one moment. Checks run against a single fetch with no JavaScript execution beyond the initial HTML. Content injected client-side is not seen — by us, and often not by the crawler either, which is usually the point.
Common questions
How is the SEO score calculated?
Each failed check costs points according to its severity weight, and each category contributes according to its category weight. Both sets of weights are listed above and imported from the engine at build time, so the numbers on this page are the numbers the checker applies to your report.
What is a good score?
Treat the score as a debt counter, not a grade. A page in the 90s usually has only cosmetic issues left; below 70 there is normally something structural — a missing title, a blocked crawler, absent structured data. Compare a page against its own earlier reports rather than against another tool.
Why does my score differ from another SEO checker?
Because every tool picks its own checks and its own weights. Ours are published on this page; most are not. A score is only comparable within the tool that produced it.
Every check, explained
Each check has a plain-language explainer covering what it tests, why it matters and how to fix it on the common platforms: browse the check explainers. If you think a check is wrong, tell us via the about page and we will fix the engine.