Log File Analysis for SEO Playbook 2026 - Manikandan Nagappan
Home / Blog / Log file analysis
Technical SEO / Field guide / 2026 edition

Log file analysis for SEO and AI crawlers.

Your server already records every bot request. Learn to verify the bot, read the response, and see exactly where the evidence stops.

Manikandan Nagappan
Manikandan NagappanAI SEO Expert in Chennai
Updated 19 Oct 2026 16 min read 9 interactive tools
In this guide
  1. What it is
  2. The Evidence Ladder
  3. Is it worth doing?
  4. Get the logs
  5. Analyse, step by step
  6. AI crawlers
  7. Choosing a tool
  8. Review cadence
  9. Where it breaks
  10. What to record
  11. FAQs

What is log file analysis for SEO?

Log file analysis for SEO is the practice of reading your server’s request records to see which URLs search and AI bots fetch, how often they return, and what response each request received. It tells you whether the right bots are reaching the pages that matter to the business.

An access log records requests handled at one layer of your infrastructure. Depending on configuration, each line can hold the client IP address, timestamp, requested URL, user agent, status code and bytes sent.

Logs answer questions such as whether Googlebot requested your product pages after a migration, or kept receiving server errors from an important category. They cannot confirm indexing, rankings, rendering or AI citations. That gap shapes everything that follows.

The short version
  • A bot request proves a fetch happened at one log layer. It proves nothing else.
  • Verify Googlebot with reverse then forward DNS. A user agent is only a claim.
  • Treat AI search bots, AI training bots and user-triggered fetchers as three separate segments.
  • Report zero-hit pages as “not observed in this dataset”, never as “never crawled”.

How do logs differ from analytics, Search Console and a site crawl?

They measure different things, so a mismatch between them is a prompt to investigate, not a sign that one is broken.

SourceBest question to askMain limit
Access logsWhich requests reached this logging layer?Coverage depends on infrastructure and settings.
Web analyticsWhat did measured visitors do?Events depend on implementation and consent rules.
Search Console Crawl StatsHow is Google crawling this property?Google-only aggregates and example URLs.
SEO crawlerWhat can this configured crawl discover?It does not reproduce Google’s real crawl history.

The Evidence Ladder

Most bad log file decisions share one mistake: claiming a result from request evidence. I use a five-rung ladder to stop it. Each rung needs its own proof, and your logs only reach the first two.

Tool 1 / Interactive

Climb the ladder

Select a rung to see what proves it, where to look, and what you cannot claim yet.

    Name the rung in every recommendation. “Googlebot received 150 server errors on /services/” sits on rung 2. “Fixing it will lift leads” sits on rung 5 and needs separate proof, collected after the change.

    Is log file analysis worth doing for your site?

    Do it when you have a specific crawl question, not as a routine report. Google’s crawl budget guidance is aimed at very large or fast-changing sites. A small site whose important pages are fetched promptly rarely needs a crawl budget programme.

    Choose the question before you open any tool. “Why are our new service pages not being fetched?” produces a better audit than “How do we get more bot hits?”

    Tool 2 / Interactive

    Do you need a log investigation?

    Answer three things. The size thresholds come from Google’s own guidance, which calls them a rough estimate.

    What is happening now? (tick all that apply)

    How do you get your server log files?

    Ask your hosting provider, infrastructure team, control panel or CDN for an export. You cannot retrieve a private site’s logs by entering its public URL into a crawler.

    • Apache: ask which files the CustomLog directive writes. /var/log/apache2/ and /var/log/httpd/ are common, but installs vary.
    • NGINX: ask for the configured access_log destination and log_format. /var/log/nginx/access.log is a common location, not a guarantee.
    • cPanel: look for Raw Access under Metrics.
    • CDN: if a CDN answers from cache, those requests never reach your origin. Request edge logs too, with cache and security outcomes where the plan provides them.

    Send this to your developer. It asks for every field the rest of this guide needs.

    Please export access logs for the agreed hostname and date range, including rotated files. Include timestamp and timezone, client IP, host, request path and query string, method, status, bytes, and user agent. Where configured, include request duration, cache outcome and request ID. Confirm any sampling, any missing periods, and whether the export comes from the CDN, load balancer or origin.

    Store exports in approved, access-controlled storage. Redact credentials, tokens and personal information before sharing examples, and keep the untouched original for verification.

    How do you analyse server logs, step by step?

    Fix the dataset first, verify the bot second, then read status codes, crawl waste and coverage in that order. Skipping ahead is how teams end up fixing a chart instead of a problem.

    Step 1

    Fix the window and the log layer

    For a first investigation I suggest 14 to 30 complete days. That is a working recommendation, not a search engine rule. Check timezone consistency, log rotation, missing days, sampling and hostname coverage. Keep raw URLs before you create grouped fields, because query strings and letter case can be the whole story.

    Do not add CDN and origin totals together. One external request can appear in both. Pick one primary reporting layer and use request IDs to study the overlap.

    Tool 3a / Interactive

    Read one log line

    A sample record in the common combined format. It uses a documentation-only IP address. Select any part.

    Log formats vary. Confirm your parser and any custom fields before you rely on command-line shortcuts.

    Step 2

    Verify Googlebot with a reverse DNS lookup

    A user agent containing “Googlebot” is a claim, not proof. Run a reverse DNS lookup on the IP in your log, check that the hostname ends in googlebot.com, google.com or googleusercontent.com, then run a forward lookup on that hostname and confirm it returns the original IP.

    Google documents this method in verifying requests from Google crawlers. This example uses the address and hostname from that page:

    host 66.249.66.1
    1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com.
    
    host crawl-66-249-66-1.googlebot.com
    crawl-66-249-66-1.googlebot.com has address 66.249.66.1

    For large datasets, automate the check by matching IPs against the published Google ranges in common-crawlers.json. Behind a proxy or CDN, confirm which log field holds the real client IP. A proxy address or an untrusted forwarded header invalidates the check.

    Tool 3b / Interactive

    Check your two lookup results

    Run the two host commands yourself, then paste what came back. Nothing leaves this page.

    Which grep or awk filter finds claimed Googlebot hits?

    For a conventional combined-format Apache or NGINX log, this prints the prefix, path and status for rows whose user-agent field contains Googlebot:

    awk -F'"' '$6 ~ /Googlebot/ {split($2,r," "); split($3,s,/ +/); print $1, r[2], s[2]}' access.log | head -n 20

    A simpler exploratory filter is grep -i 'Googlebot' access.log | head -n 20. Neither command authenticates anything. They list claims, and you verify the source IPs separately. Adjust for JSON, CSV, custom, rotated or compressed formats, and never treat partial output as a complete audit.

    Step 3

    Segment bots and page types

    Separate verified Googlebot from Bingbot, AI crawlers, monitoring tools and unknown automation. Keep an “unverified” bucket for anything you cannot prove.

    Within verified Google traffic, split Googlebot Smartphone from Googlebot Desktop using the recorded user agent. Because Google uses mobile-first indexing, the smartphone crawler is generally the main one for Search, and a small share of desktop requests can be normal. If a mobile-only redirect, navigation or access rule affects important pages, test both versions instead of reading a count gap as the fault. Both variants share one robots.txt token, Googlebot, so you cannot control them separately there.

    Then group URLs into sections, and separate HTML documents from images, JavaScript and CSS. For each segment review requests per day, unique URLs requested, status mix and last observed request. A flood of image hits should never hide a service directory that gets almost no HTML requests. Compare every segment with its own history. There is no universal healthy number of Googlebot visits per day.

    Step 4

    Read status codes and response times

    Start with failures on valuable pages, then redirects, then speed. Google says server errors and 429 responses lower its crawl capacity limit, so repeated failures on commercially important URLs come before any cosmetic cleanup.

    Tool 3c / Interactive

    What does this status code mean for crawling?

    Select a code from your log.

    Timing fields need care. NGINX’s $request_time measures request processing time. It is not a Core Web Vitals metric. Compare like with like, and inspect the slow tail as well as the average.

    Step 5

    Find crawl budget waste without breaking discovery

    Crawl budget is the set of URLs Google can and wants to crawl, shaped by crawl capacity and crawl demand. Waste is the share of that effort spent on URLs you have reviewed and decided have no search value.

    Inspect repeated requests to internal search results, endless filter combinations, tracking variants, outdated redirect chains and duplicate URL patterns. Do not assume that every low-value-looking URL is waste. A filtered category may carry real search demand, and a JavaScript file may be essential for rendering. Define the approved URL inventory before you propose any control.

    • Fix the source: correct the links that generate unwanted variants, shorten redirect paths and consolidate duplicates.
    • A canonical tag signals a preferred URL. It does not stop Googlebot requesting the other variants.
    • Robots.txt controls crawling, not removal from search. Google must fetch a page to see its noindex, so plan the sequence before you combine blocking with deindexing.
    • Do not promise that cutting wasted hits will lift crawling of priority pages. Google says freed budget moves elsewhere only if the site is already at its crawl capacity limit.
    Step 6

    Find orphan pages and overlooked priority URLs

    Orphan pages are URLs with no discoverable internal links from the pages in scope. Logs alone cannot prove that links are missing, so compare URLs from logs, XML sitemaps and your CMS with a properly configured site crawl.

    A URL present in logs but absent from your internal crawl is an orphan candidate. Check crawl exclusions, authentication, JavaScript navigation and crawl coverage before you declare it orphaned. For valuable pages with no observed bot requests, inspect internal links, sitemap inclusion, canonical tags, robots rules, response status and publication timing. The correct label is “not observed in this dataset”.

    Tool 3d / Interactive

    Turn your counts into a report line

    The values below are example numbers. Replace them with yours. The sentence it writes keeps the claims inside what the logs can prove.

    Keep a URL-level record of the evidence, likely cause, recommended change, owner and validation date. That turns an interesting chart into a task someone can ship.

    Step 7

    Validate technical fixes and business outcomes separately

    Recheck the same URL groups in a comparable window after release. Did verified bots receive successful responses? Were the unwanted variants reduced? Did priority pages get their first observed fetch? Only then review indexing and search performance, which sit on rungs 3 to 5 of the ladder. My Search Console API and BigQuery guide is a starting point for the page and query data, and you should check current API limits before you scale it.

    More crawling does not automatically mean more leads. Tie the change to relevant impressions, clicks, qualified enquiries or revenue, and record the other launches and seasonal swings in the same period.

    What does a real investigation look like?

    Suppose valuable service pages are in your XML sitemap but rarely appear in verified Googlebot HTML requests. Do not call them orphans, and do not blame crawl budget, on that evidence alone.

    1. Check the dataset. Confirm date range, hostname, log layer, verified bot identity, HTML filtering and missing records. Label zero-hit URLs “not observed in this dataset”.
    2. Compare the inventory. Match the URLs against the sitemap, the internal link crawl, canonical status, robots rules and the live response. Look for differences by page type and by Googlebot variant.
    3. Prioritise fixes. Repair broken internal links or blocked resources, correct template-level causes and resolve verified 429 or 5xx problems. Never add redirects or indexing controls just to move a chart.
    4. Validate. Repeat the same collection and grouping after release, then review indexing, organic performance and conversions on their own.
    Evidence to reportHow to calculate itDecision it supports
    Verified Googlebot HTML requestsCount by day, variant, page type and status from one log layer.Spot access errors and real shifts in crawl pattern.
    Observed priority-page coveragePriority URLs fetched at least once ÷ URLs in the approved inventory.Pick URLs to investigate, without claiming they were never crawled.
    Reviewed low-value shareVerified Googlebot HTML requests to manually classified unwanted URLs ÷ all in-scope verified requests.Test whether a URL pattern consumes avoidable requests.
    Indexing and business outcomesSearch Console indexing, impressions and clicks, plus analytics or CRM conversions.Check results separately. Do not claim log changes caused sales.

    Which AI crawlers should you look for in your logs?

    Separate search discovery, potential model training and user-triggered fetching. Calling all three “AI visibility” hides what each one can tell you.

    ProviderSearchTrainingUser-triggered
    OpenAIOAI-SearchBotGPTBotChatGPT-User
    AnthropicClaude-SearchBotClaudeBotClaude-User
    PerplexityPerplexityBotNone documentedPerplexity-User
    GoogleGooglebotGoogle-Extended (a robots.txt token, never in logs)Google user-triggered fetchers

    OpenAI documents its roles independently, with separate search and training controls. Anthropic and Perplexity publish their own guidance. Each publishes IP ranges too. A user-triggered fetch is a person asking a question, so those fetchers may ignore robots.txt. Do not assume every bot behaves like Googlebot.

    Tool 4a / Interactive

    Identify a bot from its user agent

    Paste a user agent or a whole log line. You get the bot’s role, how it treats robots.txt, and where to verify it.

    Tool 4b / Interactive

    Set your AI crawler policy

    Decide what each role should do on your site, then copy the robots.txt rules. Decide the policy before you edit robots.txt or firewall rules.

    ChatGPT-User and Perplexity-User are user-initiated and may ignore robots.txt, so they are not listed. Google-Extended is a control token and will never appear in your logs. Allow each provider’s published IP ranges in your firewall if you want its search bot to reach you.

    What does a verified AI bot request prove?

    It proves a fetch occurred at the layer you observed. It does not reveal the user’s prompt, prove training use, or show that your page was quoted or cited in an answer. A citation can also use content retrieved earlier, with no new request inside your measurement window. Measure crawler access, observed citations, referral visits and conversions as four separate things.

    For AEO and GEO, split access checks from content checks. Can the system retrieve the page, and does the page answer the question clearly? Use logs for the first. For the second, record prompts, dates, platforms and cited URLs. For Google’s AI Overviews and AI Mode, focus on Googlebot access and search eligibility: a supporting page must be indexed and eligible for a snippet, and logs alone can establish neither. No special schema guarantees inclusion.

    Which SEO log file analyser should you choose?

    Choose by data volume, review frequency, integrations, bot verification and security, not by feature count. A dedicated SEO product is usually easier to run. A general log platform is more flexible but needs SEO-specific setup.

    OptionPick it whenCheck first
    Screaming Frog Log File AnalyserYou run file-based investigations and match them to a crawl export.Event limits, log formats, local resources.
    JetOctopusYou want recurring cloud analysis by bot and site section.Ingestion, retention, account capabilities.
    OncrawlYou want crawl, log and SEO data combined.Integrations, segmentation, workflow fit.
    Botify LogAnalyzerYou need enterprise monitoring with page segments and AI bot activity.Data integration, plan, ingestion coverage.
    SplunkInfrastructure logs are already centralised there.Field extraction, bot verification, ingestion cost, SEO reporting owner.
    SQL or PythonYou have a data environment and an owner for the code.Parser quality, verification, maintenance.

    The Screaming Frog Log File Analyser is a separate application from the SEO Spider. A typical workflow is to import logs, verify bots, filter the segment, then match a URL export from the SEO Spider. For recurring enterprise work, compare candidates on the same representative log sample, URL inventory and approval criteria. Confirm capabilities in your own account, because plans differ. Splunk is a general search and observability platform, so verified bot filters, URL grouping and indexing joins remain your team’s job.

    How often should you review log files?

    Match the schedule to how fast the site changes and how costly a miss would be. Record deployments and configuration changes beside your charts so every pattern has context.

    DailyDuring a migration or a serious incident.
    WeeklyKey segments on an active site.
    MonthlyA deeper review, when the data justifies it.
    After a changeA stable small site needs a look only after launches or unexplained problems.

    Where does log file analysis break down?

    It breaks wherever the log does not see the whole request path. These are the limits I check before I trust a finding.

    • Cached traffic. When a CDN answers first, origin logs undercount. Edge logs fix coverage but bring different IP and timestamp fields.
    • Rendering. A log shows that a JavaScript file was fetched. It does not show that the page rendered. Pair it with URL Inspection’s rendered HTML, and see my note on rendering in JavaScript SEO.
    • Thin data. On a low-traffic site a 14-day window produces noisy zero-hit lists. Extend the window before you diagnose anything.
    • No log access. Some managed platforms give you only Crawl Stats and URL Inspection. Work from those and state the lower certainty in your report.
    • Wrong IP field. If your proxy rewrites the client IP, every verification result is void.

    What should you record before recommending a fix?

    Five checks decide whether a log finding is strong enough to send to a developer. Tick them off as you go.

    Tool 5 / Interactive

    Evidence checklist

    0 / 5

      Log file analysis FAQs

      Does Search Console replace server logs?

      No. Search Console Crawl Stats summarises how Google crawls your property, with aggregates and example URLs. Server logs record each request that reached your logging layer, from every bot, so you can verify and segment them yourself.

      Does a Googlebot visit mean a page is indexed?

      No. It means a request was observed. Use URL Inspection and the indexing reports in Search Console to check index status. A successful response alone does not show that Google chose the page for its index.

      Can log files prove that ChatGPT cited my article?

      No. A verified request can show access, but citation evidence requires observing the answer and its source links. Search crawlers, training crawlers and user-triggered fetchers serve different purposes.

      How do I tell real Googlebot from a fake?

      Run a reverse DNS lookup on the log IP, confirm the hostname ends in googlebot.com, google.com or googleusercontent.com, then run a forward lookup and confirm it returns the same IP. At scale, match IPs against Google’s published ranges.

      Can I analyse logs without server access?

      Yes, if an authorised hosting or infrastructure team gives you an export or a reporting platform. A public website crawl cannot substitute for private request logs.

      Should every 404 URL redirect to the homepage?

      No. Investigate what the URL was for. Use a relevant replacement when one exists. A page that was genuinely removed can return 404 or 410. Unrelated redirects do not solve the underlying content problem.

      Should I block AI crawlers?

      That is a policy decision, and the three roles differ. Blocking a search bot can remove you from that service’s answers. Blocking a training bot signals that future content should be excluded from training. Set each role on purpose, using the policy tool above.

      Start with one question you can resolve

      Choose a valuable section of your site, get a reliable dataset, and investigate one measurable problem. For every recommendation, write down the evidence, the expected technical change, and the outcome you will assess separately.

      Want help choosing that first investigation? Message me on LinkedIn with your website, the affected section and the issue you want to solve. Share raw logs only through a secure channel agreed with your infrastructure team.

      Keep reading

      Scroll to Top