The file picker reads plain-text logs locally via FileReader (gunzip .gz files first) — nothing is uploaded. A 12-line sample log is preloaded so you can see a worked report before pasting your own.
User-agent: lines in robots.txt. The matcher skips them on purpose.What to do with the results
Blocking decisions are per-purpose, not per-vendor: AI-search crawlers can cite and link your pages (a growth channel), while pure training crawlers copy content into model weights with nothing in return. The robots.txt guide has copy-paste allow-search-block-training patterns with the exact tokens, and the bot directory profiles all 28 bots.
Crawler hits are one leg of the tripod: the free readiness audit checks whether AI crawlers can read your site once they arrive, and the mention tracker checks whether AI answers actually cite you.
Frequently asked questions
Is my access log uploaded when I paste it here?
No. Parsing is plain client-side JavaScript running in your browser — no upload endpoint exists for the analyzer, and the file picker reads log files locally via FileReader. Nothing about your log content is transmitted or stored.
How do you verify a bot hit is genuine?
A user-agent match is only triage. Real verification is confirming the source IP belongs to the vendor: check it against the vendor's published IP-range JSON where one exists, otherwise RDAP/rDNS the address (a “Googlebot” from a residential ISP is a spoofer). The verify-by-IP guide walks the full method.
Why can't I trust user-agent strings?
Because a UA is client-controlled text — spoofing one takes a single curl flag. Common Crawl itself warns about fake CCBots, and some bots (Bytespider is widely reported to) rotate user agents entirely. Treat UA counts as a first pass, never proof.
Why do Google-Extended and Applebot-Extended never show up in the report?
They have no user agent — they exist only as robots.txt control tokens, and the actual crawling happens under other user agents. Any log line carrying either name is fake by definition, so the analyzer flags it as spoofed instead of counting it.