Skip to content
siterank.info

AI visibility

How to Measure AI Mention Rate and Citation Rate

Exact numerators, denominators and confidence intervals for mention rate and citation rate, with worked numbers and the limits of each figure.

By ankitkumarvig@gmail.com Published September 9, 2026 Last reviewed September 9, 2026 Sources verified September 9, 2026 11 min read

Mention rate and citation rate are the two numbers most often quoted about AI search visibility, and the two most often computed wrongly. Both are simple proportions, so the whole question is what goes in the numerator, what goes in the denominator, and how much uncertainty sits around the result at the sample size you actually have. This article gives the formulas SiteRank AI uses, works them through with real arithmetic, and states where each number stops being useful.

The denominator problem comes first

Every rate here shares one denominator rule, and it does more work than the formulas themselves.

Only valid observations count. An observation is valid when the provider call completed with an ok status. Errors, timeouts, rate-limit rejections and blocked responses are excluded from the numerator and the denominator, and the excluded count is reported next to the metric.

The reasoning is straightforward. A failed API call is not evidence that the model omitted your site; it is evidence that you did not get an answer. Counting it as a non-mention treats absence of data as data, and it biases every rate downward exactly when the provider is unstable — which is to say, exactly when a chart is most likely to be misread as a real decline.

The counting rule that follows:

attempted   = all calls made in the window
valid       = attempted where status = ok
excluded    = attempted − valid          (reported, never silently dropped)

Every formula below uses valid, never attempted.

Mention rate

The mention rate counts one thing: a mention is the target entity being named in the generated answer text. Not the domain in a link — the entity in the prose.

mention_rate = observations where the target was mentioned
               ────────────────────────────────────────────
                          valid observations

Detecting a mention honestly

The formula is trivial; the entity matching is not. A brand name that is also a common word ("Notion", "Monday", "Arc") will match text that has nothing to do with the company. A brand with variants ("SiteRank AI", "SiteRank", "siterank.ai") will be missed by a naive exact match.

Three rules keep this defensible:

  1. Match against a declared alias set, not a single string. The site owner supplies the aliases; the tool does not guess them.
  2. Record the matched span. Every mention stores the text that triggered it, so a false positive can be found and the entity matching version bumped. SiteRank AI versions its entity matcher for exactly this reason — a change in matching logic changes historical numbers, so the rows record which version produced them.
  3. Never count the prompt. If the prompt names the brand, an appearance of the brand in the answer is not independent evidence. Branded prompts belong in their own segment.

Worked example

A prompt set of 10 unbranded category prompts, sampled 4 times each against one model with web search enabled, over one month. That is 40 attempted calls. Five fail: three timeouts, two rate-limit rejections.

Quantity Value
Attempted 45
Excluded (non-ok) 5
Valid observations 40
Observations mentioning the target 9
mention_rate = 9 / 40 = 0.225 = 22.5%

Reported as: 22.5% (9 / 40 valid observations, 5 excluded), 95% CI 12.3%–37.5%.

The interval is the part that matters. The point estimate says 22.5%; the data is consistent with anything from about one answer in eight to more than one in three. Anyone treating a move from 22.5% to 27% as an improvement is reading noise.

Citation rate, and the two different questions it answers

The term citation rate is ambiguous in common usage, so SiteRank AI splits it into two metrics with the same denominator and different numerators.

Metric Numerator Denominator Question it answers
Citation rate Observations with at least one citation to any source Valid observations How often does this prompt set produce a grounded, attributed answer at all?
Domain citation rate Observations citing the target domain Valid observations How often is our site among the sources?
citation_rate        = observations with ≥1 citation to any source / valid observations
domain_citation_rate = observations citing the target domain      / valid observations

The first is a property of the prompt set and the model configuration, not of your website. If it is low, the model is answering from parametric knowledge rather than retrieval, and no amount of on-site work will change the domain citation rate, because there are no citations to be part of. Checking it first prevents months of wasted effort.

What counts as a citation

OpenAI's web search tool documentation describes annotations containing url_citation objects with the URL, the title and the location of the citation in the text, and separately a sources field listing every URL consulted — a set the documentation notes is often larger than the citations. Only the citation annotations count. Counting the sources list would measure retrieval and label it citation, which inflates the number and breaks the crawled-versus-cited distinction that the rest of the discipline depends on.

Domain matching is on the registrable domain, after following the URL as returned. Subdomains and paths roll up; a citation to docs.example.com/x and one to example.com/y are both citations to the domain, and both are stored with their full URL so the roll-up can be inspected.

Worked example, continued

The same 40 valid observations:

Quantity Value Rate 95% CI
Observations with ≥1 citation to any source 31 77.5% 62.5%–87.7%
Observations citing the target domain 6 15.0% 7.1%–29.1%
Observations mentioning the target 9 22.5% 12.3%–37.5%

Read together, these three lines say something the mention rate alone cannot. Grounded, attributed answers are common on this prompt set (77.5%), so retrieval is happening. The site is named in 22.5% of answers but cited in only 15%, so on some answers the model is naming the brand from what it already knows rather than from a page it read. Those are different problems: the gap between them is a retrieval and source-selection problem, while a low mention rate with a high citation rate would be an entity-recognition problem.

Confidence intervals: why Wilson

At the sample sizes anyone actually runs — tens of observations, not thousands — the textbook normal approximation interval p̂ ± z√(p̂(1−p̂)/n) misbehaves badly. It produces intervals below 0 or above 1, and it collapses to zero width when is 0 or 1, which is precisely where a monitoring tool is most tempted to over-claim.

The Wilson score interval does not have those failure modes. At 95% confidence, with z = 1.96, p̂ = x/n:

              p̂ + z²/(2n)                 z              ⎧ p̂(1−p̂)     z²  ⎫
centre  =  ────────────────      half = ────────── × √  ⎨ ─────── + ───── ⎬
              1 + z²/n                   1 + z²/n        ⎩    n      4n²  ⎭

interval = centre ± half

Three examples of what that does at small n:

Observed Point estimate 95% Wilson interval
9 / 40 22.5% 12.3% – 37.5%
1 / 4 25.0% 4.6% – 69.9%
1 / 1 100.0% 20.7% – 100.0%

The last row is the important one. One API call in which the model mentioned you is consistent with a true rate anywhere from about one in five to certainty. Any tool that reports "100% mention rate" from a single observation without that interval is not measuring anything. SiteRank AI computes the interval at the actual n and returns it with every metric, alongside the numerator, the denominator and a plain-language definition string — a bare percentage is never returned.

The interval is not the only uncertainty

The Wilson interval covers sampling error under the assumption that observations are independent draws from a fixed process. Two things in this domain violate that assumption:

  • The process is not fixed. The web changes, the index changes, and the provider can change the served model mid-series. A change in the returned model or the prompt version breaks comparability, and the series should be marked with a break rather than drawn through.
  • Observations of the same prompt are correlated. Four samples of one prompt tell you less than four samples of four different prompts. Reporting volatility — the proportion of samples disagreeing with the majority for the same prompt under identical conditions — is what exposes this. Volatility near its 0.5 maximum means single observations are close to coin flips; near zero it means the model is consistent and the remaining uncertainty is mostly about which prompts you chose.

Treat the interval as the floor of your uncertainty, not the whole of it.

Segmenting so the number stays honest

One headline rate over a mixed prompt set hides more than it shows. Segment on the dimensions that change the answer:

Segment by Why
Prompt type (branded / comparative / unbranded) Branded prompts inflate mention rate mechanically
Web search on/off Grounded and ungrounded answers are different experiments
Model returned A different model is a different instrument
Locale Grounding is location-sensitive

Each segment gets its own numerator, denominator and interval. A segment with n=3 is reported with the interval that n=3 deserves, not merged into a larger pool to make the number look sturdier.

Limitations to state next to the number

  • This measures the provider API under recorded conditions. It is not what a person sees in a chat product, where the system prompt, orchestration, personalisation and model version differ and are not disclosed. The distinction is developed in how LLM visibility monitoring actually works.
  • It is not a ranking. There is no ordered result list in a generative answer, so there is no position and no "rank".
  • It is not causal. A rise in mention rate is association. Model updates, index refreshes, competitor publishing and sampling noise all move the number simultaneously, and none of them can be isolated from a monitoring series alone.
  • It is scoped to your prompt set. The rates describe the questions you chose. A different prompt set produces different rates on the same site, and neither is more "true" than the other.
  • Volume is unknown. Nobody knows how many real people ask these questions. Google reports AI Overviews and AI Mode clicks inside Search Console's Performance report under the "Web" search type rather than as a separate breakout, so there is no first-party volume figure for AI answers to weight a prompt set against.
  • Entity matching is imperfect. Ambiguous brand names produce false positives; unusual variants produce false negatives. Both are inspectable through the stored matched spans, which is why the spans are stored.

Evidence tiers for the practices in this article

Practice Tier
Exclude failed calls from both numerator and denominator ESTABLISHED STANDARD (basic measurement practice)
Report a Wilson score interval at the actual n ESTABLISHED STANDARD (Wilson 1927, standard binomial proportion method)
Count only citation annotations, not the consulted-sources list OFFICIAL PROVIDER GUIDANCE (OpenAI documents the two fields separately)
Separate mention rate from domain citation rate STRONG EVIDENCE (they measure mechanically different events)
Segment branded prompts from unbranded EMERGING PRACTICE
Interpreting a mention-minus-citation gap as a retrieval problem HYPOTHESIS — a plausible reading of the data, not a demonstrated mechanism

The last row is deliberate. The interpretation in the worked example above is reasoning, not evidence, and it is labelled as such rather than presented as a diagnosis.

Key takeaways

  • Valid observations only. Report the excluded count every time.
  • Mention rate and domain citation rate answer different questions and never merge into one score.
  • Check the overall citation rate first: if the prompt set rarely produces grounded answers, the domain citation rate cannot move.
  • Wilson at the actual n, always shown. At n=1 the honest interval spans most of the range.
  • Segment before you headline, and let small segments carry their wide intervals.
  • Every figure here is scoped to one prompt set, one model configuration and one window, and describes an API rather than a consumer product.

Official sources & further reading

Frequently asked questions

How many observations do I need before the interval is narrow enough to be useful?

Work backwards from the change you need to detect rather than picking a round number. In the worked example above, 40 valid observations around a rate of 22.5% produce an interval about 25 percentage points wide, so only large movements are separable at that scale; halving that width costs considerably more than doubling the sample. A practical reading: if the intervals from two windows overlap heavily, the data does not distinguish them, whatever the point estimates did. Either add observations until the interval is narrower than the difference you care about, or publish the number with its interval and decline to call small moves improvements.

Does a 95% confidence interval mean there is a 95% chance the true rate is inside it?

No. It is a property of the procedure, not of the particular interval: if the whole sampling exercise were repeated many times, about 95% of the intervals built this way would contain the true value. The one interval in front of you either contains it or does not. More usefully, it accounts for sampling error only, under an assumption of independent draws from a fixed process — and as the section above sets out, this process is not fixed and repeated samples of one prompt are correlated, so the interval is the floor of the uncertainty rather than all of it.

Can I compare my citation rate with a figure another company has published?

Not meaningfully, unless they published the prompt set, the model configuration, the window and the denominator rule, which is rare. These rates are scoped to the questions you chose: a different prompt set on the same site yields a different rate, and neither is more true than the other. A vendor that counts the consulted-sources list as citations, or counts failed calls as non-mentions, is reporting a different quantity under the same name. Comparisons hold within one prompt set over time, or between entities measured on the same prompt set in the same run — which is what share of voice does, with denominator caveats of its own.

Which of these numbers should I act on first?

The overall citation rate, because it tells you whether there is anything to compete for. When a prompt set rarely produces grounded, attributed answers, the domain citation rate has no room to move, and on-site work is aimed at a mechanism that is not running for those questions. Where grounded answers are common, the gap between mention rate and domain citation rate is the more interesting figure — but treat that gap as a hypothesis worth investigating, not a diagnosis, exactly as the evidence table above marks it.

Our brand name is an ordinary word. Does that break the mention rate?

It makes false positives likely, which is why every mention stores the span of text that triggered it. Review those spans across a sample of observations before trusting the rate, and tighten the declared alias set — requiring the fuller form of the name, for example — rather than letting a common word match anything. Bear in mind that changing the matching rules changes historical numbers, so the entity-matcher version is recorded on every row, and a series that straddles a version change is two series rather than one.