ShipworkSite inspection
Log analyser

Crawlability

PaginationAre paginated pages set up right?Internal searchIs site search eating crawl budget?URL parametersAre parameters creating duplicates?Log analyserWhat does Googlebot actually crawl?Robots builderNeed a robots.txt file?Soft 404sAre pages “not found” but returning 200?JavaScriptCan crawlers see it without running JS?FreshnessIs my site quietly going stale?Robots.txtDoes robots.txt say what I think?

Indexing

Sitemap lastmodAre my sitemap dates valid?SitemapIs my sitemap actually fetchable?IndexingIs Google allowed to index my pages?CanonicalsIs Google indexing the wrong URL?Index signalsDo sitemap and index signals agree?Sitemap generatorNeed a sitemap.xml for my site?Bulk URL statusWhere does each of these URLs really land?Redirect builderNeed the redirect rules?RedirectsAre my URLs answering directly, over HTTPS?

On-page

Keyword ideasWhat are people searching for?SERP previewHow does my page look in Google?Content qualityAre your pages too thin or too alike?Image weightAre images slowing the page?CannibalizationAre pages competing with each other?On-page checkDoes the page use its target phrase?ImagesAre my images accessible and loading?Meta tag builderWhat should my title and share tags say?DuplicatesDo my pages compete for one query?

Links

Orphan pagesWhich pages can no link reach?Link graphHow deep do your pages sit?Anchor textDo links say what they point at?Outbound linksAre external links still alive?Broken linksAre internal links sending visitors nowhere?

Structured data

Rich resultsIs my markup eligible for a rich result?Structured dataIs my product schema valid?Schema coverageDo my key pages carry structured data?Social previewHow does my page look when shared?Schema vs pageDoes markup match the page price?Schema builderNeed valid JSON-LD?

International

Hreflang sitemapDo page and sitemap hreflang agree?HreflangDo my language versions link back?Hreflang builderNeed the hreflang tags?Page DoctorWhy is this page not doing well?Redirect planMy site has dead links — what redirects do I write?Sitemap diffIs anything missing from my sitemap?Robots simulatorWhat does my robots.txt actually block?Can Googlebot?Can Googlebot fetch this URL?
Every error, explainedGuides
Pricing Learn Error guides Run free audit

+1 free check

Welcome to Shipwork

Sign in free and your next check this month is on us.

Continue with GoogleContinue with email

We email you a 6-digit code. No password.

No card needed. Reports and watches follow you to any device.

What does Googlebot actually crawl?

Your server log is the only place that shows what the real Googlebot fetched: how often, which URLs, and what it got back. Drop an access log in and read it. Parsed in your browser; the file never leaves your device.

Nginx or Apache access log. Or paste lines below.

Runs entirely in your browser. Nothing is uploaded or stored.

What it reports

Per crawler: how many requests, the status codes it received, and its most-crawled URLs. Then the crawl-waste signals: how much of Googlebot's budget went to parameterised URLs, and any 4xx or 5xx it was served, which a checker from a laptop would never see. It also separates search crawlers from AI crawlers (GPTBot, ClaudeBot, PerplexityBot) so you can see who is actually reading the site.

What the server log analyzer reads

The tool parses an Nginx or Apache access log in the common or combined format, where each line has a quoted request and a status code. It groups requests by crawler using the user-agent string: Googlebot, Bingbot, the AI crawlers such as GPTBot and ClaudeBot, other bots, and human traffic are separated, so bot behaviour is not diluted by ordinary visits.

For each crawler it counts requests, status codes, parameterised URLs, error responses and the most-crawled paths. It also builds a daily timeline of bot hits and a response status mix. The whole file is read in your browser; nothing is uploaded, and it handles a few hundred thousand lines comfortably, which keeps any customer paths in the log on your own machine.

How to read the crawl findings

The headline is how many of the recognised requests came from Googlebot, and how many error responses it received. The crawler table shows requests, 4xx and 5xx counts, parameterised hits and each crawler's share. The top-URLs table lists the paths Googlebot fetched most, which should be pages you care about rather than carts, filters or tracking addresses, and a parameter in that list signals duplicate crawling.

The findings are leads, not verdicts. A URL that returns an error to the crawler is worth fixing, and a high share of parameterised crawling wastes attention. A log records the user-agent a request claimed, so it cannot confirm the requester really was that crawler; a spoofed agent would be counted under the name it presented. Use it to spot a trend, not to audit a single request.

Common crawl problems and why they matter

Parameterised URLs such as sort, filter and tracking links pull a crawler through many near-duplicate addresses. When they dominate, real pages wait longer. Errors served to a crawler mean it could not read pages it was already spending time on, which is worse than a URL it never tried. Budget spent on near-duplicates is budget not spent on the products or articles you want found.

The log is the only place that shows what the real crawler fetched, how often, and what it received. A check run from elsewhere shows what a fresh request returns now, which can differ from what the crawler met during a bad hour or under load. That is why logs and external crawls answer different questions, and comparing two logs shows whether a fix worked.

Act on what the log shows

Fix the URLs that returned errors to the crawler first, since those are pages it tried and could not read, and group them by pattern because one broken template can produce hundreds of errors. That pattern usually shows which template is at fault. For parameterised waste, decide a policy: block the parameters you do not want crawled, or give the canonical address so duplicates resolve to one page.

If a crawler you want is absent, check whether a robots rule or a server rule is refusing it. If an AI crawler appears and you did not expect it, confirm the access is intentional rather than inherited from a broad rule. After a change, analyse a later log and compare the same numbers, keeping a copy of the before and after so the change is verifiable.

When to use related checks

Use robots test to check one URL against the live rules and robots simulator to review a whole file. The AI access report resolves whether named assistants may read the site, names the assistant behind each agent, so an unexpected crawler in the log is easier to place, and you can decide whether to keep or block it. Then compare that decision with what the log recorded.

For crawl budget context, see the crawl budget guide. To decide who may read the site, see blocking GPTBot and the AI crawler user-agent list, which covers the main search and AI agents, what each one does, and how to block one without affecting the others. A rule change is only proven by a later log, so analyse one after the edit and compare.

Questions

Does my log get uploaded?
No. The file is read and parsed in your browser with JavaScript; nothing is sent anywhere and nothing is stored. You can disconnect from the network and it still works.
Which log format?
The Nginx or Apache combined or common format, where each line has the request in quotes and a status code after it, e.g. 127.0.0.1 - - [10/Oct/2026] "GET /x HTTP/1.1" 200 512 "referer" "Googlebot/2.1".
What does it tell me that a crawl cannot?
A crawl from anywhere shows what a fresh request returns. The log shows what the real Googlebot actually fetched, how often, and what it got back: the only way to see crawl budget being spent and errors Googlebot hit but a checker did not.
How much can it handle?
It parses a few hundred thousand lines comfortably in the browser. For a month of a busy site, split the log or paste a representative slice.
How do I see what Googlebot actually crawls?
Export your server access log and analyse it. The tool groups requests by crawler and shows Googlebot's request count, error responses, parameterised hits and most-crawled paths. A crawl run from elsewhere cannot show this, because it does not see what the real crawler fetched during its own visits.
Is my server log uploaded?
No. The file is read and parsed in your browser, so it never leaves your device and nothing is stored. You can disconnect from the network and the analysis still runs. There is no server-side copy and no size limit imposed by the page itself beyond the browser's memory.
Which log format does it accept?
The Nginx or Apache common or combined format, where each line contains a quoted request and a status code. If the tool reports no recognised lines, the file is likely in a different format or is compressed, and compressed archives should be expanded into plain text before they are read.
Can it prove a crawler is genuine?
No. It reads the user-agent string a request presented, so traffic claiming to be Googlebot is counted as Googlebot. Verifying a crawler needs its network origin, which the log alone does not establish. For certainty, compare the network origin with the published list of that crawler's addresses.
How much log can it handle?
It parses a few hundred thousand lines comfortably in the browser. For a month of a busy site, split the file or paste a representative slice; the pattern usually shows on a sample, and a very large file is rejected with a suggestion to split it before analysis.