Scoring methodology

By the HowsMyGEO team · Published 2025-11-03 · Updated

Every HowsMyGEO scan runs 21 deterministic checks against a single URL: 14 traditional SEO checks and 7 GEO (Generative Engine Optimization) checks. Each check earns points toward a 100-point category score. The combined grade is the average of the two scores: A ≥ 90, B ≥ 80, C ≥ 70, D ≥ 60, F below 60. The tables below are generated from the same code that computes the scores, so they cannot drift from production behaviour.

SEO score — 100 points across 14 checks

These are the classic on-page and technical factors search engines weigh. Weights favour the signals with the most documented ranking impact: titles, structured data, performance and HTTPS.

CheckWeightWhat passes
Title tag10 ptsA title tag exists, is 15–60 characters, and front-loads its subject rather than the brand name.
Meta description8 ptsA meta description exists and is 50–160 characters.
H1 heading8 ptsExactly one H1 exists and is descriptive (more than 3 characters).
Heading hierarchy6 ptsHeading levels descend without skips (an H2 follows an H1, not an H4).
Image alt text7 ptsPercentage of <img> elements carrying a non-empty alt attribute. Full points at ≥90%, partial at ≥50%.
Internal links4 ptsBetween 3 and 300 same-host links, indicating crawlable site structure.
Canonical tag5 ptsA rel=canonical link element is present.
robots.txt6 ptsrobots.txt exists and does not block all crawlers from the audited page.
sitemap.xml6 ptsA sitemap exists at /sitemap.xml or is declared in robots.txt; extra credit for the robots.txt reference.
HTTPS8 ptsThe page is served over HTTPS.
Mobile viewport6 ptsA viewport meta tag is present for mobile rendering.
Performance10 ptsServer-measured time-to-first-byte (full points under 500ms) and HTML payload size (full points under 512KB).
Open Graph & Twitter cards7 ptsog:title, og:description, og:image and twitter:card are present.
Structured data (JSON-LD)9 ptsAt least one valid JSON-LD block with a recognized @type parses without errors.
Total100 pts

GEO score — 100 points across 7 checks

GEO measures whether AI answer engines — ChatGPT, Claude, Perplexity, Google AI Overviews — can find, read and cite a page. The two heaviest weights go to AI crawler access (25 points) and content extractability (20 points), because either failure makes a site effectively invisible to AI engines regardless of everything else.

CheckWeightWhat passes
llms.txt10 ptsAn llms.txt file exists at /llms.txt describing the site for AI crawlers (emerging standard).
AI crawler access25 ptsrobots.txt allows GPTBot, ClaudeBot, PerplexityBot, Google-Extended and CCBot (5 points each). Blocking these bots removes the site from AI answer engines.
Content extractability20 ptsThe main content is present in server-rendered HTML. AI crawlers largely do not execute JavaScript, so client-only rendering makes a page invisible to them.
Answer-shaped content15 ptsQuestion-style headings, FAQ schema, and definition sentences that answer engines can lift and cite verbatim.
Factual density10 ptsConcrete statistics, dates, percentages and named entities per 1,000 words. AI engines preferentially cite specific, factual content.
Author & entity signals10 ptsAuthor bylines, an About page, and Person/Organization schema that feed AI attribution and trust.
Freshness signals10 ptsMachine-readable published/modified dates and visible dates on the page.
Total100 pts

How measurements are taken

Limitations

A scan audits one URL, not a whole site. Sites that block our fetcher, respond slowly, or serve bot-specific content may receive partial reports — when that happens the report says exactly which checks could not run. Scores are a diagnostic, not a guarantee of ranking or citation.