// methodology
What the instant audit checks, and how it decides.
The Synapse instant audit reads one URL from our server and runs up to 18checks on what comes back. Each result shows the evidence it was decided from. There is no score. This page describes the tool as it runs today.
The short version
We read your robots.txt, fetch your page and ask for an llms.txt. That happens on our server, not in your browser, and we read the HTML without running any of its JavaScript. Every check comes back as pass, needs work, fail or for information, with what we saw. We do not add them up into a number, because a number would imply a model of search we do not have.
How we fetch
- Requests made
- Three, normally, in this order: /robots.txt, the URL, and/llms.txt. If the URL redirects to another host, we read that host's robots.txt as well. We do not fetch your sitemap and we do not crawl your site. One URL per run.
- Redirects and size
- We follow up to four redirects and check every hop against the same address rules. We ask for the page uncompressed and read up to about 2 MB of it. If less than the whole page arrives, the report says so.
- Who we say we are
- SynapseAuditBot/1.0 (+https://synapsereality.io/tools/instant-audit/methodology/). The URL in it is this page. We never send a browser user agent. To block us, disallowSynapseAuditBot in robots.txt.
- Rules we obey
- Your robots.txt, for our own agent. If you disallow us, the run stops and says so. We do not go around it. Rate-limited per address, and requests to private, loopback and link-local addresses are refused outright. An audit tool that will fetch any URL you hand it is a server-side request forgery machine pointed at its own network.
- What we keep
- The findings, for 24 hours. A run stores the URL you gave us, the findings and a keyed hash of your IP address that we use for rate limiting. After 24 hours the whole record is deleted and the result link stops working. We do not store your page's HTML. The findings quote only short extracts, such as your title and headings.
- What we do not do
- No login, no form filling, no JavaScript execution, no screenshots, nothing behind a paywall or a geo-block. We read what an answer engine would read, which is the point.
How a result is decided
- 01
Every check returns pass, needs work, fail or for information. The rule for each is in the tables below.
- 02
Every check carries the evidence it was decided from where there is any, such as the title we found or the agents a rule blocks. You can disagree with us line by line.
- 03
If only part of the page arrived, any check that needs the whole page is marked needs work and says it could not be established. It never passes on missing bytes.
- 04
An unreadable robots.txt is reported as unreadable. It is a different fact from a permissive one, and the access checks are not run on it.
- 05
There is no total. The report counts passes, needs-work, fails and information results, and stops there.
The answer-engine agents we check are OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, Googlebot, Bingbot, Applebot, DuckAssistBot, MistralAI-User. The training crawlers we report on are GPTBot, ClaudeBot, Google-Extended, CCBot, Applebot-Extended, Amazonbot, meta-externalagent, Bytespider.
Every check
The basics
The elements every engine reads first to decide what the page is and how to show it.
| Check | How it is decided | Evidence shown |
|---|---|---|
| Title element | Fail if there is no <title>. Pass at 15 to 65 characters. Needs work outside that range, where titles are usually cut off or too thin. | The title text |
| Meta description | Needs work if missing, because engines then write their own summary. Pass at 50 to 165 characters, needs work outside it. | The description text |
| Primary heading | Pass for exactly one <h1>. Fail for none. Needs work for more than one. | The heading text, up to three of them |
| Document language | Pass if the <html> element declares a lang attribute, fail if not. WCAG 2.2 requires it (3.1.1). | The language code |
| Responsive viewport | Pass if a viewport meta tag is present, fail if not. Without one a phone renders the page at desktop width. | The tag content |
| Canonical URL | Pass if rel=canonical is declared on the same host. Needs work if it points at another host, or if there is none. | The canonical, resolved to an absolute URL |
Indexability
A noindex removes the page from results outright. It is usually left behind by a staging setup or a CDN rule.
| Check | How it is decided | Evidence shown |
|---|---|---|
| Indexability | Fail if the robots meta tag or the X-Robots-Tag header says noindex or none, for every crawler or for one this tool names. Pass otherwise. | The directive and where it was found |
Content in the HTML
Vercel and MERJ found that none of the OpenAI, Anthropic, Meta, ByteDance or Perplexity crawlers render JavaScript. Gemini and Applebot do. Copy painted by a script is invisible to the rest.
| Check | How it is decided | Evidence shown |
|---|---|---|
| Content in the initial HTML | Fail if fewer than about 600 characters of text arrive alongside three or more scripts. Pass otherwise. We run none of the JavaScript. | None. The detail gives the character and script counts. |
| Image alternatives | Run only when the page has images. Pass if every <img> carries an alt attribute, fail if any has none. | None. The detail gives the count. |
Structured data and sharing
Schema buys entity disambiguation and a few rich results. Google states that there is no special structured data for AI Overviews or AI Mode.
| Check | How it is decided | Evidence shown |
|---|---|---|
| Structured data | Needs work if there is no JSON-LD. Fail if any block does not parse, since engines then ignore it entirely. Pass otherwise. | The @type values found |
| FAQPage markup | Reported only when FAQPage is found, as needs work. The FAQ rich result was deprecated on 7 May 2026, so the markup is inert. | None |
| Share preview | Pass if og:title, og:description and og:image are all present. Needs work if any is missing. | None. The detail gives how many of the three were found. |
Answer-engine access
Access control is the one answer-engine lever with unambiguous primary-source evidence behind it. An engine that is blocked cannot cite you.
| Check | How it is decided | Evidence shown |
|---|---|---|
| robots.txt | Needs work if robots.txt could not be read: any answer other than 200 or 404. A 404 means no rules, which allows everything. This result replaces the next three. | The HTTP status |
| Answer-engine access | Fail if robots.txt blocks any answer-engine agent below from this path. Needs work if only part of the file was read. Pass otherwise. | The agents that are blocked |
| Training-crawler access | Reported for information, and only when a training crawler below is blocked. That is a policy choice with no effect on citation. | The agents that are blocked |
| Sitemap declaration | Pass if robots.txt has a Sitemap line, needs work if not. We read the line. We do not fetch the sitemap. | The first sitemap URL named |
| llms.txt | Reported for information whether or not one exists. It is never a pass or a fail, because no production answer engine is documented as reading it. | None |
Delivery
One fetch from our server cannot measure your Core Web Vitals. It can say how much HTML there is and how long it took to arrive here.
| Check | How it is decided | Evidence shown |
|---|---|---|
| HTML weight and response | Reported for information. The bytes of HTML received and the time the fetch took, from our server. We ask for the page uncompressed, so this is not the size on the wire. | None. The detail gives both numbers. |
Why there is no citation probe
This tool does not query any answer engine today. It checks whether an engine can reach and read your page, which you can fix, and stops there. People ask about citation tracking more than anything else. If we add a probe that puts fixed questions to the engines, it will be reported apart from the checks, for three reasons.
- It is not reproducible. Ask the same engine the same question twice and the cited set can differ. A result built on that would move without your site moving.
- It measures the prompt as much as the page. Change the wording and the sources change. A fixed prompt set would make runs comparable to each other. It would not make the result authoritative.
- It cannot attribute cause. The strongest available evidence connecting off-site signals to AI-answer visibility is correlational. Ahrefs' study of 75,000 brands found brand web mentions at 0.664 Spearman against AI Overview visibility, and backlinks at 0.218. The author says plainly that this is not causation.
Want first-party citation data instead of a probe? The only free source that exists is Bing Webmaster Tools' AI Performance report, which shows real Copilot citations per URL. Google Search Console reports generative-AI impressions, but impressions only.
Four things this audit is not
- 01
Not your Core Web Vitals. One fetch runs no browser, so it measures none of LCP, INP or CLS. Real numbers come from the Chrome UX Report.
- 02
Not a ranking prediction. We report obstacles. What removing one does to a ranking depends on a competitive set we did not measure.
- 03
Not a site audit. One URL, normally three requests. A template problem on a thousand pages looks identical to a problem on one.
- 04
Not a Google or OpenAI product. It is our reading of their published documentation, linked below so you can check our reading against it.
Sources
Every non-obvious claim above, with the document it comes from.
There is no special structured data for AI Overviews or AI Mode, and no additional requirements to appear in them.
The FAQ rich result was deprecated on 7 May 2026 and its documentation removed the following month.
OAI-SearchBot is the agent behind ChatGPT search. GPTBot is a training crawler.
ClaudeBot collects content that may be used for training. Claude-SearchBot improves search results, and Claude-User fetches pages when a person asks Claude a question.
None of the OpenAI, Anthropic, Meta, ByteDance or Perplexity crawlers render JavaScript. The OpenAI and Anthropic crawlers fetch JavaScript files and do not execute them. Gemini and Applebot render.
Vercel and MERJ, The rise of the AI crawler, 17 December 2024
LCP 2.5s, INP 200ms, CLS 0.1, measured at the 75th percentile.
"FWIW no AI system currently uses llms.txt."
Brand web mentions correlate with AI Overview visibility at 0.664 Spearman, backlinks at 0.218, across 75,000 brands. The author states this is not causation.
Citing this page
It is written to be quoted, so quote it instead of paraphrasing it. If something here is wrong, tell us. We will correct it and date the correction. The review date at the top is maintained, not decorative.
Synapse, "Instant audit methodology: every check it runs", https://synapsereality.io/tools/instant-audit/methodology/, last reviewed 23 September 2026.