Click-through rate (CTR) in SEO is the share of people who click a link out of those who see it in Google results. A SERP is the search engine results page, the list Google shows after a query. Impressions are the times your link appeared on those pages. Clicks are the times someone chose it.
Semrush's CTR guide and Google Ads Help define the math the same way: CTR = (Clicks ÷ Impressions) × 100. If 100 people see your link and 5 click, CTR is 5%. The same arithmetic scales: 50 clicks from 1,000 impressions is also 5%. Coursera's explainer carries the same clicks-over-impressions shape.
Semrush's guide treats a high CTR as a read on title and description quality, a sign that the listing matched what the searcher wanted, and a way to earn more visits without moving up a single position. That is the optimist's reading. The number itself is neutral, and what moves it most is often not your listing at all but the page around it.
CTR Formula
The formula never changes. The inputs do.
Impressions count every appearance, whether the link sat at the top, halfway down, below an AI Overview, which is an AI-written summary box at the top of the results, or below ads and product listings. Clicks count only the choices. The comparison below shows why two keywords at the same ranking can report very different CTRs: the pages around them ask for the click differently.
Google Ads Help words the base as a ratio of people who see an ad or free listing versus people who click it. For organic work, keep the same two inputs beside every read you log: how many impressions the percentage came from, and over which dates. A 50% CTR from 4 impressions carries less weight than a 5% CTR from 1,000.
Average CTR by Position: Why the Table Moves
The old shorthand treated position as destiny. In an early-September comparison of about 600 keywords pulled from Search Console, the free record of your own site's queries and clicks, one operator reports that the old traffic estimate from DataForSEO, a pay-as-you-go SEO data vendor, worked as a fixed lookup: position 1 always read 30.40%, position 3 always 9.73%, position 6 always 4.69%, same number for every keyword, every industry, every results page. That, the author says, is why long-tail estimates came out bloated.
The same comparison reports what happened when the estimator read the live page instead. DataForSEO's use_improved_etv setting, as the author describes it, reads AI Overviews, featured snippets, which are short answer boxes pulled from a page, ads, and shopping boxes, which are product-listing blocks, before assigning a rate. Grouped by position, the implied CTR for keywords sitting at position 1 ranged from 0.04% all the way to 64.86%. Totals fell in that comparison, from 44,405 to 21,792 estimated visits on one site and 10,516 to 1,808 on another. The old typical read ran 3.75 times too high against Search Console clicks in that sample, the new read 1.38 times too high, closer on 73% of keywords, with gains concentrated in the long tail, the longer specific phrases with lower volume, and undershoot on big head terms, the short high-volume queries.
A reply in the same thread names the mechanism: position equals traffic has been a flawed assumption for years because SERP features, AI Overviews, ads, shopping results, intent, which is what the searcher wants to do, and query type can radically change CTR even when two keywords hold the same ranking. Intent here means the job behind the query, learn versus buy versus go somewhere. Query type means the shape of the query itself.
A public post celebrating a first big non-branded ranking for backlink checker ends with the next job in five words: bump up that CTR now. The author credits branded queries, backlinks, and video interest for the ranking, then names CTR as the lever after it. A terminal audit tool described in public posts makes the same point as a workflow: one command flags pages ranking 4 to 10 with low CTR as the cheapest traffic already owned, with a second command for pages averaging 10 to 20, one push from page one.
When Fixed Tables Suffice and When Feature-Aware Wins
Keep both reads. Use each where its error costs less.
A fixed by-position table suffices for rough ordering. The operator behind the 600-keyword comparison says ordering keywords by which ones actually bring traffic is what the data is for in the first place, and reports the feature-aware numbers ordered that list better. For that job, sorting a set of candidates before you open each page, a fixed table gets you a starting order fast. It also suffices for the cheapest triage pass: pages already ranking 4 to 10 with low CTR, and pages averaging 10 to 20 near page one, where the question is which page to open first.
A feature-aware read wins whenever the live page crowds the organic listing. Open the query and look before you quote a number. If an AI Overview answers the question at the top, if a featured snippet lifts one answer above the rest, if ads or shopping boxes push organic listings down, a fixed 30.40% for position 1 will mislead. Those four presences are the ones the early-September comparison says the new math reads. Intent shifts the curve the same way: a learn query with a full answer on the page behaves differently from a buy query with product blocks beside it, even at identical rankings.
Two cautions from that same comparison travel with the switch. The new numbers in that sample improved the long tail most, where the old formula had invented visits that were never there, and now undershoot some big head terms. And every rate in that sample is still an estimate checked against one site's Search Console clicks over 30 days where most traffic was US, in the author's own words on comparability. A feature-aware number is still an estimate; it just carries a date and a page with it.
What to Log with Every CTR Read in Search Console
The Open SEO MCP Skills guide lists Google Search Console, the free tool showing your own site's queries, pages, clicks, impressions and average position, as the source for real rankings, clicks and CTR to pair against vendor estimates. That trio is the ground truth to keep.
For each keyword you care about, keep four items together with the date:
- your ranking, from Search Console or a rank-tracking API
- your clicks and impressions from Search Console
- the vendor CTR or traffic estimate you are checking
- what the live page showed that week, especially whether an AI Overview, featured snippet, ads or shopping block was present
The date matters because the page changes. Date the page with the rate. A full AI Overview one week and a plain page the next produce different odds.
A dated CTR log needs the page it came from, so pull the live results for each tracked keyword on the same day you record the clicks.
Read the formula for the math. Read the page for the odds. Log both with the week attached, and fixed tables stop misleading.






