62% of Our Search Console Impressions Were Bots. Then 17%.

We launched a small WordPress site in late June, connected it to Google Search Console, and did what every new site owner does: refreshed the Performance report daily and celebrated every bump in impressions. Then we exported the data and read it query by query. The result was humbling. In our first measurable week, 61.8% of the query-level impressions Search Console showed us came from rank-tracking bots, not humans. Most of the “growth” we’d been watching was software querying Google on someone else’s behalf.
What surprised us more was what happened next. We measured three consecutive, non-overlapping weeks, and the bot share collapsed — 61.8%, then 31.3%, then 17.2% — while the number of bot queries barely moved. That turned out to be the actual finding, and it’s more useful than the headline number: the bots are a roughly fixed background signal, so their share of your Search Console is inversely proportional to how much real traffic you have. The smaller you are, the more of your dashboard is machines.
This isn’t a scandal, and nobody did anything malicious. But it does mean that for a small site, the headline numbers in Search Console — impressions, average position, CTR — can be badly distorted, and distorted by a changing amount week to week. Here’s exactly what we found, how we detected it, and how to run the same check on your own data in about fifteen minutes.
The finding: three non-overlapping weeks, and a collapsing bot share
We pulled three consecutive 7-day query-level exports from Search Console — no shared days between them — and classified every query as “looks human” or “looks like a bot” (we’ll explain the rule in a moment; it’s embarrassingly obvious once you see it).
| Window | Dates | Query impressions | Bot impressions | Bot share | Distinct bot queries |
|---|---|---|---|---|---|
| A | Jul 11–17 | 233 | 144 | 61.8% | 29 |
| B | Jul 18–24 | 1,458 | 456 | 31.3% | 36 |
| C | Jul 25–31 | 981 | 169 | 17.2% | 33 |
Read the last two columns together, because that’s where the story is. The bot share fell by a factor of three and a half. But the number of distinct bot queries stayed almost flat — 29, then 36, then 33. Whatever tool is doing this is running a keyword list of roughly thirty terms on a schedule, and it kept running it. What changed is everything around it: our human query impressions went from 89 to 1,002 to 812 as new content landed and started ranking. The denominator grew; the numerator didn’t.
That’s the practical lesson. If you’re small, don’t ask “what percentage of my impressions are bots” as if it were a stable property of your site. It’s a ratio between a fixed machine signal and your own real, changing traffic — and it will move sharply for reasons that have nothing to do with the bots.
A note on which denominator we used
This matters more than it sounds, and getting it wrong is an easy way to publish a number that’s off by a third. Search Console’s Queries report only lists queries above its anonymization threshold, so query-level impressions are always lower than your site total. Our totals for those same three weeks were 309, 1,850 and 1,610 site impressions — meaning 76, 392 and 629 impressions belonged to queries too rare to be shown, and therefore impossible for anyone to classify.
So there are two honest ways to state the same finding, and they give different numbers:
- As a share of classifiable query impressions: 61.8% / 31.3% / 17.2%. This is the figure we lead with, because it’s the only population where the bot/human call can actually be made.
- As a share of total site impressions: 46.6% / 24.6% / 10.5%. This treats every anonymized impression as human — a floor, not an estimate.
If you see someone quote a bot percentage without saying which denominator it uses, the number doesn’t mean much. We made that mistake ourselves in an earlier version of this post.
How we spotted it: the CSV rows in our query report
We’d love to claim we found this with clever statistics. We didn’t. We found it because some of the “search queries” in our export were not search queries at all. They were entire rows of a keyword-research CSV, pasted into Google verbatim. Here is a real query string from our report:
wordpress internal linking plugin,90.00,low,25,approved
Look at the structure: a keyword, a number that looks like a CPC or difficulty score, a competition label (“low”), a volume figure, and an “approved” status flag. That is a rank-tracking or keyword tool iterating through a keyword list and — through some parsing bug or lazy implementation — submitting the whole comma-separated row as the search, columns and all. Our site happened to rank (badly) for pages containing those words, Google served us in the results, and Search Console dutifully logged an impression.
Once you know the signature, they’re everywhere. Every query containing tool-fragment patterns — trailing decimals, ,low, / ,medium, / ,high, / ,unknown, competition labels, ,approved status suffixes — was clearly machine-generated. No human types their keyword tool’s export into Google.
Step-by-step: run this check on your own site
You can replicate this in any spreadsheet, no code required:
- Export your queries. Search Console → Performance → Search results → set a 7-day range → Export → CSV. Work from the Queries sheet.
- Use non-overlapping windows. If you want to compare weeks, make sure they share no days. Two “consecutive” exports taken a day apart overlap by six of seven days — they will agree with each other almost perfectly, and that agreement tells you nothing. This is the mistake we made first time round.
- Scan for tool fragments. Sort queries alphabetically and eyeball for comma-separated rows, stray decimals, and words like “approved”, “low” or “medium” glued onto real keywords. Flag anything a human wouldn’t type.
- Cross-check the Devices report. Rank trackers run headless desktop browsers. For Jul 25–31 our split was 1,505 desktop impressions against 97 mobile and 10 tablet — 93% desktop, wildly inverted from normal web traffic, where mobile usually dominates. If your desktop share is that extreme, that’s corroborating evidence.
- Cross-check the Countries report. Trackers query from datacenter locations, not from your actual audience. In that same week the United States gave us 587 impressions at an average position of 58.3 and the UK 211 at 62.7 — while Vietnam (64), Indonesia (50), Thailand (48), the Philippines (47) and Russia (29) all clustered at positions 31–35. A small English-language site “performing” nearly twice as well across that particular set of countries is not an audience insight; it’s a server farm.
If two or three of these signals line up — weird query strings, an inverted device split, implausible geography — you’re looking at bot impressions.
Why rank trackers show up in your Search Console at all
The mechanism is mundane. Rank-tracking tools work by doing what their customers pay for: searching Google for a list of keywords, over and over, and recording who ranks where. Every one of those automated searches produces a real results page. If your site appears anywhere in the results the tool paginated through — even at position 60 — Google records that as an impression for your site, exactly as if a person had seen it.
So the impression is “real” in the narrow sense that your snippet was rendered in a results page. It’s just that nobody was looking. The tool wasn’t searching for you and doesn’t know you exist; you were incidental scenery in someone else’s rank check. Because trackers tend to page deep into results, small sites ranking on pages 3–6 — which describes almost every new site — are disproportionately likely to be swept up.
Our data shows this is not a fixed tax, though. Bot impressions per bot query were 5.0 in week A, jumped to 12.7 in week B, then fell back to 5.1 in week C — the same keyword list, three very different volumes. When our pages moved into the range those tools paginate through, we got swept up more often. Your bot load depends on where you happen to rank relative to somebody else’s keyword list, which is not something you control or can predict.
What it distorts
Impressions. The obvious one, and the size of the distortion moves a lot. Measured against our site totals, bots inflated our top-line impression count by roughly 87% in week A, 33% in week B, and 12% in week C. For a small site tracking week-over-week growth, that’s not rounding error — and because the inflation factor itself changes, some of your “growth” and “decline” is just the bot ratio moving.
Average position — but not in the direction we assumed. We originally wrote that bots drag your average position down, because trackers page deep. Our own data doesn’t support that as a rule. The impression-weighted position of bot queries versus human queries was 56.5 vs 47.0 in week A (bots worse, dragging the average down), 47.7 vs 56.8 in week B — bots ranking better than our human queries, pulling the average up — and 56.8 vs 58.8 in week C, essentially identical. The direction depends entirely on where a given tracker’s keyword list happens to place you that week. The honest claim is that your site-wide average position is contaminated, not that it’s biased one specific way.
CTR. Bots create impressions but essentially never clicks, so they silently inflate the denominator of every CTR calculation. A page that looks like it has a 1% CTR problem may be converting human impressions perfectly fine.
Your sanity. The scariest chart in Search Console is the sudden impressions drop. We now know that for a site our size, a large “drop” can be nothing more than one tracking tool pausing a keyword list — or a large “rise” nothing more than one starting. Before you tear your site apart hunting for a penalty — or start down the checklist in our guide to diagnosing why Google isn’t indexing your WordPress site — check whether the queries that moved were ever human to begin with.
How to filter it out
You can’t filter bots inside the Search Console UI, but you can clean the exported CSV. A regex like this catches the tool-fragment signature we saw:
,\s*\d+(\.\d+)?\s*,\s*(low|medium|high|unknown)\s*,
In a spreadsheet, a simpler heuristic gets you most of the way. With queries in column A, flag suspicious rows with:
=IF(OR(ISNUMBER(SEARCH(",low,",A2)),ISNUMBER(SEARCH(",medium,",A2)),ISNUMBER(SEARCH(",high,",A2)),ISNUMBER(SEARCH(",approved",A2))),"bot","human")
Then pivot on that flag and recompute impressions, clicks, and impression-weighted position for the “human” rows only. Keep both versions: the raw export for continuity with what Google shows, and the cleaned one for actual decision-making. This pairs naturally with any periodic content audit of your WordPress site — if you’re pruning and improving pages based on impression data, you want that data to describe humans.
One honest caveat: our rule only catches sloppy bots — the ones pasting whole CSV rows. A tracker that submits clean keywords is indistinguishable from a person in the query report. That means every figure here is a floor, not a ceiling. The device and country skews suggest the true automated share is higher than what we can prove.
Caveats, and what we’d like Google to do
Some fairness is in order. We can’t attribute this to any specific tool — the CSV fragments don’t carry a brand name, and dozens of trackers query Google at scale. It’s not malicious: nobody is attacking us, and rank tracking is a legitimate, universal industry practice. Impressions from real users are unaffected; your genuine audience data is still in there, just diluted. And our site is tiny — which, as our own three weeks show, is precisely the point. As real traffic grows, this noise becomes proportionally negligible. It is a small-site problem, which is exactly why it’s underreported: the people most affected have the least data to notice it with.
We should also be clear about our sample’s limits. This is one site, three weeks, one detectable bot signature. Three data points that fall monotonically are consistent with our explanation, but three points are not a trend you should bet on, and we can’t rule out that some of the decline is the specific tool changing its own behaviour rather than pure dilution. We’re publishing the mechanism and the method, not a law.
Still, Google clearly has the signal to do better. It already distinguishes automated traffic for ads invalid-click purposes; a “likely automated” filter or segment in the Search Console Performance report would transform the tool’s usefulness for small sites. Even flagging queries that match known tool-output patterns would help. Until then, the cleaning has to happen in our spreadsheets.
Run the check yourself — and tell us what you find
Our sample is one small site and three weeks of data. That’s the weakness of this post and also the invitation: if a meaningful number of site owners run the same fifteen-minute check — export queries for non-overlapping weeks, grep for CSV fragments, cross-check devices and countries — we’d collectively learn whether a collapsing bot share is typical as sites grow, or whether we’re an outlier. If you run it, we’d genuinely love to hear your numbers, whatever they turn out to be. Publish them, say which denominator you used, and let’s put a real distribution behind this.
Frequently asked questions
Do bots show up as impressions in Google Search Console?
Yes. When a rank-tracking tool searches Google for a keyword and your site appears anywhere in the results it loads, Search Console records an impression exactly as if a human had seen it. On our small site, queries with obvious automated signatures accounted for 61.8% of classifiable query impressions in one week and 17.2% three weeks later — the same roughly thirty bot queries, diluted by growing real traffic.
How can I tell which Search Console queries are from rank trackers?
Export your queries CSV and look for strings no human would type — in our data, entire keyword-tool CSV rows like “wordpress internal linking plugin,90.00,low,25,approved” appeared as search queries. Then cross-check the Devices report (bots are overwhelmingly desktop — ours was 93%) and the Countries report (bots query from datacenter locations that don’t match your real audience).
Does bot traffic in Search Console hurt my SEO or rankings?
No. Bot impressions don’t affect how Google ranks your site, and impressions from real users are recorded normally. The harm is purely analytical: bots inflate impressions, contaminate your impression-weighted average position, and dilute CTR, which can lead you to misread your site’s actual performance.
What percentage of Search Console impressions are bots?
There is no single figure, and any post quoting one without a denominator should be treated carefully. On our site the share of classifiable query impressions fell from 61.8% to 17.2% across three consecutive non-overlapping weeks, purely because real traffic grew while the bot keyword list stayed the same size. Expect the share to be highest when your site is smallest.