All free tools
Free · no signup

CTR Curve Calculator

Paste a Search Console export and get your own click-through rate by position, with the impression counts that show which parts of the curve your data can actually support. Runs in your browser.

Your Search Console export

38 rows read

Read queries, pages, clicks, position.

Your export never leaves this page — the file is read and analysed in your browser, and nothing is uploaded.

6,413clicks79,950impressions8.02%overall CTR
1
31.69%14,200 impr.
2
14.36%2,750 impr.
3
9.73%4,500 impr.
4
no data
5
5.18%11,200 impr.
6
3.75%4,000 impr.
7
2.55%4,700 impr.
8
2.93%4,000 impr.
9
no data
10
2.14%1,400 impr.
11–20
0.30%25,700 impr.
21–30
0.11%4,500 impr.
31–50
0.00%1,100 impr.
51+
0.00%1,900 impr.

Greyed bars have under 100 impressions or fewer than 3queries behind them. They’re shown because hiding them would overstate how much your file supports, but don’t read anything into them.

Each bucket is total clicks divided by total impressions, not the average of each query’s CTR — averaging the ratios lets a query with three impressions count as much as one with thirty thousand. Search Console reports position as an average over impressions, not a rank the page held. A query sitting at 11.4 may never have been at 11 — it could be 4 on mobile and 30 on desktop, or 8 last week and 15 this week.

Share this result

Posts the numbers below and nothing you typed or pasted, and you get to edit it before it goes out.

Built my own CTR curve from my Search Console data: 31.7% at position 1, 0.3% in positions 11–20. My numbers, not an industry average.

Why we didn’t just publish a table

Every CTR-by-position table you have seen is somebody else’s average: a sample of sites in some set of industries, over some period, across queries that look nothing like yours. Reproducing one of those tables here would be easy, would rank, and would be close to useless for estimating your own traffic — so we built the tool instead.

The variation between real curves is not small. Branded queries pull position-one rates far above any published average. An unbranded commercial query on a results page carrying ads, an AI summary and a product carousel can lose most of its clicks before the organic list starts. Two sites in the same industry can differ by a factor of several at the same position.

Which means the only curve that predicts your traffic is the one built from your own impressions and your own clicks. You already have that data, and it takes one export.

The arithmetic that most curves get wrong

Each bucket here is total clicks divided by total impressionsfor the queries that landed in it. That sounds obvious and it’s not what a spreadsheet does by default.

The default is to average the CTR column — take each query’s CTR and mean them. That gives a query with three impressions and one click a 33% CTR, weighted equally against a query with thirty thousand impressions at 4%. Do that across a long tail of tiny queries and you get a curve where the middle positions outperform the top ones, which is a statistical artefact rather than a finding about search.

Reading your own curve honestly

  • Check the impressions column before believing a bar. The greyed bars have under 100 impressions or fewer than three queries behind them. They’re displayed rather than hidden precisely so you can see where your data runs out — which on most sites is somewhere around position 15.
  • Expect position 1 to be inflated by your brand. People searching your company name were always going to click. If you can export with a query filter that excludes brand terms, the second curve is the one to use when estimating an unbranded keyword.
  • Remember what a position bucket is. Search Console reports an average position weighted by impressions, so a query in the “position 4” bucket may never have held position 4 — it may be 2 on mobile and 9 on desktop. The curve is a summary of averages, not a measurement of what happens at a rank.
  • Rebuild it occasionally. Results pages change. A curve you derived last year describes a search results page that may no longer exist.

What to use it for

The honest use is comparative, not predictive. If your curve says position 5 earns roughly three times what position 12 does on your site, then a page-two query with 4,000 impressions is worth more attention than one with 400 — which is a decision you can make confidently. Turning that into “this will earn 210 extra clicks a month” is a forecast built on an average of averages, and it will be wrong more often than it’s right.

The natural next step is the striking distance finder, which takes the same export and lists the queries close enough to page one to be worth the effort. Between the two you get a shortlist ordered by what it would plausibly be worth, using only your own numbers.

And when you act on one, the position you multiply by has to be real. Rank tracking checks the same keywords on a schedule instead of averaging three months together, and Organic Keywordsshows the same picture for pages and competitors that Search Console can’t see at all.

The post on which page-two wins are real works through the whole sequence — pull the list, price it with this curve, then decide whether the page should be touched at all.

Questions

What is a CTR curve?
The relationship between where you rank and how often people click. Position 1 earns some share of the searches it appears in, position 2 earns less, and so on down. It's used to estimate what a ranking improvement would be worth before you attempt it.
Why build my own instead of using a published one?
Because published curves are averages across other people's sites, queries and industries, and the variation between them is enormous. Branded queries behave nothing like unbranded ones. A results page full of ads, an AI summary or a video carousel changes the whole shape. Your own data is the only version that predicts your traffic, and you already have it.
How is each bucket calculated?
Total clicks divided by total impressions for every query that fell in that position bucket. It is deliberately not the average of each query's CTR, because that would let a query with three impressions count as much as one with thirty thousand, which is how curves end up claiming position 7 beats position 2.
Why are some bars greyed out?
Because there isn't enough behind them to mean anything — under 100 impressions or fewer than three queries in the bucket. They're shown rather than hidden so you can see exactly how much of the curve your data actually supports, which is usually less than people assume at the bottom end.
My position 1 CTR looks impossibly high. Is that wrong?
Probably not. Position 1 on most sites is dominated by branded queries — people searching your name, who were always going to click. That's real, and it's also why applying your own position 1 rate to an unbranded keyword you hope to win will overestimate the result. If you can, export with a query filter excluding your brand and build a second curve.
What date range should I export?
Long enough that the thin buckets fill up — three months or more for most sites. The tool shows impressions per bucket so you can see whether your range was long enough rather than guessing.
Is my Search Console data uploaded?
No. The file is parsed and aggregated in your browser, and nothing leaves the page.

More free tools

A curve is only useful if the positions are real

Search Console gives you an average over months. Rank tracking checks the same keywords daily or weekly, so the position you're multiplying by your CTR is one you actually hold.

7-day free trial Cancel anytime