Your Search Console Numbers Are Lying to You in Five Specific Ways
Five specific quirks that make GSC's clicks, impressions and positions quietly misleading — and the second source to check each one against.
- Author
- Prabhash Jha
- Published
- Reading time
- 14 min read
Google Search Console is the closest thing SEOs have to ground truth about how a page performs in search. It is also, in five specific ways, misleading in exactly the kind of small, systematic ways that produce the wrong quarterly decision if you take the numbers at face value.
Nothing in this post is a bug. Every one of the five quirks is documented, or at least documented after you know exactly which help-centre page to read. What is not documented in one place is the practitioner’s list of “here is the specific thing to distrust, in the specific report, and here is what to cross-reference it against so your monthly decisions are not based on numbers that are missing half the story”.
This post is that list. It is written from operating this site’s own weekly GSC pull (via scripts/ops/gsc.mjs), and every one of the five quirks below is one I have had to reason about live rather than one I have read about.
Quirk 1: the query privacy threshold hides between a third and half of your click data
The single largest source of surprise in Search Console is that the Queries table does not include queries that fewer than a handful of people have searched for over the reporting window. Google calls this the privacy threshold and it applies to “queries not searched by more than a few dozen people over a 2-3 month period”, plus any query containing personal or sensitive content.
The mechanical consequence is that the clicks and impressions from those anonymised queries are still counted in the chart totals and in the Pages, Countries, Devices and Dates tabs — but they are absent from the Queries table. So the sum of clicks across every row in Queries is always lower than the total the chart shows, and the difference is your long-tail traffic.
For most sites this is a lot. Ahrefs’ April 2025 analysis found the gap accounts for roughly 46.77% of all traffic on a typical site. Nearly half your clicks are showing up in the totals and not showing up in any query you can name.
Why this matters in practice: any analysis that starts “here are our top ten queries” is analysing the top ten queries above the privacy threshold, not the top ten queries overall. The number one query might be one you have never seen listed. Decisions like “let’s double down on our top queries” are made on the visible half, and the invisible half is by definition made of the long-tail small queries — which is exactly the traffic that AI search results and zero-click features are eating first. Never assume the queries you see are the queries you have.
What to cross-reference: the totals in the chart against the sum of the rows in the Queries table. The gap is your anonymised query volume. If the gap is under 20%, you have a low-diversity long-tail (unusual, and often means the site is dominated by a small number of branded queries). If it is over 50%, your long-tail is the real story and the Queries table is nearly useless for understanding what actually earns your clicks.
Quirk 2: position is a weighted average that hides everything interesting
“Average position: 8.4” is one of the most confidently-stated numbers in SEO analysis and it is not what most people think it is.
Position in GSC is calculated as the mean of the topmost position the page achieved across every impression, then averaged. What that means concretely: if a page ranked at position 3 for one week and at position 20 for the next week, its “average position” for the two-week window is not 11.5 — it is weighted by impression volume. If most of the impressions were during the week the page was at position 20, the average will be closer to 20, not 11.5.
Two failure modes come out of this:
Failure mode A: a page that “dropped from 5 to 15” often dropped further, and briefly. The averaging smooths out temporary drops. If the page fell to position 40 for a day and then recovered, the daily-averaged report might show it at position 15 for the week. The average is real; the drop was real; and the daily volatility inside the week is invisible from the weekly report.
Failure mode B: a page can be “moving up” while its actual ranking is unchanged. If a page ranked at position 5 for 100 impressions in week one, and at position 5 for 500 impressions in week two, the average position stays at 5 — but the report might show as an improvement because the page appeared for more queries whose average position was lower. The story is really about impression mix, not ranking change.
What to cross-reference: the average position against the specific queries the page is ranking for, over the same window. If the query list changed materially, the position number is not comparable week-over-week. If the queries are stable but the position moves, the position is telling you something real.
Quirk 3: “clicks” is not what you think when a rich result is on the page
The clicks number Search Console gives you is the number of clicks on your organic result for the query. Which sounds correct until you realise that queries increasingly return results where the answer is on the SERP itself — featured snippets, People Also Ask boxes, AI overview panels, image carousels, video carousels.
When your page is the SOURCE of a featured snippet or an AI overview citation, you often get impressions (the user saw your URL under the snippet) with no clicks (the user got the answer without clicking through). GSC counts this correctly: the impression is real, the click is real (zero), the CTR is honest. What the number does not do is distinguish “the user saw your URL and did not click” from “the user got your answer without needing to click”, and those are completely different outcomes for you.
The failure mode: a page that is “underperforming” (many impressions, few clicks) may actually be over-performing (many impressions, many people got the answer, they now know your brand name for future queries), and the way to tell the difference is not visible in GSC alone.
What to cross-reference: check the actual SERP for your top queries — literally, in an incognito window, from the geography your traffic comes from. If the query returns your answer inside a featured snippet or AI overview above the fold, the “low CTR” is not a bug in your content; it is Google returning the answer without a click. Whether to keep publishing content in that shape is a different question; the diagnostic is not “our page is not compelling”, it is “Google is answering with our content, without us”.
Quirk 4: the aggregation switch between page-level and property-level silently changes the number
Search Console reports impressions at different levels depending on the context: property, page, query, and combinations. Switching between these contexts can change the numbers in ways that look like a bug but are actually the reporting mode changing.
The specific example: if a query returns two of your pages in the SERP (say, positions 3 and 7), the property-level report counts that as 1 impression for the query. The page-level report counts it as 2 impressions — one for each URL — because at the page level, each URL that appeared is one impression. So the same event, one search, produces different impression counts depending on which report you are reading.
This becomes obviously wrong the first time you compare a property-level “impressions per query” figure against a page-level “impressions per page” figure and get numbers that do not sum. They cannot sum, by construction, because they are counting different things. Nobody is doing anything wrong; the tool is counting different events under the same label.
What to cross-reference: always pin the aggregation level in writing when you report a number. “Impressions per query at property level” and “impressions per page at page level” are the two numbers to report, side by side, when the answer depends on which one you meant. If you skip the labels, you or your successor will compare non-comparable numbers three months later and reach a conclusion that reads sensibly and is wrong.
Quirk 5: the index-coverage report lags what is actually in the index
The Coverage report (“Not indexed”, “Indexed, though blocked by robots.txt”, “Discovered — currently not indexed”) is updated on Google’s own schedule, which is not the same as the schedule your actual index membership changes on.
Practically, three things follow:
A page can be “indexed” per Coverage while being effectively de-indexed for the queries it used to rank on. Google may still have the page in the index but choose not to serve it for any competitive query — that shows up as an impressions collapse in the Performance report while Coverage still says “Indexed”. If you only watch Coverage, you will miss the effective de-indexing.
A page can be “Discovered — currently not indexed” for weeks and then indexed overnight. The label reflects the last time Google evaluated the page, not the current state. Repeatedly requesting indexing via the URL Inspection tool nudges the evaluation but does not guarantee inclusion.
Newly-published pages usually take somewhere between one and four weeks to appear in Coverage as “Indexed”, even when they are already ranking. The Performance tab will show impressions before the Coverage tab shows the page as indexed. Both reports are correct — they measure different points in time.
What to cross-reference: for any page you care about, run site:yourdomain.com/that-page in a plain Google search. If the page returns, it is currently in the live index, regardless of what Coverage says. If it does not return, it is not currently indexed, regardless of what Coverage says. The site: operator is the ground truth for right-now index membership; Coverage is Google’s report on when it last checked.
The pattern behind all five
Every one of the five quirks above is a case of a report answering a slightly different question from the one the practitioner thinks it is answering. Nothing in GSC is “wrong”. What is wrong is the assumption that a number labelled “clicks” or “impressions” or “position” is measuring the intuitive definition of that word.
The general discipline that comes out of this: for every GSC number you report on, write down exactly what event it counts, at what aggregation level, over what time window. Not “clicks” — “clicks on the organic result for this query, at page-level aggregation, over the last 28 days including anonymised queries in the total but not in the query breakdown”. That level of specificity is exhausting the first time you do it and it is the difference between a report that is defensible and a report that generates monthly meetings about what the numbers actually mean.
Two other quirks worth naming briefly, though I have not built a full section on them because their impact is smaller:
- The filter combinations in the Performance tab do not sum. Filter to India, then to mobile, and the intersection can produce fewer impressions than either single filter alone, because a query needs to hit BOTH filters to count in the intersection and might have been anonymised in one but not the other. JumpFly’s analysis of filtered totals has the specific mechanics.
- Sampled data appears once you cross a per-property row limit on any given day. GSC does not warn you when sampling kicks in; you just see rows disappear. If your daily impression volume is in the millions, you are almost certainly seeing sampled data at the row level even when the totals are exact.
What to actually do about this in your monthly reporting
Three specific changes to make in the next weekly or monthly report you write, in order of how quickly they pay for themselves.
Change 1: report the anonymised gap. Add one line — “your top 10 queries account for 42% of clicks; 58% of clicks are on queries below the privacy threshold and are not visible in the Queries table”. That single line is the single most important context most reports omit. It changes how the person reading the report thinks about “what our top queries are” from “here they are” to “here they are, among the visible ones”.
Change 2: pin the aggregation level on every number. “Position: 8.4 (page-level, 28-day)” instead of “Position: 8.4”. “Impressions: 12,400 (query-level, all countries)” instead of “Impressions: 12,400”. This is annoying and it is right, and once you have done it for a few reports you will realise how often the numbers change materially when the aggregation changes.
Change 3: cross-reference every dropped page against site: before treating it as a real drop. A page that drops out of the Performance tab may still be indexed and ranking for a different query set. A page that shows as indexed in Coverage may be effectively de-indexed. site:yourdomain.com/that-page is the ground truth check that takes 15 seconds and prevents the wrong-alarm cascade of investigating a “drop” that isn’t one.
Where this fits with the rest of the work
The five quirks above are about reading GSC honestly. What to do about the diagnoses those numbers surface is a different question. If a page has dropped in impressions and the drop is real (per the cross-reference in quirk 5), the diagnosis order — measurement drift, creative fatigue, mix shift, saturation — is in when performance marketing stops working and brand is the only lever left, and the same framework applies to organic decline even though the post is written about paid.
If your problem is upstream — you have not yet decided which metrics to report on at all — the sequence is in performance marketing: the practical playbook I actually use, particularly the section on distinguishing the metric you optimise on from the metric you pay on from the metric you report on.
And if you are reading this because you are trying to work out whether AI-driven zero-click SERPs are structurally eating your traffic — the pattern is real and the specific angle to publish against is in SEO basics: how to get found on Google without paying for ads.
FAQ
How far back should I pull Search Console data before the numbers stabilise?
Sixteen months is the maximum GSC will show you, and twenty-eight days is the default window most reports run on. For decision-making, compare the last twenty-eight days against the prior twenty-eight, not week-over-week — daily noise is high enough that week comparisons produce false signals about half the time.
Should I use the Search Console UI or the API for monthly reporting?
The API if you want the same numbers twice. The UI applies sampling and privacy thresholds silently and can return slightly different totals for the same query on the same day, whereas the API returns rows deterministically and lets you pin the aggregation level explicitly. For a one-off look the UI is fine; for a monthly report you want to defend, pull via the API.
What if my Queries table shows almost none of my traffic?
That means your long-tail is dominated by queries below the privacy threshold, which per Ahrefs’ analysis is normal for most sites — the gap accounts for roughly forty-seven percent of clicks on a typical property. Report the anonymised gap as a first-class number and stop trying to name your “top queries” as if the visible list is the full list; it is not.
Should I trust average position or click-through rate more when a page is moving?
Neither on its own. Position moves for reasons that have nothing to do with your page — the query mix changed, an AI overview appeared, a competitor entered — and CTR moves because of SERP features you cannot see in GSC. Cross-reference both against the actual SERP for your top queries in an incognito window before you conclude anything moved.
What if a page disappears from the Performance tab overnight?
Run site:yourdomain.com/that-page in a plain Google search first. If the page returns, it is still indexed and the drop is a ranking or query-mix change, not de-indexing. If it does not return, the page is out of the live index regardless of what the Coverage report currently says, and that is a different problem to diagnose.
How long after publishing should a new page show up as Indexed in Coverage?
Between one and four weeks is the normal range, and the Performance tab will usually show impressions before Coverage catches up. If a page is getting impressions but Coverage still says “Discovered — currently not indexed”, the Performance tab is the more current signal; Coverage is reporting on the last time Google evaluated the URL.
Should I request indexing manually for every new page?
Once per page is enough. Repeatedly hitting the URL Inspection tool does not accelerate indexing beyond the first request and can look like abuse of the tool on high-volume properties. Publish, request indexing once, and then let the Performance tab tell you when the page is actually earning impressions.
The one-sentence version
Every GSC number is answering a slightly different question from the one the label implies — anonymised queries hide roughly half your click data, position is a weighted average that smooths out volatility, clicks does not measure “someone got value from your content” when the SERP now answers the query itself, aggregation-level switches quietly change the numbers, and Coverage lags real index membership — so pin the aggregation level on every number, cross-reference against site: for every dropped page, and report the anonymised gap as a first-class number, not a footnote.
If you are spending real money on paid and the numbers are not behaving, that is the work I do. See how I work with people.