CTR and average position in Search Console, explained
How Search Console calculates CTR and average position, why both averages mislead, and how to build an expected CTR curve from your own data.
Click-through rate (CTR) is clicks divided by impressions. Average position is the topmost position your site held in each search where it appeared, averaged across all of those searches. Both are averages over thousands of different searches, so a site-wide figure hides more than it shows. Read them per query or per page, and judge CTR against what your own site earns at the same position.
How average position is calculated
Google's counting rules (How position is counted) come down to a few points:
- Only your highest result counts. If three of your links appear in one search at positions 2, 4 and 6, that search records position 2.
- Then it averages across searches. Google's own example: one search shows your links at 2, 4 and 6 (recorded as 2), another at 3, 5 and 9 (recorded as 3), so the average position is 2.5.
- No impression, no position. A position is recorded only when the link earns an impression, and a dash in the report means none was recorded.
- Counting order. Positions run from top to bottom in the main column, then down the secondary column. In image results they run left to right, then top to bottom.
- Some blocks are one position. An AI Overview occupies a single position and every link inside it shares it. A featured snippet typically sits at position 1.
Note what this means for a single page. The Pages table counts by page, so a page's position is that page's own topmost position in each search. In the chart, which counts by property, a search where your home page sat at 3 and a blog post at 8 counts as position 3 for the site.
Why a site-wide position can fall while things get better
Average position is a weighted average, and averages move when the mix changes. Suppose your site earned 50,000 impressions a month at an average position of 12.0, with 1,900 clicks. You publish 30 new guides. Over the next month they start appearing for a long tail of new searches, collecting 40,000 impressions at an average position of 28 and 160 clicks.
- Clicks rise from 1,900 to 2,060, up about 8%.
- Average position falls from 12.0 to 19.1, because (50,000 × 12 + 40,000 × 28) ÷ 90,000 = 19.1.
- CTR falls from 3.8% to 2.3%.
Two of the three headline numbers say things got worse, yet you gained clicks and lost nothing. This is why you should track a fixed set of queries, or a fixed set of pages, rather than the property's overall average. When the average moves, open the Queries tab with a comparison period and sort by the difference column before drawing conclusions.
How CTR works, and why it depends on position
CTR is clicks ÷ impressions, shown as a percentage. It is shaped far more by where a result sits than by anything else: results near the top are clicked many times more often than those further down. Google does not publish benchmark CTRs, but many industry studies have measured the curve. AutoPSEO uses a blend of published studies as its fallback when a site has too little data of its own:
| Position | 1 | 2 | 3 | 5 | 10 | 15 | 20 |
|---|---|---|---|---|---|---|---|
| Benchmark CTR | 27.6% | 15.8% | 11.0% | 6.3% | 2.4% | 1.2% | 0.7% |
Treat these as a shape, not a target. Your own curve can sit well above or below them, depending on what else appears on your results pages (ads, AI Overviews, videos, shopping results), how many of your searches include your brand name, and whether people want a quick fact or a full article. That is why the most useful benchmark is the one you build from your own data.
Build your own expected CTR curve
You can do this with a spreadsheet in about twenty minutes.
- Open Performance → Search results, set the date range to the last three months and the search type to Web.
- Remove branded searches. If your property has the branded queries filter, choose Non-branded under the query filter. If not, add a query filter with a custom regex set to "Doesn't match regex" and list your brand's spellings (Advanced filtering). Branded searches have far higher CTRs and would inflate the curve.
- Export the Queries table. The interface exports at most 1,000 rows; larger sites need the API or a tool that uses it (Search Console data limits).
- Drop thin rows. Remove queries with fewer than 10 impressions. Below that, one extra click moves CTR by ten points or more. The cut-off is a judgement call; raise it on a big site.
- Bucket by position. Round each query's position to the nearest whole number and keep positions 1 to 20.
- Divide totals, not averages. For each bucket, add up the clicks, add up the impressions, and divide. Averaging the CTR column instead would give a two-impression query the same weight as a two-thousand-impression one.
- Mark thin buckets. A bucket with only a few hundred impressions is unreliable. AutoPSEO treats any position with fewer than 200 impressions as too thin and falls back to the benchmark for it.
Now compare each query with its bucket. Say position 4 holds 38 of your queries with 21,400 impressions and 1,520 clicks, an expected CTR of 7.1%. A query at position 4.2 with 2,000 impressions and a CTR of 2.5% earns about a third of what your site usually earns at that spot. Something about its result is turning searchers away, and that is worth a look.
How far below the curve is too low?
There is no official threshold; it is a judgement call that depends on how many impressions sit behind the number. With a few hundred impressions, CTR swings by chance, so only large gaps mean anything. With tens of thousands, a smaller gap is real. For reference, these are the lines AutoPSEO draws:
- The CTR Benchmark report marks a query or page as under-performing when its CTR is more than 20% below the expected value for its position.
- The Page Poaching report lists results already near the top that earn less than 70% of the expected CTR.
- The content engine queues an optimisation for one of its own articles when it shows at positions 8 to 20 with at least 30 impressions in 28 days but is clicked less than 60% as often as the benchmark curve predicts.
Start strict (well below the curve, with plenty of impressions) and loosen the rule once you have fixed the obvious cases.
Reading position changes without overreacting
- Watch a fixed list. Pick the 20 to 50 searches that matter to the business and follow those, rather than the property average.
- Compare like with like. Use windows of equal length that contain the same weekdays, such as the last 28 days against the 28 before.
- Check impressions alongside. A position change on a query with 40 impressions a month is mostly noise.
- Do not rank-check by hand. Results vary with location, language, device and time, so the result you see when you search is one sample, not a measurement.
Where AutoPSEO helps
The CTR Benchmark report builds the curve described above from your own data, falls back to the benchmark for thin positions, and adds up the clicks each under-performing query or page leaves behind. Page Poaching applies the same curve to estimate what moving up would be worth, and CTR curve modelling fits a smooth curve to it. Rank Changes tracks position movement per query, so a shift in the mix does not look like a ranking loss. Without an account, the free CTR Opportunity Analyzer runs the same comparison on an exported CSV.
Keep reading
SEO basics in 10 minutes: how Google finds, stores and ranks pages
The three stages of Google Search, the four Search Console numbers, and how to tell which stage a problem belongs to.
What is Google Search Console? A plain guide for site owners
What Search Console reports, how its data is limited, which property type to add, and the first checks to make.
Clicks vs impressions in Google Search Console
How Google counts impressions and clicks, why totals disagree between views, and how to read the gap between the two.