/ ← All tools / Real Traffic Audit
Why your analytics and your real traffic disagree
Analytics tools count anything that runs their script. That includes headless browsers used by monitoring and audit tools, bots that run JavaScript, and β€” surprisingly often β€” your own server rendering your own pages. Each one can show up as a brand-new "user". On one site we audited, analytics reported 4,600 users; the server log showed 16 people who actually used the site, with half of all page loads coming from the site's own server.

Your server log records every single request, from people and machines alike, with who made it. That makes it the most honest record of your traffic β€” this audit turns it into plain answers.
Private by design
Access logs contain your visitors' IP addresses, which are personal data under UK and EU GDPR. So this tool never receives them: the file is streamed from your computer, analysed by your browser, and discarded when you close the tab. Nothing is uploaded, stored or shared β€” not even with us. That also means it's free: there's nothing for our servers to do.
How the audit decides who is real
Every request is sorted in this order:
  • Your own server β€” requests from the server IP you enter. In plain terms: your website talking to itself.
  • AI crawlers β€” GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Amazonbot and others, split into training crawlers, AI search crawlers, and live fetches made because a person asked an AI assistant.
  • Search engines β€” Googlebot, Bingbot, DuckDuckBot and others.
  • Headless browsers and tools β€” automated browsers, speed testers and uptime monitors that identify themselves.
  • Other bots and scanners β€” scrapers, link-preview bots and attack probes.
  • You and your team β€” IPs you list, plus any that successfully used an admin area.
What's left are browser-like visitors. Likely people are those whose browser loaded a page and its images, styles or scripts without hammering the site β€” disguised bots usually fetch the page alone. Confirmed people also submitted a form or used a feature: the strictest count.
Where it falls short
People are counted by IP address: several people behind one office or mobile network count once, and one person on several networks counts more than once. Bots that perfectly imitate a real browser can still slip into "likely people" β€” which is why the confirmed count is shown too. Pages served entirely from a CDN cache never reach your server, so they aren't in the log. And it reads the standard "combined" access-log format used by Apache, nginx, Plesk and cPanel; other formats are counted as unrecognised lines.
Drop in your access log FREE
πŸ“„ Drop your access log here, or click to choose
Apache, nginx, Plesk or cPanel access logs Β· .log, .txt, .gz, files with no extension (e.g. access_ssl_log), or a .tar / .tar.gz archive of logs Β· several files at once is fine (e.g. this week and last)
No file chosen
So links between your own pages aren't counted as outside visitors.
Separates your server's own requests from visitors.
Leaves you and your team out of the people counts.
Compares what your analytics claims with what your server saw.
πŸ”’ Analysed in your browser β€” nothing is uploaded
Connect your data OPTIONAL

Add your Google Analytics and Search Console figures for the same dates, to see how they compare with what your server actually saw. You sign in on Google's own page and grant read-only access β€” we never see your password, and you can disconnect at any time.

πŸ“ˆ Google Analytics
Checking…
πŸ”Ž Google Search Console
Checking…
Reading your log…
β€”
Likely real people (unique visitors in this log)
Understanding the audit β€” questions & answers

What each part of the audit shows, why it matters, and how to read the numbers.

1. Is my log uploaded to your server?

No. The file is read and analysed inside your own browser. It is never uploaded, stored or sent anywhere, and it's gone when you close the tab. That matters because access logs contain visitor IP addresses, which are personal data under GDPR.

2. Where do I get my server log?

Most hosts let you download it. In Plesk it's under the domain's Logs; in cPanel under Metrics β†’ Raw Access; on your own server, Apache and nginx keep it in /var/log. Download the access log, not the error log. Gzipped (.gz) logs can be dropped in as they are, and you can add several files at once to cover a longer period. For step-by-step instructions for Plesk, cPanel, DirectAdmin, your own server and managed hosts, see the step-by-step guides below.

3. Why does my analytics show far more users than this audit?

Analytics counts anything that runs its script. Headless browsers, monitoring tools, bots that run JavaScript and your own server rendering your pages can all be counted as users β€” each one usually as a brand-new user, because they don't keep cookies. Your server log shows every request and who made it, so it can separate them. Enter your analytics user count for the same period to see the gap.

4. What's the difference between "likely" and "confirmed" people?

Likely people loaded a page and its images, styles or scripts without hammering the site β€” disguised bots usually fetch the page alone. Confirmed people also submitted a form or used a feature, which is the strictest and most reliable count. A brochure site with no forms will have few confirmed people by design.

5. How do I stop my own server inflating my analytics?

Exclude its IP address in your analytics. In Google Analytics: Admin β†’ Data streams β†’ Configure tag settings β†’ Define internal traffic, add your server's IP (and your office or home IP), then Admin β†’ Data collection and modification β†’ Data filters and set Internal Traffic to Active. It can't hide real visitors: they never connect from your server's address.

6. What do the AI crawler figures mean?

Training crawlers (GPTBot, ClaudeBot and others) collect pages for future AI models. AI search crawlers (OAI-SearchBot, PerplexityBot and others) build the indexes AI assistants cite from today β€” the ones that matter for being mentioned in answers. Live fetches (ChatGPT-User, Claude-User, Perplexity-User) happen when someone asks an assistant about your page. Live fetches at the same minute on several days are flagged as scheduled, since people don't ask at the same minute every day.

7. Why is "Where people came from" mostly "Direct / none"?

Many visits genuinely have no referrer: typed or bookmarked addresses, links in apps and emails, and browsers that hide where you came from. Disguised bots add to it too. Search, social and AI-assistant visits are only counted when the browser says where the visitor came from.

8. Is it safe to connect Google Analytics and Search Console?

Yes. You sign in on Google's own page and approve read-only access β€” we never see or store your Google password, and we can't change anything in your accounts. Disconnecting revokes the access at Google straight away. Connecting is optional: the log analysis works without it.

9. What are attack probes, and should I worry?

They're automated scans looking for common weaknesses, such as WordPress login pages or leaked .env files. Every public website receives them. Seeing them isn't a sign you've been breached; it's background noise worth knowing about. For a proper check of your defences, run the Security Audit.

Step-by-step guides β€” do it yourself

Everything this audit does, you can set up and check yourself. Get your server logs, set up Search Console and Google Analytics, then count your real visitors with a few commands β€” no account needed.

1. Download your server access logs

Your access log is the record your web server keeps of every request. Most hosts keep the current log plus older ones compressed as .gz files. Download all of them for the fullest picture β€” this audit reads them all at once, including .gz files and .tar.gz archives.

Plesk
  1. Log in to Plesk and go to Websites & Domains.
  2. Open File Manager for your domain and go to the logs folder at the top level (not inside httpdocs).
  3. Download access_ssl_log (visits over https), access_log (visits over plain http), and the older access_ssl_log.processed and access_ssl_log.processed.1.gz, .2.gz … files. Tick them and choose Download.
  4. Skip the .statbuf, .webstat and error_log files β€” they aren't access logs.
  5. To keep more history, go to Websites & Domains β†’ Logs β†’ Manage Log Rotation and raise the number of log files kept.
cPanel
  1. Log in to cPanel and open Metrics β†’ Raw Access.
  2. Click your domain name in the list to download the current log as a .gz file.
  3. To keep history, tick Archive log files to your home directory after each run of statistics and untick the option that removes the previous month's archives, then click Save.
  4. Archived logs appear in the logs folder of your home directory. Download them from File Manager.
DirectAdmin
  1. Log in and open Site Summary / Statistics / Logs for your domain.
  2. Choose the Raw Log (access log) for the domain and save it.
  3. If only the last few days are shown, ask your host how long raw logs are kept and download them regularly.
Your own server (nginx or Apache over SSH)
  1. Find the logs: nginx usually writes to /var/log/nginx/access.log; Apache to /var/log/apache2/access.log (Debian, Ubuntu) or /var/log/httpd/access_log (Red Hat, AlmaLinux, Rocky). Older logs sit next to them as .1, .2.gz and so on.
  2. Bundle them into one file on the server:
    sudo sh -c 'cd /var/log/nginx && tar -czf /tmp/access-logs.tar.gz access.log*'
    sudo chown $USER /tmp/access-logs.tar.gz
    (For Apache, use /var/log/apache2 with access.log*, or /var/log/httpd with access_log*.)
  3. Copy it to your computer β€” run this on your computer, not the server, with your own SSH login and server address:
    scp you@your-server:/tmp/access-logs.tar.gz .
  4. Delete the copy on the server when you're done: rm /tmp/access-logs.tar.gz. Logs contain visitors' IP addresses, which are personal data.
Managed hosting, website builders and CDNs
  1. Look in your hosting dashboard for Raw access logs, Access logs or Logs, usually under Statistics, Metrics or Site tools.
  2. If logs are only shown on screen with no download, ask your host's support for the raw access log files in combined log format for your domain.
  3. Some hosts only keep a few days of logs. Download them regularly and keep them together.
  4. If your site sits behind a CDN such as Cloudflare, pages the CDN serves from its cache never reach your server, so they aren't in your log. The log still shows every visit your server actually handled.
  5. Website builders (Wix, Squarespace, Shopify and similar) don't give access to server logs. Use Search Console and Analytics below instead.

Load them into this audit: drop all the files β€” or a single .tar.gz β€” into the box at the top of this page, add your domain and, if you know it, your server's IP address, then click Analyse log.

2. Set up Google Search Console

Search Console shows how often Google shows your pages in its results (impressions) and how often people click them. It's free.

  1. Go to search.google.com/search-console and sign in with the Google account you want to use.
  2. Click Add property. Choose Domain and type your domain without https or www (for example example.com). This covers every version of your site in one property.
  3. Google shows a TXT record. Copy it, add it as a new TXT record in your domain's DNS settings (at your domain registrar or DNS host), then click Verify. DNS changes can take from a few minutes to a few hours to apply.
  4. If you can't change DNS, choose URL prefix instead, enter your full address (for example https://example.com/) and verify by uploading Google's HTML file to your site's main folder.
  5. Open Sitemaps, enter your sitemap's address (often sitemap.xml) and click Submit.
  6. Check Performance β†’ Search results for impressions, clicks and the searches people used. New data can take a day or two to appear.

3. Set up Google Analytics (GA4)

Analytics counts visitors whose browser runs its tracking code. Set it up once per website.

  1. Go to analytics.google.com, click the gear icon (Admin), then + Create β†’ Property.
  2. Enter a property name, your time zone and currency, answer the business questions and click Create.
  3. Choose Web, enter your website address and a stream name, and click Create stream. Copy the Measurement ID (it starts with G-).
  4. Add it to your site. Most website builders and CMS plugins have a box for the Measurement ID. Otherwise add Google's tag to the <head> of every page. If you have visitors in the UK or EU, only load it after they accept cookies β€” use a cookie-consent banner.
  5. Use a separate property for each website. If two sites share one Measurement ID, their visitors are added together and your numbers look far higher than they are.
  6. Check it works: open your site in another tab, accept cookies, and look at Reports β†’ Realtime. You should appear within a minute.
  7. Leave out your own visits: go to Admin β†’ Data streams, open your stream, Configure tag settings β†’ Show more β†’ Define internal traffic, and add your office or home IP address (and your server's). Then go to Admin β†’ Data collection and modification β†’ Data filters, open Internal Traffic and set it to Active.

Compare them with your server log here: sign in, use Connect Google Analytics and Connect Search Console at the top of this page, choose your property, and analyse your log again. Google data is only shown for websites you have verified you own.

4. Count your real visitors yourself, without this audit

You can get the main numbers from your logs with a few standard commands. On a Mac or Linux, use Terminal. On Windows, install Git for Windows and use Git Bash. Put all your log files (including the .gz ones) in one folder, open the terminal in that folder, and paste these one at a time.

First, a list of words that mark bots and tools, used by the commands below:

BOTS='bot|crawl|spider|slurp|curl|wget|python|headless|lighthouse|monitor|preview|scan'

Total requests β€” people, bots and everything else:

zcat -f access* | wc -l

Likely people β€” visitors that aren't bots and loaded a style sheet or script, as real browsers do:

zcat -f access* | grep -aviE "$BOTS" | awk '$7 ~ /\.(css|js)(\?|$)/ {print $1}' | sort -u | wc -l

Likely people per day:

zcat -f access* | grep -aviE "$BOTS" | awk '$7 ~ /\.(css|js)(\?|$)/ { split(substr($4,2,11),d,"/"); m=index("JanFebMarAprMayJunJulAugSepOctNovDec",d[2]); printf "%s-%02d-%s %s\n", d[3], (m+2)/3, d[1], $1 }' | sort -u | awk '{print $1}' | uniq -c

People who arrived from a search engine:

zcat -f access* | grep -aviE "$BOTS" | awk -F'"' '$4 ~ /(google|bing|duckduckgo|yahoo|ecosia)\./ {split($1,a," "); print a[1]}' | sort -u | wc -l

Most-read pages (not counting images, styles and scripts):

zcat -f access* | grep -aviE "$BOTS" | awk '$9 == 200 && $7 !~ /\.(css|js|png|jpe?g|gif|svg|webp|ico|woff2?)(\?|$)/ {print $7}' | sort | uniq -c | sort -rn | head -20

Missing pages (404s) and how often they were asked for:

zcat -f access* | awk '$9 == 404 {print $7}' | sort | uniq -c | sort -rn | head -20

AI crawlers and search engine crawlers:

zcat -f access* | grep -oiE 'GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|PerplexityBot|Perplexity-User|Bytespider|CCBot|Amazonbot|meta-externalagent' | sort | uniq -c | sort -rn
zcat -f access* | grep -oiE 'Googlebot|bingbot|DuckDuckBot|Applebot|YandexBot|Baiduspider' | sort | uniq -c | sort -rn

Requests from your own server β€” replace the address with your server's IP:

zcat -f access* | grep -c '^203.0.113.10 '

These give close but rougher numbers than the audit. The audit also leaves out your own and your team's addresses, visitors that hammer the site, admin logins and attack probes, and it matches the results against Google Analytics and Search Console for the same dates.

πŸ’¬ Got a problem?
Related Tools: Security Audit  ·  Trust Audit  ·  HTTP Error Audit  ·  Site Crawler  ·  AEO Checker

About aiwebpageseo

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical SEO tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.