WriteMySEO / Blog / Why Your Rank Tracker and Search Console Disagree
SEO data

Why Your Rank Tracker and Search Console Disagree

Search Console's average position and your rank tracker are produced by different mechanisms. Here's how each number is built, where it misleads, and which to trust for what.

Your rank tracker says position 4. Search Console says 11.2. Neither is broken. They are answering different questions, and one of them is an impression-weighted average of a value that does not exist in any single search result page.

The gap between the two numbers is not noise to be reconciled. It is information — about where you appear, for whom, and how much of your visibility lives in the long tail you never track.

What each number is actually measuring

A rank tracker measures placement under controlled conditions: one query, one location, one device, one language, usually one check per day, from a datacenter or residential proxy with no search history. It is a laboratory measurement. It will report a position for a query whether or not a single human searched it that day.

Search Console measures observed placement across real searches that actually happened. Google documents that position is recorded per impression, using the topmost position at which any of your site's URLs appeared for that query. If nobody searched the query, there is no row. If a thousand people searched it from six countries on three device types, you get one impression-weighted average that blends all of them.

So the comparison is: a single controlled sample versus a demand-weighted mean over a heterogeneous population. Those two things agree only when your visibility is uniform across geography, device, and personalization — which, for most sites, it is not.

How Search Console computes average position

The mechanics matter, because they explain most "impossible" numbers.

If you use the Search Console bulk export to BigQuery, the raw field is sum_top_position, and Google documents that you reconstruct average position as:

SELECT
  query,
  SUM(impressions) AS impressions,
  SUM(sum_top_position) / SUM(impressions) + 1 AS avg_position
FROM `project.searchconsole.searchdata_site_impression`
WHERE data_date BETWEEN '2024-01-01' AND '2024-01-31'
GROUP BY query

That + 1 exists because positions are stored zero-indexed. It also tells you something important: average position is a sum divided by a count. It is not a rank. There is no search result page on which you appeared at 11.2.

What a rank tracker is really sampling

Rank trackers make a series of choices you rarely see, and each one moves the number:

The reasonable inference — not documented behavior — is that most persistent tracker-versus-Search Console gaps on head terms come from the feature-counting rules, and most gaps on tail terms come from geographic and device mixing.

Why average position can improve while things get worse

This is the failure mode that costs people their credibility in a QBR. Because the average is impression-weighted over queries where you were shown, losing deep visibility raises the average.

QueryPositionImpressions (before)Impressions (after)
A41,0001,000
B8500500
C424,0000

Before: impression-weighted average ≈ 30.5. After query C stops generating impressions at all: ≈ 5.3. Average position "improved" by 25 positions while total impressions fell by 73%. The site got less visible, not more.

The inverse also happens: a new section starts surfacing at position 30 for thousands of tail queries, total clicks rise, and average position collapses. Any KPI that can move opposite to the outcome you care about is a bad KPI on its own.

When a gap is signal, and when it's a bug

Use the gap diagnostically:

  1. Tracker says 4, Search Console says 12+, impressions are high. Suspect geographic or device mixing. Filter Search Console to the tracker's exact country and device and re-check. If the gap closes, your tracker is measuring one slice of a distributed reality.
  2. Both agree on position but clicks are far below what position implies. Look at what else is on the page — features above you absorb the click, and position is not pixel position.
  3. Tracker reports a position, Search Console has no row. Either the query has effectively no real search volume, or your impressions were anonymized, or you appear only for query variants that get bucketed elsewhere.
  4. Search Console position is stable, tracker swings wildly day to day. You are likely near a layout boundary where a feature appears intermittently, changing the vendor's slot arithmetic.

What to report instead

Search Consolerank trackingmeasurement

WriteMySEO produces marketing content, not legal, medical, financial, or compliance advice. Figures cited reflect publicly reported industry data at time of writing and shift over time.

Get started

We write this well about your industry, every month.

AI-drafted, human-reviewed SEO content on a flat subscription. Blog posts, metadata, schema, and internal links, shipped on a monthly rhythm.

See plans

More from the blog