# The GEO audit checklist

This is the actual checklist our diagnosis engine runs on every submitted site — 21 checks across five categories, published here in full. You can work through it by hand in an afternoon, or run the [free diagnosis](/#diagnose) and get the same result in minutes.

We publish it because a checklist you can verify beats a score you have to trust. Each item lists what to check, why it matters, and how to fix it.

## How to use this checklist

Work in order. Category 1 failures (crawlability) make every later category irrelevant — if crawlers cannot reach your pages, nothing else matters. Within each category, fix critical items before cosmetic ones.

Scoring tip: mark each item **pass**, **fail** or **unsure**. Every "unsure" is effectively a fail — it means you do not control that part of your stack.

## 1. Crawlability — can machines reach your pages?

### ☐ 1.1 Pages return HTTP 200 to crawlers

Fetch your key pages with a plain HTTP client, not just a browser. Bot challenges and WAF rules often pass humans while returning 403 or 503 to crawlers. **Fix:** allowlist verified bot user agents in your CDN/WAF.

### ☐ 1.2 No redirect chains

One redirect is fine; chains of two or more waste crawl budget and dilute signals. Check with a header tracing tool. **Fix:** point every old URL directly at its final destination.

### ☐ 1.3 No broken internal links

A link that returns 404 tells both search engines and AI retrievers that your site is poorly maintained — and it dead-ends the crawl. **Fix:** crawl your own site quarterly; update or remove links to dead pages.

### ☐ 1.4 No unintended noindex

A stray `noindex` meta tag or HTTP header removes the page from both search and AI retrieval. Common after staging-to-production migrations. **Fix:** grep your templates for `noindex` and confirm it is intentional on every page that has it.

### ☐ 1.5 Canonical URLs present

Every page should declare its canonical URL. Without it, parameter variations and www/non-www duplicates split your authority. **Fix:** add `<link rel="canonical">` pointing at the absolute preferred URL on every page.

## 2. Metadata — the text machines quote

### ☐ 2.1 Every page has a unique title

Duplicate titles across pages force machines to guess which page is authoritative. **Fix:** one title per page, unique across the site.

### ☐ 2.2 Title length is 10–60 characters

Too short fails to describe the page; too long gets truncated in results and diluted in retrieval. **Fix:** front-load the distinguishing words.

### ☐ 2.3 Every page has a unique meta description

AI answers frequently lift the meta description verbatim when summarizing a page. **Fix:** write it as the one-paragraph answer to "what is this page and who is it for".

### ☐ 2.4 Meta description length is 50–160 characters

Same reasoning as titles. **Fix:** one or two complete sentences; no keyword lists.

## 3. Structure — can machines parse the content?

### ☐ 3.1 Exactly one H1 per page

Zero H1s means the page's main claim is ambiguous; multiple H1s means competing claims. **Fix:** one H1 that states the page's primary subject.

### ☐ 3.2 Heading levels do not skip

H2 → H4 jumps break the document outline that both search engines and LLMs use to understand section hierarchy. **Fix:** never skip a level; restyle instead of misusing heading tags.

### ☐ 3.3 Images have alt text

Alt text is how visual content enters text-based retrieval. **Fix:** describe what the image shows, factually; skip decorative images with empty `alt=""`.

### ☐ 3.4 Pages link outward internally

A page with no internal links is a crawl dead-end and an orphan for retrieval. **Fix:** every page should link to at least one related page — guides link to guides, articles link to tools.

## 4. Content — is there anything worth citing?

### ☐ 4.1 No thin pages

Pages with very little text give models nothing to quote. "Thin" is usually under ~200 words of body content. **Fix:** consolidate thin pages into stronger ones, or expand them with the specific facts only you can provide.

### ☐ 4.2 Pages contain answerable statements

Not a separate rule in our engine, but the reason most fixes fail: a page must contain sentences that directly answer a buyer's question. **Fix:** for each key page, write the one question it should win, and make sure the literal answer exists in the text.

## 5. AI readiness — the GEO layer

### ☐ 5.1 robots.txt does not block AI crawlers

Check `https://yourdomain.com/robots.txt` for `Disallow` rules targeting `GPTBot`, `OAI-SearchBot`, `ClaudeBot`, `PerplexityBot`, `Google-Extended` and `CCBot` — including a blanket `User-agent: *` block. **Fix:** explicitly allow the crawlers you want visibility from, per bot, so the choice is deliberate.

### ☐ 5.2 An llms.txt exists at the domain root

`/llms.txt` is your machine-readable fact sheet: who you are, what you sell, which pages matter. Not a confirmed ranking factor, but the cheapest authoritative signal you can publish. **Fix:** generate a draft with our [llms.txt generator](/tools/llms-txt-generator), fact-check every line, and publish it at the domain root.

### ☐ 5.3 llms.txt matches your pages

A fact sheet that contradicts your pricing page creates exactly the inconsistency that produces AI hallucinations about your brand. **Fix:** update llms.txt whenever pricing, product scope or positioning changes.

### ☐ 5.4 Key pages expose structured data

JSON-LD (`Organization`, `WebSite`, `Product`/`SoftwareApplication`, `FAQPage`, `Article`) exposes facts you already publish in a form machines parse reliably. It creates nothing new — it makes existing facts unambiguous. **Fix:** start with Organization + WebSite site-wide, Product on pricing, FAQPage where you have real Q&A.

## The scoring reality

In our diagnosis data, the failures cluster predictably:

- **Most common:** missing llms.txt and blocked AI crawlers — invisible problems nobody checks because classic SEO tools do not look for them.
- **Most damaging:** crawler 403s and unintended noindex — the site is absent from the evidence set entirely.
- **Most underestimated:** thin content with no answerable statements — technically healthy pages that still never get cited.

A site that passes categories 1–3 but fails 4–5 is invisible to AI while ranking fine in classic search. That gap — searchable but not recommendable — is the defining SEO problem of this decade, and it does not appear in any traditional audit.

## Run it automatically

This checklist is the rule set of our audit engine. The [free diagnosis](/#diagnose) runs all 21 checks against your live site in minutes, adds AI visibility sampling across engines, and shows you exactly which items fail — with the evidence. For a point check, the [AI visibility checker](/tools/ai-visibility-checker) tests one buyer question against every configured AI engine.

## Related reading

- [What is generative engine optimization?](/guides/what-is-generative-engine-optimization)
- [How to create an llms.txt file](/guides/how-to-create-llms-txt)
- [Why doesn't ChatGPT recommend my brand?](/answers/why-does-chatgpt-not-recommend-my-brand)
- [Do I need an llms.txt file?](/answers/do-i-need-llms-txt)
