Log File Analysis
I now pull server logs before any SEO audit because raw crawl data beats any crawler simulation for finding budget leaks.
What I’d do first
- Download your last 60 days of server access logs from your hosting control panel or cloud storage to start the analysis.
- Filter logs by search engine bot user agents — Googlebot, Bingbot, Baiduspider, and Yandex — to isolate crawling activity.
- Group the data by URL and status code to spot 404s, 301s, and 500s that waste crawl budget.
- Cross-reference high-crawl URLs with your analytics to ensure important pages are being crawled proportionally.
- Set up a recurring log collection process to monitor changes in crawl behaviour over time.
The path I'd take
I start by locating and downloading the raw server logs. On a typical Apache or Nginx setup, that means finding the access.log files in /var/log/ or through the hosting control panel. For cloud-hosted sites, I check CloudFront logs on AWS, or the equivalent in Azure or GCP. I pull at least 60 days of logs, not 30. Why? Because a single week can't show you weekend versus weekday crawl patterns, and 30 days might miss a monthly bot cycle. With 60 days, I caught Googlebot hitting an old product feed URL exactly every 14 days — a pattern I would have missed with a shorter window.
Once I have the logs, I parse them into a structured format. I export to CSV and use a command-line tool like awk to filter for user agents containing 'Googlebot', 'Bingbot', etc. On one 200k-line log file, I found that Googlebot made 4,500 requests to a single blog archive page that returned 200 but had zero organic traffic. That's 4,500 wasted requests. I then grouped by status code: 85% 200, 8% 404, 5% 301, 2% 500. The 404s were mostly old removed pages with no redirect. I prioritised setting up [301 redirects](/301-redirect/) for those.
After that, I look at crawl frequency per URL segment. I use a pivot table to count requests per URL per day. Pages that get crawled 10 times a day but have never ranked are candidates for noindex or redirect. I also check for crawl loops: infinite spaces like parameter-based pagination that spin Googlebot around. I often find that [canonical tags](/canonical-tag/) or [robots.txt directives](/robots-txt/) can stop the waste.
My decision rule: if a page consumes more than 1% of total crawl budget but generates less than 0.1% of organic traffic, it needs fixing. In one case, a /filter/ page with 50,000 parameters ate 12% of the crawl budget. I blocked it in robots.txt and redirected the main variant to the category page.
Watch-outs
The biggest mistake I see is treating logs like analytics. Logs record every HTTP request — from search engines, scrapers, malware scanners, and your own team. Analytics uses JavaScript and cookies to track user sessions. They are not interchangeable. I once saw a spike in Googlebot requests that turned out to be a security scanner spoofing the user agent. Always validate the IP against Google's official range.
Another watch-out: ignoring non-Google bots. Bingbot, Baiduspider, YandexBot, even DuckDuckBot all crawl your site. In some regions, Bingbot can account for 30% of search traffic. If you only filter for Googlebot, you miss crawl inefficiencies for those engines. I once found Bingbot hitting a paginated archive with 100 pages and no next/prev markup, causing [duplicate content](/duplicate-content/) issues. That wasted budget and risked penalties.
Don't forget to exclude your own IP addresses. Your team's monitoring tools, health checks, and even your own browsing can inflate log numbers. Add a filter clause to remove known office IPs. I learned this the hard way when I thought Googlebot was crawling every minute — it was our uptime check.
Finally, 200 status does not mean clean. A 200 on a page that should be a 404 or a redirect is a crawl budget leak. Similarly, a 200 on a page with noindex meta is fine, but if the page is being crawled frequently, that's still waste. Use log analysis to find those mismatches and fix them.
Some SEOs argue that log analysis is too technical and time-consuming for most sites. I disagree. Even a basic parse with free tools reveals more than Search Console's crawl stats. You don't need a full-time data engineer — just a weekend afternoon and a CSV. Log analysis is a core part of any [technical SEO](/technical-seo/) audit I run.
What I got wrong
For years I treated log files as a sysadmin concern. I assumed that if the site was loading fast in a browser, crawling was fine. That was wrong. The first time I ran a proper log analysis, I found that Googlebot was spending 40% of its crawl budget on a set of PDFs that hadn't been updated since 2015. Those PDFs had 200 status, but they were linked from a sitemap that never got removed. I should have 301-redirected them to the current pages or removed them from the sitemap.
I used to think that all 200 responses were good. Then I found Googlebot hitting a URL that returned 200 but the page was actually a server-side error page that returned a 200 status instead of 5xx. That's called a soft 404. The server was misconfigured, and Google wasted thousands of requests on broken pages. Log analysis flagged this immediately.
I forgot to exclude my own office IP. For months, my team's health-check script, running every 30 seconds, looked like a Googlebot crawl spike. I was falsely alarmed that we were being over-crawled. Once I filtered out that IP, the real crawl rate was half of what I thought.
I also ignored Bingbot for years. I only filtered Googlebot. When I finally expanded the filter, I saw Bingbot crawling our /search/ URL with infinite query parameters, generating thousands of near-duplicate pages. I had to add a robots.txt directive to block /search?q= and set up proper canonical tags. That mistake cost months of wasted budget. I now run log analysis monthly as part of a regular [SEO audit](/seo-audits/), not just reactively.
Next step
Quick answers
How often should I perform log file analysis?
At least monthly for sites with frequent content changes. For large e-commerce or news sites, weekly is better. A monthly log pull gives you a rolling view of crawl patterns. If you see a sudden spike or drop, run an ad-hoc analysis immediately.
What tools can I use for log file analysis if I can't afford enterprise software?
Free options include command-line tools like awk and grep, open-source tools like GoAccess, or log parsers in Python. You can also load CSV logs into a spreadsheet for simple pivot tables. The method matters more than the tool.
Can log file analysis replace Search Console crawl reports?
No — they complement each other. Logs show every server request, including non-Google bots and errors. Search Console provides Google-specific data like crawl reason and indexing status. I use both: logs for raw frequency, Search Console for Google's perspective.
Sources
Primary documentation is linked directly. Anything commercial is marked nofollow.
- Google Search Central — Explains how Search Console complements log analysis with Google-specific crawl data.
- Google Search Central Documentation — Official documentation on crawler behaviour, status codes, and troubleshooting.
- SEMrush Log File Analysis Guide — Practical guide on collecting, parsing, and interpreting server logs for SEO.
- Botify Log File Analysis — Workflow for parsing logs and analysing crawl patterns with real examples.
Notes from Callum Bennett.