Skip to main content
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

  1. 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 with 500.
  2. Fetch — requests robots.txt as 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 emits 590. HTTP 5xx fails (401), because RFC 9309 tells crawlers to treat it as a full Disallow. A network error ends the audit with 500.
  3. Scan lines — when the answer is HTTP 200, removes a byte-order mark and # comments and reads each line as directive: value. That feeds the syntax rules (302–308), the sensitive-paths list (103) and Crawl-delay (300, 301).
  4. Match crawlers — reads the User-agent: * group, then every crawler of the bundled catalog that a User-agent line 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.
  5. Audited page — when / is open to User-agent: * and Googlebot but the audited URL is not, fails with 404.
  6. Aggregate — FAIL wins over WARNING. INFORMATION checks never change the status. When no rule warns or fails the audit is SUCCESS (200) and the message quotes the declared Crawl-delay.

What it audits

Every row maps to one checkRule* 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 for robots.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.
  • Allow rules and wildcards (*, $) count: Disallow: / with Allow: /$ still blocks every page except the home page, so auditing any other page fails with 404 even though / is open.

Crawl-delay

  • Crawl-delay is 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-delay line in the file wins, whichever User-agent group it sits in.

Scope

  • Only /robots.txt on the audited scheme, host and port is read. A robots.txt on another subdomain or served only over the other scheme is not seen.
  • robots.txt asks; 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 their 37A-RobotsCrawlDelayAuditor-* codes, explained on its page.
  • An HTTP 5xx answer on robots.txt used to be an ERROR (500); it is now a FAIL (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–309 and 402–404 are new.