A citation is not grounding: the URL gate most AI research misses
- Providers return two different lists: the sources the model actually retrieved, and the citations the answer asserts.
- A citation becomes evidence only after it matches the retrieved set. Until then it is an assertion.
- Matching URLs takes real normalization: case, encoding, redirects, and registrable domains.
- Unmatched citations are dropped evidence. Keep them on the record; never promote them.
- The gate proves a source was used. It does not prove the source is true.
An AI visibility report lands on your desk. Forty citations of your domain this month, up from thirty. Before anyone celebrates, ask the question the report probably cannot answer: how many of those forty URLs did the model actually retrieve while it was writing, and how many did it simply print?
The distinction sounds pedantic until you watch it fail. A model can produce a plausible URL from memory that its search never touched. It can cite a page that belongs to a similarly named company. It can retrieve ten sources, use three, and cite one. If your measurement treats every printed URL as proof, your evidence base is part fact and part fiction, blended at an unknown ratio.
The takeaway
A citation becomes usable research evidence only after it passes a URL gate: the cited URL must match, after normalization, the source set the provider actually retrieved for that answer. Everything that fails the gate is dropped evidence, recorded but never promoted to a finding.
Grounding and citation are different claims
Grounding means the answer was produced with retrieved source material in front of the model. Citation means the answer points at a URL. The first is a fact about the process; the second is a claim inside the output. Research built on AI answers, which is what AI visibility measurement is, needs the process fact. And the process fact is checkable: the providers expose it.
The providers hand you both lists
Read the API documentation and the distinction is right there. OpenAI's web search guide returns inline citations and a separate sources field, “the complete list of URLs the model consulted when forming its response,” with a plain warning that the consulted list is often longer than the citation list. Anthropic's web search tool returns every retrieved result as its own block, then attaches per-passage citations, each carrying up to 150 characters of the exact cited text. Gemini's grounding output binds cited text segments to source URLs by character position.
So for the major APIs, as of mid-2026, you can hold two lists side by side: what the provider retrieved, and what the answer asserts. The gate is the comparison between them. Any measurement that skips it is trusting the model's self-report.
The six states of a citation
This is the ladder I run every citation through. In plain words: first collect what the provider fetched, then collect what the answer claims, then see which claims survive matching, cleanup, and a check that the page belongs to the right company. Each state is recorded; nothing silently disappears.
| State | What it means | What happens next |
|---|---|---|
| 1. Retrieved | The provider fetched this URL during the answer | Held as the evidence set |
| 2. Asserted | The answer points at this URL | Queued for the gate |
| 3. Matched | The asserted URL corresponds to a retrieved URL | Proceed to normalization checks |
| 4. Normalized | Match survives case, encoding, and variant cleanup | Proceed to the entity check (right company?) |
| 5. Accepted | Right URL, right entity | Counted as a grounded finding |
| 6. Dropped | Failed matching or the entity check | Preserved as dropped evidence, never counted |
The two ends of the ladder do the most work. State 1 is the provider's ground truth for that run. State 6 is the honesty mechanism: a dropped citation stays in the record with the reason it dropped, so the finding count is defensible and the failure pattern is itself measurable. A rising dropped-evidence rate tells you something about a platform, and you only see it if you keep the drops.
Here is the ladder on a made-up run, so the mechanism is visible. The answer asserts three URLs. The first is HTTPS://Example.com/ai-guide/?utm_source=chat; the retrieved set holds https://example.com/ai-guide/. After normalization, case folded, tracking parameter stripped, that is a match: accepted. The second is examplegroup.io/report, a real page from a similarly named company: it matches nothing in the retrieved set and fails the entity check: dropped, reason wrong entity. The third is a tidy-looking URL on your own domain that appears nowhere in the retrieved set: dropped, reason never retrieved. The honest count from that run is one grounded citation, not three.
Why matching URLs is harder than it looks
Two URLs that look different can be the same page. The URI standard, RFC 3986, is explicit that equivalence “is based on string comparison” only after normalization, and it defines a ladder of normalizations: hexadecimal case in percent-encodings, percent-encoded characters that should be plain, syntax cleanup, scheme rules. Practical matching adds more: tracking parameters stripped, trailing slashes reconciled, http and https reconciled, mobile and AMP variants mapped to their canonical page.
Then come the cases normalization cannot fix. In practice, some platforms hand back citation URLs wrapped in their own redirect services, so the string you get is not the string of the page that was read. For those, my method falls back to comparing registrable domains, the domain one level below a public suffix as defined by the Public Suffix List: example.com, or example.co.uk, rather than the full path. That fallback is a documented exception with a cost: it proves the model used the right site, at the loss of proving it used the right page. Write the exception down and apply it consistently, because a gate with silent exceptions is not a gate.
And one match class should never pass at all: the right-looking URL on the wrong entity. A citation of a namesake company's page can survive every string check. The entity check, matching the domain against the company's verified official domains, is the last rung for a reason.
What the gate cannot do
The gate proves use. It does not prove truth. A matched, accepted citation means the model had that source in front of it, which is exactly what a research finding needs to claim. Whether the source itself is accurate, current, and fairly represented in the answer is a separate evaluation, and the research field treats it that way: a 2025 survey of retrieval-augmented generation evaluation, Gan et al., lists factual accuracy as its own evaluation dimension, apart from system performance. Run the gate first. Then check claims against sources. The two steps answer different questions, and neither substitutes for the other.
One more honest limit: not every platform exposes retrieved-source metadata equally, and the field shapes change. Where the evidence is not exposed, the right state for a citation is unverifiable, not verified. Date-anchor what each provider exposed when you measured, and re-check when the docs move.
How I run this
The gate is implemented in a production research engine I helped architect and build at Trinzik, the Austin AI company I co-founded; Trinzik operates it for clients. Per answer, the engine stores the provider-retrieved source set separately from the model-asserted citations, normalizes both sides, applies vendor-aware matching with the documented registrable-domain exception, verifies official domains so wrong-entity citations get flagged instead of counted, and preserves every dropped citation with its drop reason. A finding is accepted only when its cited URL passes the gate. Grounded means cited or declined, and the gate is what makes “cited” mean something.
If you are evaluating a measurement vendor, one question does most of the work: show me the retrieved source set for this answer, and show me which of your reported citations matched it. A vendor who can answer has an instrument. A vendor who cannot has a screenshot pipeline.
Questions worth asking next
What is the difference between a retrieved source and a cited source?
A retrieved source is a URL the AI provider's search actually fetched and handed to the model while it worked. A cited source is a URL the finished answer points at. The two lists usually differ: OpenAI documents that the consulted-sources list is often longer than the citation list, and an answer can also assert a URL that appears in neither. Only a citation that matches the retrieved set should count as grounding evidence.
Why do AI citation counts from monitoring tools disagree?
Mostly because they count different things. One tool counts every URL printed in answers. Another counts only citations the provider tagged. A rigorous count matches asserted citations against the provider-retrieved source set after URL normalization, drops what does not match, and verifies the entity behind each match. Ask any vendor which of those counts they report.
Does a verified citation mean the AI answer is correct?
No. The URL gate proves the model had that source available when it answered, which makes the citation usable evidence. It does not prove the source itself is accurate, current, or about the right company, and it does not prove the specific claim in the answer appears in the source. Those are separate checks that come after the gate.
Sources
- OpenAI, Web search tool guide (citations and the sources field). https://developers.openai.com/api/docs/guides/tools-web-search
- Anthropic, Web search tool documentation (retrieved result blocks, per-passage citations). https://platform.claude.com/docs/en/docs/agents-and-tools/tool-use/web-search-tool
- Google, Gemini API grounding with Google Search. https://ai.google.dev/gemini-api/docs/google-search
- IETF, RFC 3986: Uniform Resource Identifier (URI): Generic Syntax, sections 6.1 and 6.2 on equivalence and normalization. https://www.rfc-editor.org/rfc/rfc3986
- Public Suffix List (Mozilla-initiated, community-maintained). https://publicsuffix.org/
- Gan et al., "Retrieval Augmented Generation Evaluation in the Era of Large Language Models: A Comprehensive Survey," arXiv 2504.14891, April 2025. https://arxiv.org/abs/2504.14891
About the practice behind this guide
I am Bob Michaels, a Web and AI Systems Architect in Austin, Texas. I have built the web since 1994, and today I run AI visibility measurement, complete web presence transformations, and custom AI system builds for organizations that want one accountable owner across all three. The measurement piece starts with a citation-gated head-to-head assessment: real buying questions across the five major AI platforms, with every citation run through the gate this article describes.
Evaluating me for an AI leadership role instead? The work record is here.