GEO score
The headline number combines the two things that decide whether an AI assistant sends customers to you: how well your website can be read and trusted, and whether the assistants actually mention you.
GEO score = 60% × website health + 40% × AI visibility
If the assistants could not be asked - a provider was down, or none were available - there is no AI visibility figure, so there is no GEO score either. The report then leads with website health instead, and says so. We never count a failed question as a zero, and we never fill the gap with an estimate.
Website health
A weighted average of four section scores, rounded to a whole number. We read up to 50 pages of your site, starting from the homepage and your sitemap, and only where your robots.txt allows it.
| Section | Weight | What it asks |
|---|---|---|
| Technical foundations | 30% | Whether search engines can reach, read and index your site. |
| Content & relevance | 25% | Whether each page says clearly what it is about. |
| Experience & engagement | 15% | Mobile readiness, accessibility and sharing signals. |
| Answer engine readiness | 30% | Whether AI assistants and rich results can read and trust your content. |
How a section score is built
- Every check has an impact tier that sets what it is worth: high = 20 points, medium = 10 points, low = 4 points.
- A page check earns points in proportion to the share of pages that pass it. The homepage counts as 3 pages because it is where most visitors and crawlers start. Pages a check does not apply to are left out, not counted as passes.
- Because one bad page in a large site would barely move a percentage, a failing check never loses less than a minimum share of its points: 25% for high-impact checks, 10% for medium. That keeps a single page set to
noindexfrom hiding behind forty healthy ones. Low-impact checks have no floor. - A site check (robots.txt, sitemap, HTTPS, redirects and similar) earns full, partial or no credit, as its test decides.
- A section score is points earned ÷ points available, counting only checks that applied to your site. A site with no images is not scored on image alt text at all.
Index-blocking cap. If your homepage is set to noindex, or robots.txt disallows the whole site, search engines cannot list you at all. The overall score is capped at 40 in that case, so a pile of unrelated passing checks cannot make a site that is invisible to search look healthy. The report says when the cap applied.
Pages that blocked our crawler (a bot wall or firewall) are reported as such and left out of the scores rather than counted as failures.
The checks
This list is generated from the same code that runs your audit, so it is always current. Each check records which pages it affected, why it matters and how to fix it; the full report and the CSV export carry all of that.
Technical foundations · 30% of website health
- Pages can be indexedEvery page · High impact (20 pts)
- Canonical tags point at the right pageEvery page · Medium impact (10 pts)
- Pages declare a canonical URLEvery page · Low impact (4 pts)
- Page language is declaredEvery page · Low impact (4 pts)
- robots.txt lets search engines inWhole site · High impact (20 pts)
- An XML sitemap lists your pagesWhole site · Medium impact (10 pts)
- The site is served securely over HTTPSWhole site · High impact (20 pts)
- www and non-www resolve to one versionWhole site · Low impact (4 pts)
- Internal links don't lead to errorsWhole site · Medium impact (10 pts)
- Pages load without redirect detoursWhole site · Low impact (4 pts)
Content & relevance · 25% of website health
- Pages have a titleEvery page · High impact (20 pts)
- Titles are a useful lengthEvery page · Low impact (4 pts)
- Pages have a meta descriptionEvery page · Medium impact (10 pts)
- Meta descriptions are a useful lengthEvery page · Low impact (4 pts)
- Pages have a main heading (H1)Every page · Medium impact (10 pts)
- Pages have enough copy to answer the questionEvery page · Low impact (4 pts)
- Pages link onward to other pagesEvery page · Low impact (4 pts)
- Every page has its own titleWhole site · Medium impact (10 pts)
- Every page has its own meta descriptionWhole site · Low impact (4 pts)
Experience & engagement · 15% of website health
- Pages are set up for mobileEvery page · High impact (20 pts)
- Images have alt textEvery page · Medium impact (10 pts)
- Pages have share previews (Open Graph)Every page · Low impact (4 pts)
- Pages download quicklyWhole site · Low impact (4 pts)
Answer engine readiness · 30% of website health
- Content is in the HTML, not built by JavaScriptEvery page · High impact (20 pts)
- Structured data is validEvery page · Medium impact (10 pts)
- Articles carry Article markupEvery page · Low impact (4 pts)
- Long pages answer questions under question headingsEvery page · Low impact (4 pts)
- AI search crawlers are allowed inWhole site · High impact (20 pts)
- The homepage says who you are (Organization markup)Whole site · Medium impact (10 pts)
- Your official profiles are linked from your markup (sameAs)Whole site · Low impact (4 pts)
- Location details are in your markupWhole site · Medium impact (10 pts)
A few facts are shown but not scored because they do not have a proven effect on rankings or AI answers - for example whether you publish an llms.txt file, or what your robots.txt says to AI training crawlers.
Points gained per fix
The fix list is ranked by how many points of your overall score fixing it would add, calculated by re-scoring your site as if that check passed everywhere. Fixes worth about the same are ordered quickest first. It is a gain on this audit's score, not a forecast of traffic or rankings, which depend on far more than any audit can see.
Fixes that come from the AI answers (for example, “get listed on the sites the assistants cite”) carry an impact tier but no point figure, because there is no scoring model behind them to calculate one honestly.
AI visibility
We put the same questions to ChatGPT, Claude, Gemini and Perplexity - using their own APIs - and record what each one says. Every answer is saved word for word in your report.
The questions
- 5 discovery questions are what a new customer would type when they do not know you, such as “What are the best [what you offer] providers in [your city]?” They never contain your business name. These are the only questions that are scored.
- 3 brand questions ask directly about your business. Naming you here is easy, so they are never counted in the score. They are shown so you can see whether the assistants know who you are and say anything wrong.
- The “what you offer” and “where” wording comes from the business name, offer and area you confirm on the intake form. If you left the offer blank we infer it from your homepage and label it as an inference. If we can't work one out we skip the discovery questions rather than ask about a guess.
What counts as a mention
An answer counts when it names your business (matching the business name or your domain, ignoring capitalisation, punctuation and suffixes like “LLC”) or cites a page on your site as a source. Common words that happen to be your name only count when they appear capitalised like a name. The report tells you which of the two happened for each answer.
The score
AI visibility = discovery answers that named or cited you ÷ discovery answers received
- Only answers that came back are counted. A timeout, a rate limit or an unconfigured provider is shown as not measured, never as a miss.
- A score is published only if at least 3 discovery answers came back. Below that, the report shows what it has and says it is too little to score.
- Per assistant, a mention rate of 60% or more is labelled Strong, 30% or more Moderate, anything above zero Low, and zero Not mentioned.
- Web search is switched on for each assistant wherever it offers it, because that is how people increasingly use them. Each assistant in your report is labelled searched the web or answered from its own knowledge, and the two are not directly comparable. If web search fails for an assistant we retry without it and label the result accordingly.
Who the assistants named, and where they looked
Competitors you listed are counted the same way as you. Other businesses the assistants named in their lists are picked out automatically and shown as found in answers; treat that parsing as a pointer and check it against the transcript. The sources table counts the sites the assistants linked to, which only assistants using web search provide.
Competitor benchmark
Each competitor you list (up to 5) goes through the same audit as your own site - the same checks and the same weights - but is capped at about a dozen pages instead of 50. That is a lighter read, so treat gaps of a few points as noise. The report compares overall and section scores and, per rival, lists where it is ahead of you and where it trails. Where the assistants named a listed competitor, that count is shown alongside. Competitor suggestions on the intake form are drawn from your homepage and each domain is confirmed to load - but you decide who your competitors are.
AI crawler access
We read your robots.txt the way a crawler does (RFC 9309: the most specific rule wins, and an explicit Allow beats an equally specific Disallow) and report what it tells each AI crawler. Only the crawlers that power AI search are scored, because blocking them is what keeps you out of AI answers: OAI-SearchBot, PerplexityBot, Claude-SearchBot. Crawlers that fetch a page when a person asks, and crawlers that collect training data, are listed but not scored: blocking training is a legitimate choice.
OAI-SearchBot· OpenAI · AI search (scored)PerplexityBot· Perplexity · AI search (scored)Claude-SearchBot· Anthropic · AI search (scored)ChatGPT-User· OpenAI · Fetches pages for a user (not scored)Perplexity-User· Perplexity · Fetches pages for a user (not scored)Claude-User· Anthropic · Fetches pages for a user (not scored)GPTBot· OpenAI · Model training (not scored)ClaudeBot· Anthropic · Model training (not scored)Google-Extended· Google · Model training (not scored)Applebot-Extended· Apple · Model training (not scored)CCBot· Common Crawl · Model training (not scored)
What the audit can't tell you
- AI answers vary. The same question can get a different answer tomorrow, or when phrased differently. Our result is 5 questions per assistant at one moment - a measured sample, not a ranking or a guarantee. With so few answers, one more or fewer mention moves the percentage a lot.
- It isn't what your customers see. Real users have different histories, locations and settings, and most are not using the API versions we query.
- It doesn't see your rankings, traffic or backlinks. Those need Search Console, analytics and a backlink index, which a public audit doesn't have. Page speed is measured only as how fast pages download to our crawler, not as Core Web Vitals.
- It reads what a crawler receives. Content that only appears after JavaScript runs is flagged as a problem because many crawlers don't run it, but we can't render every page the way a browser does. Pages behind a login or a bot wall are skipped and reported.
- Large sites are sampled. When your site has more than 50 pages, percentages describe the 50 we read - those reachable soonest from the homepage - and the report says so.
- Older reports. Audits made before this method existed are still viewable, but their AI figures came from a method we no longer trust, so they are not shown. Run a new audit for a measured result.
What we stopped measuring
Earlier versions of this audit reported things that did not stand up. We removed them:
- “Share of voice” and the LLM “visibility score.” These blended each assistant's own confidence rating into a percentage and counted failed questions as misses. Neither reflects what the assistants said.
- Predicted competitors by industry. Guessing rivals from a few keywords produced confident but wrong comparisons. You now name your competitors, or we suggest some from your homepage and check that they load.
- HowTo and FAQ schema as scored items. Google retired HowTo rich results and now shows FAQ results only for a few authoritative sites, so missing markup costs a typical site nothing.
- “Only one H1” and Twitter-card checks. Multiple H1s are valid HTML, and X falls back to Open Graph tags.
