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

Why Your Rank Tracker and Search Console Disagree on Position

Average position and tracked rank measure different things. Here's what each number actually counts, why they diverge, and how to reconcile them.

Your rank tracker says position 4. Search Console says average position 11.3. Neither is broken. They are measuring different objects, and the gap between them is usually larger than any ranking change you are trying to detect.

If you report both numbers to the same stakeholder without explaining the difference, you will eventually have to defend a "drop" that never happened. Worth understanding the mechanism now.

What Search Console's position number actually counts

Google documents average position as the average of your topmost result's position, computed across impressions. Three parts of that sentence do most of the damage:

It's an average over impressions, not over days or over SERPs. If a query fires 10,000 times from mobile in Brazil at position 14 and 200 times from desktop in the US at position 3, the reported average sits near 14. Your tracker, which checks desktop US once a day, reports 3. Both are accurate descriptions of different populations.

Position is only recorded when an impression happened. Google has documented that results on later result pages generate an impression only if the user actually navigates to that page. A query where you sit at position 47 and nobody paginates that far produces no impression and no position data at all. Your reported average is therefore conditioned on user behavior, not just on where Google placed you. A rank tracker has no such filter — it records 47 regardless.

It's the topmost result. If three of your URLs appear on the same SERP, the property-level and query-level position reflects the best one. Filter by page and you get that page's own position, which means the per-page positions in a filtered report will not average back to the unfiltered query number.

One more: the position is an ordinal slot in the result sequence, not a pixel depth. Google counts the sequence of result blocks, and some SERP features occupy slots in that sequence. "Position 3" on a SERP topped by an AI Overview, a video carousel, and People Also Ask can sit well below the fold. Exactly which features consume a slot has changed over time and is not something you can reliably derive from your own data.

What a rank tracker actually measures

A tracker issues a search request from a chosen location, device profile, and language, parses the returned HTML, and assigns an ordinal to your URL using its own rules about which blocks count as results. That is a single sample from a single configuration at a single moment.

That design has specific consequences:

This is also why the September 2025 change to the num=100 parameter mattered so much. Google stopped reliably serving 100 results per request, and it was widely reported that many sites saw desktop impressions fall and average position improve at the same time — consistent with deep-position impressions that had been generated by automated hundred-result requests disappearing from the dataset. Tool coverage of deep positions changed in the same window. If you have a position time series that spans that period, it contains a measurement break, not a ranking event.

Side-by-side: what each source holds constant

DimensionSearch ConsoleRank tracker
Sampling unitEvery real impressionOne scheduled query
WeightingImpression-weightedKeyword-equal
LocationAll, mixedOne, fixed
DeviceAll, mixed (filterable)One, fixed
Deep positionsOnly if a user paginatedRecorded directly
Zero-demand keywordsAbsentPresent
Multiple own URLsTopmost onlyTool-dependent
Rare queriesSome omitted for privacyNot applicable

Why your average position moves when nothing ranked differently

Because the number is impression-weighted over a changing query set, the mix can move it on its own.

Suppose you rank 3 for a head term with 1,000 impressions and 20 for a tail of long queries with 1,000 impressions. Average position is roughly 11.5. Now a seasonal spike triples tail impressions with no ranking change anywhere: the average slides toward 16. Your dashboard shows a four-point "decline" produced entirely by demand mix.

The same mechanism runs in reverse. Pages that stop surfacing for weak deep-position queries lose those impressions, and the average improves. An improving average position with flat clicks is almost always a mix story, not a ranking story.

Reconciling the two numbers properly

Don't compare the global average to a tracked rank. Narrow Search Console until it describes the same population your tracker samples: one query, exact match, one country, one device.

{
  "startDate": "2025-03-01",
  "endDate": "2025-03-28",
  "dimensions": ["query", "date"],
  "dimensionFilterGroups": [{
    "filters": [
      {"dimension": "query", "operator": "equals", "expression": "running shoes"},
      {"dimension": "country", "operator": "equals", "expression": "usa"},
      {"dimension": "device", "operator": "equals", "expression": "DESKTOP"}
    ]
  }],
  "type": "web"
}

Even then, expect residual disagreement from local variation within the US and from the ordinal-counting differences above. The useful test is not whether the two numbers match — it's whether they move together. If the tracker shows a three-slot gain and the matched Search Console series is flat, the gain exists in one city at one hour and not in the population of real queries.

What to do

  1. Stop reporting unfiltered average position as a KPI. It is a mix-sensitive aggregate. Use clicks and impressions for trend reporting, and position only inside a fixed segment.
  2. Pick one source per question. Diagnosing a specific SERP layout or a competitor's feature placement: tracker. Measuring whether real users see you higher: Search Console, filtered to country and device.
  3. Segment before you compare over time. Hold country, device, and query set constant across both endpoints, or you are measuring demand mix.
  4. Track position distributions, not just means. The share of impressions landing in positions 1–3, 4–10, and 11+ tells you far more than a single average, and it is robust to tail churn.
  5. Annotate measurement breaks. The num=100 change is one; tracker provider migrations and property type changes are others. A time series without annotations invites false causal stories.
  6. When the two disagree, check impression volume first. A tracked keyword with near-zero impressions is a vanity metric regardless of what rank it shows.
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