SEO Auditor — fetches the site’s
robots.txt and checks how crawlers read it: whether it answers, whether every line is a directive they understand, which search engines, AI assistants, AI training crawlers and SEO tools it shuts out, whether it disallows the audited page, and whether it declares a usable Crawl-delay.Protection
Catches the robots.txt mistakes that quietly take a site out of search engines and AI answers, such as a staging
Disallow: / that reached production.Scope
Reads only
/robots.txt on the audited host; the audited page itself is never requested.robots.txt tells crawlers which paths they may fetch. Its grammar is the Robots Exclusion Protocol, RFC 9309 (September 2022): User-agent lines open a group, Allow and Disallow rules in the group apply to the crawlers it names, the longest matching rule wins, and a crawler no group names follows the User-agent: * group. Sitemap and Crawl-delay are widely honored extensions. This auditor matches groups and rules the way RFC 9309 crawlers do (through crawler-commons) and reports what each crawler it knows ends up allowed to fetch.
How it works
- Build the robots URL — takes the scheme, host and port of the audited URL and appends
/robots.txt. An audited URL without a scheme or host ends the audit with500. - Fetch — requests
robots.txtas 37AuditsBot, following redirects. This is a probe of another path, not the audited page, so a 403 is a finding (400), not a blocked bot: this auditor never emits590. HTTP 5xx fails (401), because RFC 9309 tells crawlers to treat it as a full Disallow. A network error ends the audit with500. - Scan lines — when the answer is HTTP 200, removes a byte-order mark and
#comments and reads each line asdirective: value. That feeds the syntax rules (302–308), the sensitive-paths list (103) andCrawl-delay(300,301). - Match crawlers — reads the
User-agent: *group, then every crawler of the bundled catalog that aUser-agentline names. A crawler counts as blocked when/is disallowed for it. When the*group blocks every crawler (402), only crawlers with a blocking group of their own are reported again, so one staging leftover does not turn into dozens of checks. - Audited page — when
/is open toUser-agent: *and Googlebot but the audited URL is not, fails with404. - Aggregate — FAIL wins over WARNING.
INFORMATIONchecks never change the status. When no rule warns or fails the audit isSUCCESS(200) and the message quotes the declaredCrawl-delay.
What it audits
Every row maps to onecheckRule* method and one CheckCode. CheckCode suffixes use status ranges: 100–199 information, 200 success, 300–399 warning, 400–499 fail, 500–599 error.
Output documentation
Every check carries
robotsUrl, httpStatus, contentType, sizeBytes, crawlDelayFound, crawlDelay (the raw value, or null) and crawlDelaySeconds (the parsed number, or null) in its data. Line rules add lineNumber and line, crawler rules add bots (the product tokens), 103 adds paths, and 404 adds auditedUrl and agents. The resource is the robots.txt URL, except for 404 (the audited URL) and 100 (the RFC).
Crawler catalog
The crawlers are bundled with the auditor and identified by the product token each owner documents forrobots.txt.
Scrapers, email harvesters and vulnerability scanners are not in the catalog: they ignore
robots.txt, so naming them in the file does not keep them out.
Risks and considerations
What “blocked” means
- A crawler is reported only when
/is disallowed for it. A group that disallows some paths (Disallow: /blog/) is a normal exclusion and is not reported, except for the audited page (404). Disallow:with an empty value allows everything, as RFC 9309 says.Allowrules and wildcards (*,$) count:Disallow: /withAllow: /$still blocks every page except the home page, so auditing any other page fails with404even though/is open.
Crawl-delay
Crawl-delayis not part of RFC 9309. Bing, Yandex and many SEO and AI crawlers honor it; Googlebot ignores it, so it is not a substitute for rate limiting at the server or CDN.- The first
Crawl-delayline in the file wins, whicheverUser-agentgroup it sits in.
Scope
- Only
/robots.txton the audited scheme, host and port is read. Arobots.txton another subdomain or served only over the other scheme is not seen. robots.txtasks; it does not enforce. A crawler that ignores the file is not stopped by it, which is why the sensitive-paths list (103) is information, not protection.
Behavior changes from Robots Crawl Delay
This auditor replaced the Robots Crawl Delay auditor, deprecated in October 2026. Results it recorded keep their37A-RobotsCrawlDelayAuditor-* codes, explained on its page.
- An HTTP 5xx answer on
robots.txtused to be anERROR(500); it is now aFAIL(401), because RFC 9309 crawlers treat it as a full Disallow. - Every check now starts with the RFC 9309 specification pin (
100). - Rules
101–104,302–309and402–404are new.