# What is generative engine optimization?

Generative engine optimization, or GEO, is the work of making pages that AI assistants can fetch, understand and quote when they answer a question. Most of it is SEO done with more discipline: the same crawlable, well formed pages, written so that one passage can stand on its own as an answer.

By mttr. Published October 16, 2026. Updated October 26, 2026. About 6 minutes to read.

At a glance:

- 9.9%: Of article pages answer right under a question heading. Over the 4,276,309 article pages read, as of October 26, 2026.
- 89%: Of key pages carry their words in the HTML. Over the 5,923,925 pages it applies to.
- 9.8%: Of article pages put figures in a table. Over the 4,276,309 article pages read.
- 60 of 100: The median understand stage across ranked sites. Over the 287,848 sites ranked.

## Where does the term GEO come from?

The term comes from a 2023 paper, [GEO: Generative Engine Optimization](https://arxiv.org/abs/2311.09735), by Pranjal Aggarwal, Vishvak Murahari, Tanmay Rajpurohit, Ashwin Kalyan, Karthik Narasimhan and Ameet Deshpande, later accepted at KDD 2024. It treated an answer engine as a black box and measured how rewriting a source changed how much of that source showed up in the answer.

The authors tried nine rewrites, from adding quotations and statistics to stuffing keywords, on an answer engine they built from the top five Google results and an OpenAI model, and checked a sample on Perplexity. Adding quotations, adding statistics and citing sources did best: the strongest rewrites raised their visibility measures by about 40%. Keyword stuffing did worse than leaving the page alone. The gains were largest for sources that ranked lower to begin with.

Read that carefully. The measures were the share of words in an answer that came from a source, weighted by position, and a model's impression of how prominent the source was. That is not traffic and it is not a citation count on a live assistant. The rewrites were made by a model, on one test engine, in 2023. "Up to 40%" is a ceiling from a lab, not a promise for your pages.

## How is GEO different from SEO?

A search engine ranks pages and sends a person to one. An assistant reads several pages, writes one answer, and may name a few sources under it. The page still has to be fetched and indexed, so everything SEO asks for still holds. What changes is the unit that wins: a passage that answers one question cleanly, not a page that covers a keyword.

|  | A search engine | An assistant |
| --- | --- | --- |
| What it returns | A ranked list of pages | An answer, with a few sources or none |
| What wins | The page | The passage that answers |
| Who fetches | Googlebot, bingbot | The same, plus GPTBot, ClaudeBot, PerplexityBot and others, most of which run no script |
| What you can measure | Rank, impressions, clicks | Mentions and citations, often with no click at all |
| How you opt out | robots.txt and noindex | robots.txt for each crawler by name; Google's AI features follow its Search controls |

Our view, from reading the sites below: most of GEO is SEO that was always worth doing and mostly was not done. The genuinely new part is writing so a machine can lift one answer without the rest of the page.

## What do assistants actually need from a page?

They need the words to arrive in the HTML, a page structure that says what each part is, and passages that answer a question without leaning on the paragraph before. On the pages mttr has read, the basics mostly hold and the answer shapes mostly do not: 89% of key pages carry their words in the HTML, but only 9.9% of article pages put a short answer right under a question heading.

Pages that pass, by what an assistant needs:

| What an assistant needs | Pages that pass, higher is better | Rule | Pages counted |
| --- | ---: | ---: | ---: |
| The words in the HTML (pages a crawler that runs no script can read) | 89% | `content-in-html` | 5,923,925 |
| Structured data that parses (pages with valid JSON-LD) | 63% | `structured-data` | 15,202,701 |
| A heading phrased as a question (article and service pages) | 31% | `question-headings` | 5,634,535 |
| The answer right under it (article pages, 25 to 90 words under the first question) | 9.9% | `answer-first` | 4,276,309 |
| A table where figures are compared (article pages) | 9.8% | `has-table` | 4,276,309 |
| A date a reader can see (article pages) | 81% | `dated` | 4,276,309 |
| Sources a reader can follow (article pages) | 73% | `sources-shown` | 4,276,309 |

_Each a share of the pages its rule applies to. Counted over the 16,549,344 pages mttr has read on the 316,711 sites it has read, each site at its latest read, as of October 26, 2026. A site read only in part speaks only for the pages read. Each rule is in [the rulebook](https://mttr.si/rulebook)._

The weakest are the cheapest to fix. A heading that asks the reader's question and a paragraph that answers it is a writing habit, not a rebuild. So is a table: only 9.8% of article pages have one. A score or a rule passed says pages are well formed. It does not say an assistant cites the site.

One passage, before and after

Before:

```html
<h2>Our roof repair services</h2>
<p>At Acme Roofing we have been proud
to serve homeowners across the area for
many years, and we believe every
customer deserves honest work. Roofs
come in many shapes and sizes, and so
do the problems they face, from storms
to age to simple wear. That is why we
always recommend calling us first, so
one of our friendly team can come out
and take a look.</p>
```

- Fails: A heading phrased as a question
- Fails: The answer right under it, in 25 to 90 words
- Fails: Figures in a table
- Fails: A date a reader can see
- Fails: A source a reader can follow

After:

```html
<h2>What does a roof repair cost?</h2>
<p>Most roof repairs cost far less than
a new roof. A small leak or a few lost
shingles is usually fixed in a day;
storm damage across a whole slope can
take longer and cost more. We quote
every job for free after we have seen
the roof.</p>
<table>
  <tr><th>Job</th><th>Usual time</th></tr>
  <tr><td>Small leak</td>
      <td>Half a day</td></tr>
  <tr><td>Storm damage</td>
      <td>One to two days</td></tr>
</table>
<p>Updated <time datetime="2026-10-01">
October 1, 2026</time>. Source: <a
href="https://www.nrca.net/">National
Roofing Contractors Association</a>.</p>
```

- Passes: A heading phrased as a question
- Passes: The answer right under it, in 25 to 90 words
- Passes: Figures in a table
- Passes: A date a reader can see
- Passes: A source a reader can follow

Check the headings on one of your pages: https://mttr.si/h1-checker?url=<address>. The heading checker draws the outline a crawler reads, h1 to h6, so you can see at a glance whether any heading asks the reader's question.

## Which lines of work are easiest for an assistant to read?

The understand stage of mttr's score asks whether a machine can tell what a page says and lift an answer from it. Across the 287,848 ranked sites it has a median of 60 out of 100. Clinics and dentists lead at 71; News and publishers trail at 57.

Median understand stage, by line of work:

| Line of work | Median out of 100, higher is better | Sites ranked |
| --- | ---: | ---: |
| Clinics and dentists | 71 | 381 |
| Trades and home services | 69 | 23,518 |
| Real estate | 67 | 615 |
| Software and SaaS | 66 | 5,537 |
| Hotels and travel | 65 | 2,684 |
| Online shops | 65 | 2,225 |
| Auto repair and dealers | 65 | 1,241 |
| Lending, insurance and finance | 65 | 645 |
| Cities and public services | 64 | 196 |
| Restaurants and cafes | 63 | 2,081 |
| Law firms | 62 | 1,426 |
| Manufacturers and suppliers | 60 | 1,650 |
| Schools and courses | 59 | 626 |
| Agencies and studios | 57 | 4,122 |
| Nonprofits and charities | 57 | 1,940 |
| News and publishers | 57 | 1,830 |
| Every ranked site | 60 | 287,848 |

_Each a median of the understand stage, out of 100, over the ranked sites placed in that line of work. Counted from the 287,848 sites mttr has read, each at its latest read, as of October 26, 2026. Drafts and sites closed to crawlers are not ranked. A line of work with fewer than 20 sites is left out. A score or a rule passed says pages are well formed. It does not say an assistant cites the site._

See [the understand stage in depth](https://mttr.si/rulebook/understand) for what it holds, and [the leaderboard](https://mttr.si/leaderboard) for each line of work's own board.

## What does not work?

- Keyword stuffing. The GEO paper measured it as worse than doing nothing, and search engines have long treated it as spam.
- Meeting a check instead of the reader. mttr once asked an answer to carry a number, and writers met it by turning "three ways" into "3 ways". The rule now checks only what code can honestly check, and leaves whether a paragraph answers to a person.
- Text written for a model and hidden from people, including instructions to assistants. Assistants that read the web treat it as untrusted, and search engines treat hidden text as spam.
- FAQ data for questions the page never shows. It is rare, and it is the kind of mismatch that gets markup ignored.
- Expecting a file to do the work. An llms.txt is cheap and harmless, and nothing major has said it reads one. See [the llms.txt guide](https://mttr.si/guides/llms-txt).

## How do you check a page for GEO?

Read your site with mttr: it fetches the pages the way a crawler does and holds each to the same rules counted above, then lists the fixes worth the most. The free [schema markup checker](https://mttr.si/schema-checker) and [heading checker](https://mttr.si/h1-checker) look at one page, and the [AI crawler checker](https://mttr.si/ai-crawler-checker) reads your robots.txt.

Make your article pages answer first. Hand this to your agent:

> Use mttr to read yoursite.com and list the article pages that fail answer-first or question-headings. For each, propose a question heading in the words a reader would use and a 25 to 90 word answer right under it, taken only from what the page already says. Show me the changes before you make them, then have mttr read the site again.

The calls it makes: `mttr_brief({ site: "yoursite.com" })`, `mttr_pages({ site: "yoursite.com", kind: "article", failing: "answer-first" })`, `mttr_rescan({ site: "yoursite.com" })`.

### Make a page easy to quote

- The words arrive in the HTML, before any script runs.
- At least one heading asks the question a reader would type.
- The paragraph right under it answers in 25 to 90 words, without leaning on the paragraph before.
- Figures that are compared sit in a table.
- The page shows when it was updated, and its structured data says so too.
- Sources a reader can follow are linked where the facts are.
- Nothing on the page is written for a model and hidden from people.

`mttr_rules()`: Every rule, with its stage, weight and fix, for an agent

## Sources

- [GEO: Generative Engine Optimization](https://arxiv.org/abs/2311.09735): Aggarwal, Murahari, Rajpurohit, Kalyan, Narasimhan and Deshpande, 2023; accepted at KDD 2024
- [AI features and your website](https://developers.google.com/search/docs/appearance/ai-features): Google Search Central, on AI Overviews and the controls that apply to them
- [Creating helpful, reliable, people-first content](https://developers.google.com/search/docs/fundamentals/creating-helpful-content): Google Search Central

## How the figures were counted

Every figure here is counted from the 316,711 sites mttr has read, each at its latest read, with drafts left out, as of October 26, 2026. A share of pages counts only pages that were read. A score or a rule passed says pages are well formed. It does not say an assistant cites the site.
