Measure AI visibility: one reading does not hold
Measuring AI visibility means counting how often an engine cites your site in its answers. The trap is that a single reading says almost nothing: our measurements show the sources change from one call to the next. Fast Growth Advisors publishes its method, its cost and its dated readings, with the link to run each search again.
How do you measure AI visibility?
On two grounds at once, and most people look at only one. Here is how we went about it on our own site, with the results as they came out.
The pages, first: what an engine can read of them, which crawlers come to fetch them, and which of them surface in its answers. These are facts that can be fixed.
The market questions, next: what the engine answers when a buyer asks about the category, and whom it gives the floor to. There, nothing is controlled, everything is observed.
The first conditions the second. A page an extractor discards will never be cited, however good it is.
The two are nonetheless fixed in different places, one in the template and the markup, the other in the message and the proof it carries. That is what justifies keeping them apart throughout this page, and never adding them into a single score.
Five instruments, two grounds, one dashboard. Each block in the diagram leads to the part of the page that details it.
What do we look at on our own pages?
Three things nobody looks at: what survives extraction, who actually comes to read us, and which of our pages surface in the answers.
1. What survives extraction
An engine does not read a page, it reads what an extractor pulls out of it. We fetch the page with an AI crawler user agent, exactly what it receives, then run it through the three reference extractors: trafilatura, jusText and Resiliparse. The three pages below belong to software vendors, two in HR software and one in workforce scheduling.
| Page | Text served | trafilatura | jusText | Resiliparse |
|---|---|---|---|---|
| HR software vendor A | 25,387 ch. | 59 % | 26 % | 95 % |
| HR software vendor B | 13,425 ch. | 23 % | 18 % | 40 % |
| Scheduling software vendor | 12,832 ch. | 49 % | 35 % | 91 % |
| This page | 9,671 ch. | 92 % | 88 % | 89 % |
On HR software vendor B, trafilatura keeps only 23 % of the served text. Four fifths of what the page says never reaches the engine. And the three extractors do not agree with each other: on that same page one keeps 23 %, another 40 %. Content can therefore reach one engine and vanish from another.
2. Who actually comes to read us
A crawler's declared user agent can be forged in one line. So we check every request against the IP ranges the vendors publish. Here is the result on our own servers, over seven days.
| Declared agent | Requests | Distinct addresses | Within published ranges | Outside |
|---|---|---|---|---|
| OAI-SearchBot | 454 | 48 | 82 | 372 |
| ChatGPT-User | 419 | 17 | 9 | 410 |
| GPTBot | 344 | 25 | 28 | 316 |
| Perplexity-User | 315 | 4 | 0 | 315 |
| PerplexityBot | 202 | 5 | 0 | 202 |
Out of 1,734 requests declaring an agent whose vendor publishes its addresses, 1,615 came from elsewhere, or 93 %. The ones presenting themselves as Perplexity were Google Cloud machines and a hosting provider, while Perplexity publishes only eight addresses.
What this measurement says, and what it does not. It covers our two sites, over seven days, and only the agents whose vendor publishes ranges. A published list can be incomplete or lag behind reality, so an address outside the ranges does not prove an intent to deceive. It does prove that a counter of AI visits built on the declared agent mostly measures something else.
Not all these crawlers want the same thing
Counting them together mixes two subjects with different consequences. Some collect training material, others build a search index, others read a page at the moment a user asks a question.
| Agent | Declared role | Requests on our servers |
|---|---|---|
| Googlebot | Search index, also feeds AI Overviews | 1,369 |
| Claude-User | Read triggered by a user | 455 |
| OAI-SearchBot | OpenAI search index | 454 |
| ChatGPT-User | Read triggered by a user | 419 |
| GPTBot | Collection that may serve training | 344 |
| Perplexity-User | Read triggered by a user | 315 |
| ClaudeBot | Collection that may serve training | 249 |
| PerplexityBot | Search index, no training according to the vendor | 202 |
| meta-externalagent | Meta collection | 178 |
| Bytespider | ByteDance collection | 162 |
| Applebot | Apple search index | 162 |
| CCBot | Common Crawl public corpus | 49 |
The consequence lands straight in robots.txt. Blocking a training collector costs no citations. Blocking an index crawler or a user-triggered reader removes the site from answers. Many sites block the second kind believing they are blocking the first.
One crawler in twenty hits a dead page
Over the same seven days we counted the share of requests that receive a 404 error. The result varies enormously from one crawler to the next.
| Agent | Requests | Share in 404 |
|---|---|---|
| CCBot | 49 | 30.6 % |
| ClaudeBot | 249 | 13.3 % |
| PerplexityBot | 202 | 6.4 % |
| OAI-SearchBot | 454 | 5.3 % |
| GPTBot | 344 | 4.9 % |
| Googlebot | 1,369 | 1.5 % |
The public reference measurement, published in late 2024, reported 34.8 % for OpenAI crawlers against 8.2 % for Googlebot. On our servers it is 4.9 % against 1.5 %. The order is the same, the scale is six times smaller, and that is exactly why a public measurement does not replace your own.
A dead URL is a lost source. The redirect plan, treated everywhere as a technical chore, is therefore a visibility matter.
3. Which pages get picked up, and which never
The question arises page by page, and the answer is surprising. A page with heavy search exposure may never be picked up, while a confidential one may be picked up one time in five.
| Page | AI impressions over 3 months | Share of its impressions | Cited by the probe |
|---|---|---|---|
| /observatoire/ | 7 | 20.6 % | no |
| /en/messaging-audit/ | 12 | 17.9 % | yes, 3 readings out of 6 |
| /visibilite-ia/ | 36 | 3.0 % | yes, on 3 questions |
| /audit-messaging/ | 4 | 4.6 % | yes, 6 readings out of 6 |
| /linkedin-algorithm-2026…/ | 20 | 1.9 % | no |
| /strategie-de-business-development/ | 0 | 0 % | no |
The Observatory is our most picked-up page, at 20.6 % of its impressions, for 34 impressions in total. The article on the LinkedIn algorithm has 1,043 and is picked up only 1.9 % of the time. Search volume and engine pick-up do not follow each other. A page can also be read without ever being cited, like our consulting page, present in search and absent from every generative answer.
White paper, counting bots →
White paper, the recoverable message →
What do we look at on our market questions?
What the engine writes when it is asked the questions of our category, and whom it gives the floor to instead of us. We put the question, archive the full answer, and keep the link that lets anyone run the search again. Without those three, a report cannot be verified.
4. One reading, in full
Here is one of ours, taken on our own market. Query audit messaging site web B2B, French market, French language, six readings between 1 and 2 September 2026. Google writes an answer to all six and cites our page every time.
| Element | Value |
|---|---|
| Question, word for word | audit messaging site web B2B |
| Market and language | France, French |
| First and last reading | 1 September 2026 at 18:40, 2 September at 16:36 |
| Number of readings | 6 |
| Result | cited 6 times out of 6, URL fast-growth.fr/audit-messaging/ |
| Organic position | 1st |
| Verification link | run this search again |
Why a single score means nothing
An engine that is asked a question does one of three things, and merging them manufactures a false problem. It answers and cites the site. It answers without citing it. Or it does not answer at all.
The third case is not invisibility, it is an absence of measurement. We met it while building the barometer question set: on business password managers, two different phrasings produced no written answer at all. The category exists, the market is crowded, and the engine writes nothing. Nobody is invisible there, there is nothing to see.
But the costliest trap lies elsewhere. Two pages labelled as cited can be in opposite situations.
| Question | Label | Cited in | What it really is |
|---|---|---|---|
| audit messaging site web B2B | cited | 6 readings out of 6 | always the same page, /audit-messaging/ |
| audit commercial startup B2B | cited | 6 readings out of 6 | three different pages across the readings |
A tool measuring once labels both as cited, and it is right both times. What it misses is elsewhere: on the first question Google always takes the same page, on the second it changes and cites the English version three readings out of six. The citation is secured, the page receiving it is not, and those are not the same works to undertake.
How many times must the same question be measured
More than once, and the number depends on the question. We replayed the same question eleven times in a row, seconds apart, on two markets.
| Market and question | Median overlap of sources | Domains present in all eleven |
|---|---|---|
| France, comparatif logiciel sirh pme | 62 % | 3 of 10 |
| United Kingdom, best hr software for small business | 100 % | 8 of 8 |
Stability is not a property of the instrument, it is a property of the question. On the UK question the engine returns exactly the same eight domains on every call. On the French one, two domains appear only once out of eleven. Sitting in the core is a position, appearing in the fringe is a passage.
What this measurement says, and what it does not. Two questions, one per market, on Google AI Overviews. It does not say France is unstable and the UK is stable. It says stability is measured question by question, and that we have not repeated the experiment on ChatGPT or Perplexity.
Ranking still decides who gets cited
This is the link everyone looks for between classic search optimisation and AI visibility. We measured it on the fifty barometer questions, comparing the sources Google cites with the organic results of the same query.
| What is measured | France | United Kingdom |
|---|---|---|
| Answers citing at least one of the top three results | 96 % | not measured this way |
| Answers citing the first result | 74 % | 57.5 % |
| Cited sources that appear in the ranking | 70.2 % | 46.5 % |
Ranking well remains necessary, and is no longer enough. Three cited sources in ten appear nowhere in the results of the same query in France, and more than one in two in the United Kingdom. A budget that funds ranking alone therefore leaves part of the ground to others.
Measuring on a single engine is not enough
Before choosing its sources, an engine decides whether to search at all. We put twenty questions to four engines, on two of our domains, and the gap is considerable.
| Engine | Searches the web | Citations issued | Of which to our sites |
|---|---|---|---|
| Perplexity | 100 % | 394 | 11 |
| Claude | 85 % | 269 | 4 |
| Gemini | 35 % | 71 | 10 |
| ChatGPT | 30 % | 34 | 2 |
Perplexity issues 394 of the 768 citations recorded, ChatGPT issues 34. The same editorial work therefore does not carry the same value depending on which engine buyers use. And Gemini, which cites five times less than Perplexity, cites us almost as often: an engine volume says nothing about the chances of appearing in it.
What the citations returned
Nothing, and this is the most uncomfortable result on this page. Over the same week our two sites received 1,376 crawler visits whose identity was verified, and 22 fetches triggered by a live user question. A human had therefore asked something, and the engine went to read our pages to answer them.
Not one visitor arrived on our sites from an AI answer. Zero. Citation and visit are two different things, and counting the first to forecast the second means confusing two measurements that do not follow each other. That figure is also a starting line, taken before any work: whatever moves next will be attributable.
5. What do we fix when the measurement is bad?
The two grounds above produce findings. Our audit tool turns them into work. It scores each page across four families and lists, rule by rule, what blocks: a lede too short, a title that does not carry the subject, a FAQ missing from the markup, a paragraph that refers to another without naming it.
On the page you are reading, the audit of 3 September 2026 puts the technical and SEO families above the advised threshold, and GEO below it. We leave that visible rather than remove proof to gain points: the tables add sections without adding questions, which the rule penalises. We preferred the proof to the points.
The four scores change with every edit to the page. Publishing them frozen in a table would mean publishing a stale measurement from the next revision onwards, which is exactly what we criticise in others.
What correction changes, at the scale of a market
These findings are not specific to us. The Message-Market Fit Observatory audits the sites of French startups after fundraising, on a grid of clarity and engine readability.
| What is measured | Result |
|---|---|
| Startups below the critical clarity threshold, set at 37.5 out of 75 | 75.9 % |
| Average message clarity | 5.33 out of 10 |
| Readiness to be cited by engines | 0.91 out of 5, or 18 % of potential |
| Link between amount raised and message clarity | R² = 0.036, in other words none |
Three startups in four fall below the threshold, and the money raised changes nothing. The last figure is the most useful: message clarity cannot be bought with a funding round, it has to be worked.
Fixing and verifying are two different jobs
Confusing them wastes time. The first instruments say what to change on a page, today. The second say whether the change produced an effect, weeks later.
| Instrument | Family | What it returns |
|---|---|---|
| SEO and GEO audit | Fixes | Four scores per page and the list of findings to handle, rule by rule |
| Three-extractor bench | Fixes | The share of text each extractor keeps, and what disappears |
| Question probe | Verifies | Whom the engine cites, on which questions, with the link to run the search again |
| Server log analysis | Verifies | Which crawlers come, from which addresses, and which are verifiable |
| Search Console | Verifies | Impressions, clicks, and share of impressions in generative features |
The cost makes the requirement affordable. With the provider we use, one question costs four thousandths of a dollar, so 0.20 dollar for fifty. We publish that figure because a measurement at that price has no reason to be replaced by an assumption.
The Google AI Overviews barometer, method and editions →
ChatGPT visibility, what the engine sees of your site →
876 impostors, what your AI traffic really hides →
6. Everything we measure, in one place
Here is the complete inventory, with for each line the question it answers and the most recent result. Nothing is estimated, everything can be replayed.
| What we measure | The question it answers | Latest result |
|---|---|---|
| State of each question | Does the engine answer, and does it cite the site | 73 readings on our 12 questions: 12 citations, 60 without citation, 1 no answer |
| Source stability | Does a citation hold from one call to the next | 62 % median overlap in France, 100 % in the UK |
| Core and fringe | Is this a position or a passage | 3 domains out of 10 present in all eleven readings |
| Ranking and citation overlap | Is ranking well enough to be cited | 70.2 % in France, 46.5 % in the UK |
| Engine comparison | Where content has the best chance | 768 citations, Perplexity 394, ChatGPT 34 |
| Source composition | Who occupies the ground of a category | 312 sources, 81 % sites, 15 % video |
| Language of issued queries | In which language the engine searches | 40 queries in French against 34 in English, 100 % English in IT |
| Extraction by three tools | What is left of the page for an engine | 23 % to 95 % of the served text depending on page and extractor |
| Composition of served weight | Does weight hurt citability | 30 % CSS and 23 % SVG on one measured page, with no effect on extraction |
| Crawler volume by agent | Who comes to read, and how often | 4,358 requests in seven days, Googlebot leading |
| Crawler identity verification | Is the declared agent the real one | 93 % outside the ranges published by the vendors |
| Declared role of each crawler | Training, index, or read on demand | 12 agents classified, with their volumes |
| 404 error rate by crawler | How many visits fall into nothing | 30.6 % for CCBot, 1.5 % for Googlebot |
| SEO and GEO audit per page | What blocks, rule by rule | Four scores and the list of findings, on every published page |
| Generative impressions | Which pages the engine picks up | 219 impressions out of 4,522, or 4.8 % |
| Visitors from an AI answer | Does citation bring traffic | 0 over the week measured |
| Message-Market Fit Observatory | Where an entire market stands | 369 startups, 75.9 % below the clarity threshold |
| Cost of measurement | What it costs to know rather than assume | 0.004 dollar per question, 0.20 dollar per edition |
Eighteen lines, five instruments, and not one substitutes for another. That is what makes a single score impossible: these measures share neither the same unit, nor the same ground, nor the same correction delay.
7. What would the dashboard look like?
Like this. Everything below comes from the measurements described above, on fast-growth.fr, between 1 and 2 September 2026, each block from a different instrument.
Three levels, in the order a director reads them. At the top, what Google answers on our market and whom it gives the floor to instead of us. In the middle, which of our pages it picks up and which it ignores. Only at the bottom, how it happens: the crawlers that visit, the composition of the sources and what the extractors keep.
The order is not decorative. A dashboard that opens with crawler names makes someone read plumbing when they are trying to find out whether their market knows them.
This dashboard does not exist as a product yet. The four instruments run, the measurements are real, and the screen that assembles them is still to be built. We prefer to show it this way rather than announce a platform that has not shipped. It calculates no global score either, and that is deliberate: a citation, a share of extracted text and a crawler visit do not offset one another.
FAQ
How do you measure AI visibility?
By measuring on two grounds at once. On the pages, what an engine can read of them and which crawlers actually come to fetch them. On the market questions, what the engine answers and whom it gives the floor to. The two are fixed in different places, and the first conditions the second. We set out the method here exactly as we apply it to fast-growth.fr.
Why does a single AI visibility score mean nothing?
Because it adds up situations that are not fixed in the same place. An engine can cite a site, answer without citing it, or not answer at all. The third case is not invisibility, it is an absence of measurement. And two cited pages can be cited once out of six readings or six out of six, which an average score erases.
How much does an AI visibility measurement cost?
Four thousandths of a dollar per question with the provider we use, so 0.20 dollar for fifty questions and roughly two euros a year for a set measured every month. We publish that cost because a measurement at that price has no reason to be replaced by an assumption, nor billed as a technical feat.
What do the engines answer in your category?
The free diagnostic puts five questions from your category to ChatGPT, Perplexity and Google AI Overviews. Answers archived, verification link included, causes read on both the message and the pages.
