How it works

Fast Index Google answers one question better than anything else: what do crawlers actually see when they fetch your page? Here is the full journey of a submitted URL โ€” from queue to the per-bot result matrix โ€” and the infrastructure that makes it run on the edge.

The five-step pipeline

Every job moves through the states queued โ†’ crawling โ†’ crawling_bots โ†’ done (or failed). Each state is visible live in the dashboard.

1. Reference crawl

The URL is fetched once with a current Chrome user agent, following redirects. This is the browser baseline: HTTP status, total time, final URL after redirects, title, meta description, canonical link, H1, html language, word count, meta robots and any X-Robots-Tag header. Everything later is compared against this fetch.

2. robots.txt matching

The origin's robots.txt is fetched and parsed into user-agent groups. Rules are matched first for the specific bot name (Googlebot), then for *, honouring Allow and Disallow with * wildcards and $ end-anchors. A missing robots.txt (HTTP 404) is treated as "no restrictions", exactly as Google specifies.

3. Sitemap check

sitemap.xml is fetched from the origin and scanned for the submitted URL. The report shows whether a sitemap exists, whether it is referenced by robots.txt, and whether your URL is listed โ€” the difference between "discovered" and "submitted".

4. The bot matrix

The same URL is fetched again with every enabled crawler user agent โ€” Googlebot, Bingbot, YandexBot, DuckDuckBot, Baiduspider, CCBot, Applebot, Sogou, 360Spider, AhrefsBot, SemrushBot, MJ12bot, facebookexternalhit, Twitterbot, Googlebot-Image and Yeti โ€” in a parallel pool. For each bot we record:

The aggregate is reported as Bots OK n/16 โ€” a direct, honest crawlability score. No random numbers, no "indexability rate" estimate: these are real fetches with real responses.

5. Report, retry, export

Results land in the dashboard as a sortable table with the full per-bot matrix in the job detail modal. Export any filtered view as CSV, retry individual jobs after a server fix, or delete them from the admin panel. Public sitemaps and robots files are generated for the site itself.

The infrastructure behind it

This deployment runs entirely on Cloudflare's edge โ€” no servers to maintain:

The codebase is dual-target: the same logic runs locally on Node.js + Express + better-sqlite3 with npm start, and on Workers via the portable modules in functions/lib/. See the API reference for exact endpoints.

What this does not do