Scoring rules

What your score can tell you.

A transparent HTML checklist for finding reviewable website issues. SEO and GEO labels group the checks; neither number measures your visibility in a search engine.

Check a website · Use the same analyzer through MCP

Methodology · 2026-10-20.2

How we score your website.

We read public HTML from your homepage and up to three supporting pages. This is Sundayable’s HTML checklist: 60 possible SEO points and 24 GEO points, each normalized to 100. The weights are editorial priorities, not a formula supplied by a search engine or a validated prediction of AI citations.

Explore the checks, weights and sources

Pass earns the full weight, partial normally earns half, and fail earns zero. AI crawler access is the exception: it earns the proportion of five documented bot shares described below. Unknown and non-applicable checks earn no score and are excluded from the score denominator.

Each score = round(100 × earned points ÷ assessed applicable weight). Overall uses all assessed weights together, not an average of the SEO and GEO percentages. Coverage = round(100 × assessed weight ÷ applicable weight); unknown checks lower coverage, non-applicable checks leave both denominators. No assessed points means no score. A 100 means the measured checklist passed, not perfect SEO or AI visibility.

The top three fixes are failing or partial scored checks sorted by missing raw points (weight minus earned), with check ID as a deterministic tie-break. Priority labels use the original weight: 7+ high, 5–6 medium, under 5 low. These are triage labels, not estimated ranking gains or effort. The API’s quickWins field repeats these fixes; we do not estimate how long each takes.

Crawl access and indexing carry more weight because blocked pages cannot reliably be read. The remaining weights describe checklist priorities, not the size of an effect. Correlated checks are not independent signals. A blocked homepage can still have a high numerical score; inspect access findings first. We do not measure backlinks, search demand, rankings, traffic, factual accuracy, reputation or verified expertise.

After you submit your name, email and consent, an available AI sample asks three buyer questions through Perplexity Sonar. It records mentions, citations and other businesses named. This small, seven-day cached sample is separate from the score and is not a traffic measurement. Training-bot permissions do not earn points.

Mobile speed is optional. Google PageSpeed is used only when configured and available; otherwise it is marked “not measured” and excluded from your score. A configured request retries once on failure. Lab performance and page-level or origin-level real-user data are labeled separately.

The scan normalizes your input to the site root and follows bounded redirects. It has a 14-second budget, a 1 MB HTML limit, a 500 KiB robots prefix and a 250 KB sitemap limit. It does not run JavaScript. Detected empty app shells get no score; other render-dependent content can still be missed. Bot blocks and unavailable supporting pages are unknown, not evidence of absent features. Google can render JavaScript; our fetch is not Googlebot.

Website and MCP use the same versioned analyzer and 24-hour cache. A repeat during that window may return the same saved scan; check its timestamp. New uncached runs can differ because pages, redirects, firewalls or response times change. Compare the rubric version, sampled pages, evidence and coverage before treating a score change as improvement. Old saved reports keep their original version.

SEO 60 points

Indexing eligibility12 pts

An unintended noindex directive can exclude a public page from search. Its absence only establishes eligibility, not that the page is indexed.

Decision rule: Fail: a noindex or none directive applies to all robots or Googlebot in a robots/googlebot meta tag or X-Robots-Tag header. Pass: none detected on the homepage. This does not test actual indexing, rendered directives, nosnippet, max-snippet, data-nosnippet or engine-specific preview eligibility.

Google crawl access8 pts

A blocked Googlebot cannot reliably fetch the page or see its indexing directives. robots.txt is a crawl control, not a way to secure private content.

Decision rule: Pass/fail: the final homepage path and query are allowed/blocked for Googlebot by the fetched robots.txt. A 4xx response other than 429 means no file restrictions. Network failure, 429 or 5xx means unknown. A missing file does not prove firewall access. We have no crawler cache history.

Page title8 pts

A descriptive, distinct title helps people identify the right result. Search engines can rewrite titles; there is no required character count.

Decision rule: Pass: every fetched page has a non-empty, distinct title other than Home, Welcome, Untitled or Index (case-insensitive). Partial: that condition fails but the homepage has a title. Otherwise fail. Incomplete page sampling cannot earn a full pass.

Main heading6 pts

A clear main heading tells readers what this page is about and gives search engines a prominent title signal. Multiple H1 elements alone are not a ranking violation.

Decision rule: Pass: each fetched page has a non-empty H1 other than Home, Welcome or Logo; on a supporting page it must also differ from the detected business name. Partial: that condition fails but the homepage has H1 text. Otherwise fail. Multiple H1s are allowed. Incomplete page sampling cannot earn a full pass.

Canonical URL6 pts

A consistent canonical helps consolidate duplicate URL signals. It is a hint, and legitimate cross-domain canonicals need human review.

Decision rule: Pass: the first HTML canonical (or, if absent, the canonical Link header) matches the final homepage URL after removing the fragment and trailing slash. Partial: a different canonical is declared. Fail: none found. A missing self-canonical is not a Google violation; Google can choose one itself. Alternate canonicals require human review.

Mobile performance5 pts

Slow loading, layout shifts and delayed responses can make a page harder to use. Lab measurements diagnose problems; field LCP, CLS and INP describe real visits.

Decision rule: With complete field data: pass when LCP ≤2,500 ms, CLS ≤0.1 and INP ≤200 ms; partial when all are ≤4,000 ms, ≤0.25 and ≤500 ms; otherwise fail. Lab fallback uses only LCP/CLS with the same boundaries and is not a CWV assessment. Missing LCP/CLS (or field INP) is unknown. The separate Lighthouse score is not used in this calculation.

Search description4 pts

A page-specific description can explain the offer in search results. Google may choose visible page text instead; the tag does not guarantee a snippet.

Decision rule: Pass: every fetched page has a non-empty, distinct meta description. Partial: that condition fails but the homepage has one. Otherwise fail. We do not assess persuasive quality or enforce a character target. Incomplete page sampling cannot earn a full pass.

HTTPS4 pts

HTTPS protects the connection and is part of a good page experience. It does not establish the accuracy or quality of the business.

Decision rule: Pass: the final homepage URL uses HTTPS. Fail: it remains HTTP. Missing schemes default to HTTPS; we do not downgrade after a TLS failure. Certificate/transport failure prevents a report rather than generating a zero.

Sampled links4 pts

Broken links interrupt a visitor’s next step and can obstruct discovery of supporting pages. This small sample is not a sitewide link audit.

Decision rule: Up to eight homepage links, same-origin first, no query strings or obvious action routes. HEAD, then GET only for HTTP 405/501. Any observed 404/410 fails this check. All sampled destinations returning 2xx/3xx passes. A timeout, block, server error or unattempted link is unknown. No eligible links is not applicable.

Sitemap3 pts

A sitemap can help engines discover canonical pages, especially on larger sites. It neither guarantees indexing nor replaces internal links.

Decision rule: Pass: sampled XML contains urlset or sitemapindex and at least one loc. We try /sitemap.xml, then up to three distinct robots.txt declarations and /sitemap_index.xml alternatives. Fail only after conclusive missing/non-sitemap responses. Blocked, timed-out, oversized, compressed or unattempted resources are unknown. We do not validate all URLs or index coverage. Small, well-linked sites may not need a sitemap.

GEO 24 points

AI search crawler access8 pts

Search and answer bots need permission to retrieve content. Allowing them establishes only a robots.txt prerequisite; firewalls, indexing and answer selection can still prevent visibility.

Decision rule: Five equal bot shares: OAI-SearchBot, PerplexityBot, Claude-SearchBot, Claude-User and Bingbot. For each, all sampled paths allowed earns 1, some earns 0.5, none earns 0. The 8-point check earns 8 × sum(shares) / 5, rounded to two decimals. Any unknown bot result makes the check unknown. Equal shares are editorial, not engine market share. We evaluate robots rules, not actual requests from those bots.

Business identity6 pts

Accurate business markup can clarify which organization a page describes. Detecting a schema type does not validate the markup or guarantee a rich result or AI mention.

Decision rule: Pass: at least one detected type belongs to the bundled schema.org Organization hierarchy and no sampled JSON-LD block fails JSON parsing. Partial: any other schema type, or an organization type with a malformed JSON-LD block. Fail: no recognized types. When supporting pages are unavailable and no malformed markup is observed, absence of an Organization type is unknown. JSON-LD and microdata types are detected, not full schema validity, ownership, sameAs accuracy or RDFa. Markup is optional and does not prove AI visibility.

Supporting pages6 pts

Readable service, about and contact pages give visitors supporting details and provide crawlable context beyond a homepage. Readability is not a quality verdict.

Decision rule: Select up to three distinct same-origin links without query strings, prioritizing URL tokens faq/questions, about/team, contact/location, then service. Exclude common file downloads and action routes. Pass: all selected URLs return readable HTML, even if aliases resolve to the same page. Any unavailable, robots-blocked or render-dependent page is unknown. No eligible links is not applicable; separate service pages are not required.

Local contact details4 pts

For a location-based business, consistent name, address and phone help visitors identify and contact the right place. This scan cannot verify external listings.

Decision rule: Applied only when sampled markup establishes LocalBusiness ancestry or an eligible Organization with address and phone. Pass: name, street-address and phone signals occur on one sampled page; otherwise partial. This is co-presence, not entity matching or consistency. Service-area businesses should review applicability and never publish a private address for points. Local status cannot be inferred from absent markup.

Informational No score weight

Question-and-answer format0 pts

Question-and-answer formatting is an optional content observation. Useful pages do not need an FAQ; counting questions cannot establish answer quality, relevance or AI citations. No score impact.

Decision rule: Informational, 0 points. Count distinct question headings/summary/dt, structured Questions, or the first 150 server-rendered button/answer pairs (adjacent panel or aria-controls target), with answers of at least 40 characters. Questions require at least 8 characters and a terminal question mark (including full-width), selected Korean question endings, or an explicit Q label. Toggle labels are removed; common marketing/feedback prompts are excluded. Two or more is shown as pass, one as partial, none as not applicable. These are parser conventions, not quality thresholds; language coverage is limited.

Authorship markup0 pts

Authorship is useful where readers expect it, such as advice and articles. A detected name is not verified expertise or an E-E-A-T score, and a homepage or application need not have a byline. No score impact.

Decision rule: Informational, 0 points. Detect a non-placeholder author meta, rel=author/itemprop=author text, an author string or a named Person outside review data; exclude the business name. Presence passes; absence is not applicable. This does not verify a real person, credentials, plain-text biographies or E-E-A-T.

Social sharing metadata0 pts

Open Graph metadata describes a page when it is shared. It is useful presentation metadata, not evidence of search ranking or AI visibility.

Decision rule: Informational, 0 points. Pass: og:title, og:description and og:image are all present on the homepage. Partial: one or two. Fail: none. This concerns sharing previews, not ranking.

Language alternatives0 pts

On translated equivalents, hreflang helps engines choose the relevant language or region. A single-language site does not need it.

Decision rule: Informational, 0 points. Check up to 30 homepage alternate/hreflang links for a resolvable URL and language-tag shape (or x-default). All pass; malformed values are partial; absence is not applicable. Return links, translated equivalence and language accuracy are not validated.

llms.txt0 pts

llms.txt is a proposal for organizing content for language models. Its presence is not an established inclusion or ranking requirement.

Decision rule: Informational, 0 points. A 2xx, non-HTML /llms.txt longer than 20 trimmed characters is recorded as present. Missing/unusable text is not applicable; fetch errors are unknown. The unofficial proposal is not a search inclusion requirement; we do not validate its format or claim that it increases citations.

The GEO paper presented at KDD 2024 studies visibility in a controlled benchmark. It supports measuring answer citations separately; its results do not predict your traffic or supply our weights. Comparing our checklist with seven full client audits did not reproduce their ranking: those audits also measured demand, authority and real AI answers.

Google’s AI-feature guidance requires ordinary search eligibility; it does not require special AI files, FAQ markup or a particular schema. E-E-A-T guidance is not an automated score. Since version 2026-10-20.2, FAQ format and authorship markup have zero weight; earlier versions assigned 10 and 6 points. We removed those penalties because the formats are not universal requirements.

Ahrefs’ observational brand study reports associations with off-site mentions, not proof that a particular edit causes citations. A 2026 preprint on retrieval and citations also cautions against inferring within-site effects from cross-site associations. Neither validates this checklist. An actual visibility study needs a representative query set, repeated runs, engine/model and locale records, citations and uncertainty; three Sonar questions cannot provide that.

IndexNow notifies participating engines of changed URLs. Acceptance confirms receipt, not indexing or ranking. This anonymous scan does not measure IndexNow submission history. For observed outcomes, use Search Console, analytics and Bing Webmaster Tools’ AI Performance with the site owner’s access.

Start with what GEO means, read how to help ChatGPT find your business, or see our AI search services.

Review the evidence in context.

Some choices, such as crawl restrictions or a cross-domain canonical, may be intentional. Confirm the intended audience and page purpose before acting on a recommendation.

Book a Free Consultation