How it works
The homepage is the product. You paste URLs; a Cloudflare Worker fetches them. Nothing here pretends to know Google’s index unless you connect Search Console.
1. Live fetch (always on)
For each URL the Worker:
- Requests the URL (follows redirects, 12s timeout, first 512 KB of the body).
- Reads
X-Robots-Tagand any HTML<meta name="robots">/googlebot. - Reads
rel=canonical(HTML orLinkheader). - Fetches
/robots.txtonce per origin and evaluates the URL path for theGooglebotgroup, then*. Longest Allow/Disallow wins;*and$are honoured.
BLOCKING means we found a directive that stops Google from indexing or crawling that URL. We quote it: meta name="robots": noindex, X-Robots-Tag: noindex, none, an expired unavailable_after, or robots.txt Disallow: /path.
ALLOWED means we did not find such a directive. A 404 can still be ALLOWED. HTTP status is shown beside the verdict so you can see fetch failures without us inventing “not indexed.”
2. Search Console inspect (optional)
If GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, and SESSION_SECRET are set, you can OAuth with scope https://www.googleapis.com/auth/webmasters.readonly.
After consent we call the official methods:
GET https://www.googleapis.com/webmasters/v3/sites— list properties.POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspectwithinspectionUrl,siteUrl,languageCode: "en-US".
We display documented fields only: coverageState, verdict, indexingState, robotsTxtState, lastCrawlTime, pageFetchState, googleCanonical, userCanonical, and inspectionResultLink. The inspect API reports the version already in Google’s index, not a live indexability test.
3. Watch (optional)
Save an email plus the URL list to KV (WATCH). A cron at 0 6 * * * UTC re-runs the fetch. If a GSC refresh token was stored, we re-inspect. History is written when fetch verdict flips (ALLOWED ↔ BLOCKING) or when coverageState moves between indexed and not indexed. Email goes out through Resend when RESEND_API_KEY is present.
What this is not
- Not a Google SERP scrape.
- Not a claim that a page “is indexed” from the fetch path.
- Not a schema generator, waitlist, or sitemap builder.