// methodology
What the instant audit checks, and how it decides.
The Synapse instant audit reads one URL from our server and runs up to 18 checks 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, disallow SynapseAuditBot 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
- A run stores the submitted URL and its findings, plus a keyed IP hash used for rate limiting. A finished report stays readable at its link for 7 days, so it can be shared and reopened. A run that failed is deleted after 24 hours. While the audit worker is running, cleanup runs every 15 minutes. An interruption can delay deletion. We do not store the page's HTML. The report quotes the title, the headings, the first 600 characters of visible text and the values each check was decided from.
- What we do not do
- We do not log in, fill forms, run JavaScript or take screenshots. We read the response sent to SynapseAuditBot. An answer engine can receive a different response. A response that is not a web page, such as a PDF or an image, is reported as that and not graded.
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.
- 06
Findings are ordered by a fixed priority, listed below. The verdict at the top of a report is a sentence chosen by rule from the highest-priority finding. It is not a score and it does not predict a ranking.
- 07
Every fail and needs-work result carries advice: what to change, why it matters and how to do it, with a source. The advice is written by us and templated from the finding. No language model writes any part of a report.
- 08
The report also quotes back what our fetch received. That is the title, the description, the heading outline and the first 600 characters of visible text. It adds the counts of links, images and scripts, and which of the named crawlers robots.txt allows for that path.
The priority order
Most important first. A fail always outranks a needs-work result of the same check.
- 01Answer-engine access fail
- 02Indexability fail
- 03robots.txt needs work
- 04Content in the initial HTML fail
- 05Title element fail
- 06Primary heading fail
- 07Canonical URL needs work
- 08Meta description needs work
- 09Title element needs work
- 10Primary heading needs work
- 11Structured data fail
- 12Responsive viewport fail
- 13Document language fail
- 14Structured data needs work
- 15Share preview needs work
- 16Image alternatives fail
- 17Sitemap declaration needs work
- 18Answer-engine access needs work
- 19FAQPage markup needs work
- 20Training-crawler access for information
- 21llms.txt for information
- 22HTML weight and response for information
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
These checks inspect the title, headings and other document metadata in the HTML we received.
| 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. These are tool heuristics, not search display limits. | The title text |
| Meta description | Needs work if missing. Pass at 50 to 165 characters, needs work outside it. This length window is a tool heuristic. Google can choose another snippet. | 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 points at this page: same host, same path. The query string is ignored, so a canonical that drops tracking parameters passes. Needs work if it points at another page or another host, or if there is none. | The canonical, resolved to an absolute URL |
Indexability
A noindex directive asks a supporting engine to exclude a page after it processes the directive. We report what our fetch received.
| Check | How it is decided | Evidence shown |
|---|---|---|
| Indexability | Fail when a checked robots meta tag or X-Robots-Tag header contains noindex or none. Pass means no checked directive was found. It does not confirm indexability. | The directive and where it was found |
Content in the HTML
In December 2024, Vercel and MERJ observed several AI crawlers fetching pages without rendering JavaScript. We check initial HTML. We cannot establish current engine behavior from that sample.
| Check | How it is decided | Evidence shown |
|---|---|---|
| Content in the initial HTML | Fail if fewer than about 600 characters of text arrive and the page carries at least one script. Pass otherwise. Data blocks such as JSON-LD do not count as scripts, and text inside noscript or template elements does not count as content. 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. Pass otherwise. This checks syntax, not eligibility for a search feature. | The @type values found |
| FAQPage markup | Reported only when FAQPage is found, as needs work. Google deprecated its FAQ rich result on 7 May 2026. | 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
We interpret robots.txt for the listed agents. This does not test requests from those engines or prove whether they can cite the page.
| Check | How it is decided | Evidence shown |
|---|---|---|
| robots.txt | Needs work if robots.txt could not be read. That means any answer other than 200 or 404, or a 200 sent in a compression we cannot decode. The tool treats a 404 as no rules. A User-agent line is matched on its product token, so Googlebot/2.1 is Googlebot. Rules and paths are compared percent-encoded, so a rule written in Hebrew matches the encoded URL. 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 listed training crawler is blocked. Check each vendor's documented uses before changing these rules. | 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. Present means a 200 that is a text file. An HTML page served at that address is a soft 404 and counts as absent. Google Search ignores this file. Its presence does not establish whether another system uses it, so this check has no score. | 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 whole fetch took from our server, redirects included. It is not the time to first byte. 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 reads robots.txt and the HTML returned to our own agent. It does not query an answer engine or verify citation eligibility. A future citation probe would be reported separately because it measures something different.
- 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. Ahrefs screened 75,000 brands and excluded roughly 26% with no AI Overview mentions. In the remaining sample, correlations were 0.664 for web mentions and 0.218 for backlinks. The author says this is not causation.
Bing's AI Performance report provides citation counts and cited pages across its supported surfaces. Google Search Console reports generative-AI impressions. Neither report is a transcript of every answer a buyer saw.
Controls outside robots.txt also matter. Google's Search generative AI control is set in Search Console. This audit cannot read that setting. User-triggered requests can follow different rules from automated crawlers. Read each vendor's documentation before changing access.
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.
The audit reports and stops there. Fixing what the audit finds is technical SEO work. The robots.txt and HTML checks are also where the answer-engine work this check feeds starts.
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.
In December 2024, Vercel and MERJ observed the named OpenAI, Anthropic, Meta, ByteDance and Perplexity crawlers without JavaScript rendering. That observation is dated.
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.
Google Search ignores llms.txt. Other systems can use such files, so this is a statement about Google Search only.
Google Search Central, AI optimization guide, accessed 23 September 2026
Ahrefs screened 75,000 brands and excluded roughly 26% with no AI Overview mentions. In the remaining sample, correlations were 0.664 for web mentions and 0.218 for backlinks. This does not establish 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 27 September 2026.
Start a conversation