How to Set a Realistic Organic CTR Benchmark
Published click curves are a starting point, not a target. Build an organic CTR benchmark from your own Search Console data, by position band and intent.

Almost every organic CTR benchmark you will find online is one number pulled from somebody else's dataset, and using it as a target is how teams end up rewriting titles on pages that were already performing at their ceiling. A page's achievable click-through rate is set by its position band, its query intent, its device mix and what else the results page is showing, none of which a published curve knows anything about. This post shows you how to build a benchmark from your own Search Console data in about two hours, and how to tell a genuinely underperforming page from one that is already maxed out.
The short answer
There is no portable number. There is a method, and it takes about two hours the first time and twenty minutes every quarter after that.
- Export your Pages data from Google Search Console for a fixed 28 day window, one export per device.
- Split brand from non-brand, because a blended figure is dominated by whichever group has more impressions.
- Bucket every page into a position band: 1, 2, 3, 4 to 5, 6 to 8, 9 to 10, and 11 or lower.
- Tag each page with an intent type, and note whether its main queries return a crowded results page.
- Take the median CTR of each cohort. That median is the benchmark for every page inside it.
- Grade each page as a ratio: page CTR divided by its cohort median. Call it the CTR index. An index of 1.0 sits exactly at benchmark.
Settle one thing before you start. A benchmark tells you which pages deserve attention. It does not tell you that raising CTR will move your rankings, and search engines say they discount clicks aimed at manipulating results. We went through what the public record actually supports in click data as a ranking signal. Treat the benchmark as a prioritization tool for finding pages whose listing is underselling the page behind it.
Why published CTR curves are a starting point, not a target
Several organizations publish organic CTR by position, and they are worth reading before you build anything:
- Advanced Web Ranking publishes a free CTR study that is refreshed regularly, with filters for device, market and keyword group. It is the most useful of the public sets precisely because you can narrow it rather than swallowing one blended curve.
- Sistrix published a widely cited click curve analysis in 2020, written up by Johannes Beus, built on a very large keyword sample.
- Backlinko has published CTR analyses across millions of search results.
- Seer Interactive has published research specifically on how the presence of SERP features changes organic CTR, which is the variable most curves ignore entirely.
We are deliberately not reprinting their position 1 figures, because a single number averaged across every query type on the internet is not a target for your page. Look at what those studies can and cannot control for.
| What a published curve controls for | What it cannot know about your site |
|---|---|
| Position | Whether your reported position is a stable rank or an average of wild swings |
| Sometimes device | Your device mix, which varies page by page |
| Sometimes market and language | Your brand share, usually the largest single driver of a site's blended CTR |
| Sometimes a broad keyword category | Your query intent mix at the page level |
| Nothing about your specific results pages | Whether an AI answer panel, a local pack, a shopping row or six People Also Ask entries sit above you |
| Nothing about your listing | Whether your title truncates on mobile, or gets rewritten before it is shown |
Two more problems with borrowed curves. Most are built from the keyword sets that rank tracking tools follow, which skews toward commercial head terms and away from the long tail where most sites earn most of their impressions. And a curve published in 2020 describes a results page that no longer exists, because feature density has kept climbing since. Use a public curve as a sanity check on the shape, that CTR falls steeply from position 1 and flattens somewhere in the middle of page one. Never use it as a target for a specific URL.
If the underlying metric is still fuzzy, our introduction to CTR covers what the ratio is and is not.
Stuck on page two?
Real human clicks that lift your CTR and move you up the rankings.
The variables that actually set a page's ceiling
Five things decide what CTR a page can realistically reach. Four of them are sitting in your Search Console export. The fifth is not, and it is the one that explains most of your outliers.
| Variable | Why it moves the ceiling | How to capture it |
|---|---|---|
| Position band | The dominant factor by a wide margin. The gap between position 2 and position 4 is larger than almost anything you can do to a title | Bucket the Position column |
| Brand versus non-brand | Brand queries turn into clicks at rates non-brand queries never reach, because the searcher already decided. Blending the two produces a number that describes neither | Regex query filter, two exports |
| Intent type | An informational query and a transactional one at the same position behave differently, because the searcher is doing different work on the results page | Tag by URL pattern, or by hand for a small set |
| Device | Mobile shows fewer results above the fold and truncates titles earlier. The same page has two different ceilings | One export per device, never blended |
| Results page layout | Features above your listing push it down the pixel column without changing your rank. Not visible in any Search Console report | Manual profiling, covered below |
So your benchmark is not a number, it is a small table of numbers. Three intent types, seven position bands and two devices gives 42 cohorts on paper, most of them too thin to use, leaving the eight or ten that matter. Ten honest benchmarks beat one dishonest one.
Build your organic CTR benchmark from Search Console
This is the part you can run this week. Roughly two hours, most of it in a spreadsheet.
Pick the property. If you have a domain property and URL-prefix properties, use the domain property so you are not silently missing a subdomain.
Set the window. Open Performance, then Search results, then the date picker, then Custom. Use 28 days ending three days before today, so no partial days sit in the sample. Twenty-eight days gives you four of every weekday, which matters because CTR has a weekly rhythm on most sites. Write the exact dates down, because you will want the identical window next quarter.
Set the filters.
| Filter | Set it to | Why |
|---|---|---|
| Search type | Web | Image and Video have completely different click behavior and will pollute the cohort |
| Country | Your single largest market | A global blend mixes markets whose results pages look different |
| Device | Desktop, then repeat the whole export for Mobile | Two ceilings, two benchmarks |
| Query | Custom (regex), Doesn't match, your brand pattern | Removes the brand queries that would otherwise set the median |
A brand regex needs the misspellings and the spaced variants, not just the tidy spelling. For this site it would look like (?i)sparkcliks|spark cliks|spark clicks|sparkclicks|sparkcliks\.com. Build yours by sorting the Queries tab by impressions and reading the top hundred rows, because the variants people actually type are never the ones you would have guessed.
Export. Switch to the Pages tab, turn on all four metrics, then Export, then Google Sheets or CSV. Repeat with the query filter set to Matches instead of Doesn't match to get the brand set, then repeat both for the second device. Four exports for one market.
One limit to know before you trust the file: the interface exports at most 1,000 rows, and Search Console omits rare queries from tables while keeping them in chart totals. On a site with a real long tail your export is a top slice, not your data. We covered both limits and the ways around them in how to measure organic CTR in Google Search Console.
Build the sheet. The export lands as Page, Clicks, Impressions, CTR, Position in columns A to E. In some locales the CTR column arrives as a percentage string, so convert it to a number before anything else. Then add four columns:
| Column | Contents | How |
|---|---|---|
| F: Position band | 1, 2, 3, 4-5, 6-8, 9-10, 11+ | `=LOOKUP(E2,{0,1.5,2.5,3.5,5.5,8.5,10.5},{"1","2","3","4-5","6-8","9-10","11+"})` |
| G: Intent | informational, commercial, transactional, local | Tag by URL pattern, or by hand for a small set |
| H: Cohort median | Median CTR of pages sharing this band and intent | `=MEDIAN(FILTER($D$2:$D,$F$2:$F=F2,$G$2:$G=G2,$C$2:$C>=1000))` |
| I: CTR index | Page CTR divided by cohort median | `=D2/H2` |
Those are Google Sheets formulas. Excel 365 has FILTER and MEDIAN too, though the argument separator depends on your locale. The >=1000 condition inside the filter is deliberate and it matters: pages with too few impressions must not be allowed to set the benchmark everyone else is measured against.
Read the result. Example figures below, not SparkCliks data. Non-brand, desktop, one market, 28 days:
| Position band | Pages in cohort | Median page CTR | Impression-weighted CTR |
|---|---|---|---|
| 1 | 6 | 24.1% | 31.8% |
| 2 | 9 | 14.6% | 12.9% |
| 3 | 12 | 9.8% | 8.4% |
| 4-5 | 21 | 6.2% | 5.1% |
| 6-8 | 34 | 3.4% | 2.9% |
| 9-10 | 27 | 2.1% | 1.8% |
| 11+ | 190 | 0.6% | 0.4% |
Two things jump out of a table like that, and both are the point. The median and the impression-weighted average disagree, and they disagree most in the bands where one big page dominates the impressions. And the top bands hold too few pages for a median to mean much, which is a real finding about your site rather than a flaw in the method.
Grade with a CTR index, not an absolute number
Use the median for the benchmark itself. Any cohort of thirty pages contains two or three with strange queries, and a mean gets dragged around by them while a median shrugs.
Then grade each page as a ratio rather than a difference. A page at 4.1% in a cohort whose median is 3.4% has an index of 1.21. A page at 4.1% in a cohort whose median is 6.2% has an index of 0.66. Same CTR, opposite conclusions, and only the index tells you which is which.
| CTR index | Reading | What to do |
|---|---|---|
| Below 0.60 | Far below cohort | Check for a data problem first, then a listing problem |
| 0.60 to 0.85 | Below cohort | Real candidate for a title and description test |
| 0.85 to 1.15 | At benchmark | Leave it alone unless the whole cohort is weak |
| 1.15 to 1.50 | Above cohort | Study the listing and copy the pattern to weaker pages |
| Above 1.50 | Far above cohort | Suspect brand leakage or a mis-banded position before you celebrate |
The index has one property worth saying out loud, because it is the reason this method survives contact with a real site. It cancels anything that moves the whole cohort. A seasonal dip, a results page redesign, a market-wide fall in click volume: each of these hits the numerator and the denominator together, and the index barely moves. An absolute CTR target has no such protection, which is why absolute targets need rewriting every few months and index targets do not.
The flip side is that the index says nothing about whether the cohort itself is any good. If every page in your 6-8 band sits at half of what a public curve suggests for that range, an index of 1.0 means "typical for us", not "healthy". Check the shape of your bands against a published curve once a year for exactly that reason, then go back to grading against yourself.
How SERP features cap what is achievable
Search Console tells you where you ranked. It does not tell you what else was on the page, and that gap is where most "why is this page underperforming" investigations quietly die.
Rank position and pixel position are different measurements. Position 3 on a query carrying an AI answer panel, a local pack and four text ads can sit entirely below the fold, while position 3 on a plain ten-result page is the third thing a searcher sees. Same number, different event.
| Feature on the results page | Direction of effect on your achievable organic CTR | Note |
|---|---|---|
| AI answer panel covering the query | Down, sometimes sharply | The answer may be enough on its own, so the click never happens |
| Featured snippet held by another site | Down for everything below it | It takes the top slot and answers first |
| Featured snippet held by you | Up, and Search Console reports your position as 1 | Do not leave these pages in the same cohort as plain listings |
| Local pack | Down for non-local results | Occupies the top of the page on any query with local intent |
| Shopping or product carousel | Down on commercial queries | Pushes organic results well down the pixel column |
| Four text ads above the fold | Down, and it moves day to day | Ad load varies with auction pressure, so this is noise you cannot see in your reports |
| People Also Ask high on the page | Down, plus it keeps searchers on the results page | Expanding an entry pushes everything below it further down |
| Sitelinks on your own result | Up | A larger listing occupies more of the screen |
| Video carousel | Down unless you are in it | Common on how-to and product queries |
You can capture this without a rank tracker. Take the top five queries for a page from the Queries tab with a page filter applied, run each one in a clean browser session set to the right country, and record a one word SERP profile: clean, moderate or crowded. Twenty minutes covers thirty pages. Then compare pages only within the same profile, and accept that a crowded-profile page with an index of 0.8 may be sitting exactly at its ceiling.
One caveat on the tooling: the Search Appearance tab shows which rich result types your listing earned, not what competitors have or what else the page contains, so it answers a much narrower question than people assume. And the effect this table describes is a slow drift rather than an event, which is why your CTR can fall for months while your ranking never moves. We unpacked that in zero click searches.
The sample size gate: which pages can be graded at all
Grading a page against a benchmark is a comparison of two proportions, and the fragile one is usually the page. CTR noise shrinks with the square root of impressions, which puts a hard floor under what you can even ask.
Taking a cohort median of 3% and two standard errors as a crude "probably not noise" boundary, here is roughly how wide the uncertainty on a single page's index is:
| Page impressions in the window | Index range indistinguishable from 1.0 |
|---|---|
| 500 | 0.49 to 1.51 |
| 1,000 | 0.64 to 1.36 |
| 2,500 | 0.77 to 1.23 |
| 5,000 | 0.84 to 1.16 |
| 10,000 | 0.89 to 1.11 |
| 25,000 | 0.93 to 1.07 |
Read the first row properly. A page at 500 impressions with an index of 1.4 is not beating its cohort by 40%. It is a page you cannot grade at all, and the 1.4 will be a different number next month with nothing changed.
Three honest caveats. This treats impressions as independent draws, which they are not, since the same person searching twice or a single viral day breaks the assumption. It ignores the uncertainty in the cohort median itself, which is real whenever the cohort is small. And it is a triage filter for deciding what to investigate, not a significance test to quote in a deck.
Cohort size has its own floor. Below about fifteen pages a median is close to a coin flip, and thirty is where it settles down. If a band is too thin, merge it upward (positions 1, 2 and 3 become a single "top 3" band) rather than claiming a precision you do not have. The same applies to intent tags: three intent types with thirty pages each beats seven types with eight pages each, every time.
Pool the small pages instead of grading them. Fifteen location pages at 400 impressions each behave, for this purpose, like one page at 6,000. A pooled index for the template is a real and actionable number, and template-level fixes are usually what those pages need anyway.
Seasonality and position drift
Three traps will fake a result for you if you let them.
Seasonality. Never benchmark a seasonal page against the last 28 days alone. Two defenses, and use both. Compare year over year for the same calendar window, and lean on the index, since a within-period comparison against pages sharing the same season makes seasonality mostly cancel. The index only fails when the seasonality is page-specific rather than cohort-wide, which is exactly the case where the year over year comparison saves you.
Position drift. An average position of 7.4 across 28 days can be a page that sat at 3 for five days and at 12 for the rest. Its CTR is a blend of two different situations and its band is fiction. Catch it by opening the page's position trend in the Performance chart, or by exporting the same window in four weekly slices and comparing the four position figures. If they span more than about two positions, pull the page out of the set that defines the cohort median and grade it in the band it actually lived in.
Brand leakage. A regex that misses one brand variant leaves a handful of very high CTR pages inside the non-brand cohort and lifts the median for everybody else. That is why the grading table above says to check any index over 1.5 before celebrating it. Open the page's own Queries tab and read the top ten rows. If your company name is in there, your regex has a hole in it.
Underperforming or at its ceiling: a decision checklist
Run these in order against any page you suspect. Stop at the first honest "no".
- Does the page have at least 2,500 impressions in the window? If not, it cannot be graded individually. Pool it with its template.
- Is its average position stable across four weekly slices, within about two positions? If not, its band is wrong.
- Are its top queries genuinely non-brand? Read the top ten rows, do not trust the regex.
- Is it in the right cohort for its intent type and device, and does that cohort hold at least fifteen pages?
- Do its top five queries return a crowded results page? If they do, its ceiling sits below the cohort median and an index of 0.8 may be exactly at ceiling.
- Does its title survive truncation on the device you are grading? Check the rendered listing, not the character count in your CMS.
- Is the search engine rewriting its title or description? Search the query and look at what is actually displayed.
- Is another of your pages competing on the same queries?
- Was there a click campaign, a paid campaign or a press spike inside the window?
- After all of that, is the index still below about 0.85 with enough impressions behind it to be sure? That is a real gap, and it earns a test.
Most pages that get flagged on instinct fail at step 1 or step 5. Working the list in order is what stops a team spending a sprint rewriting titles that were never the problem.
What to do with a page that is genuinely below benchmark
Design the change as a test, or you will never know whether it worked.
Baseline window. 28 days before you touch anything, same filters as the benchmark. Record the index, not the raw CTR.
Control set. Pick at least ten comparable pages from the same cohort and change nothing about them for the duration. Comparable, not leftovers: same band, same intent, same device profile. The control set is what tells you whether a rise was yours or the season's.
Change window. Make the edit, wait for the page to be recrawled and the new listing to appear, and only then start the clock. Counting from the day you hit publish mixes the old and new listings inside one sample.
One variable. Title or description, not both. Change both and a rise tells you only that something worked, which is not a finding you can apply anywhere else.
What counts as signal. The treated pages' median index rises and the control set's does not. If both rise, the results page changed or the season did, and your rewrite gets no credit. Use the sample size table above to confirm the movement clears the noise floor for those impression counts.
What usually moves the number: a title matching the query the page actually earns impressions for, a description doing real work instead of restating the title, and a title that does not truncate mid-phrase on mobile. There is a quieter one that costs nothing, which is making the title and the on-page headline agree so the click is not immediately followed by a moment of doubt. We covered that in matching your title tag to your landing page headline.
Where bought clicks fit into a benchmark
Worth being direct about, since this is a company that sells clicks.
Search clicks from a campaign are real events on the results page, so they land in your Performance report like everything else. That has two effects on a benchmark, and the second is the one nobody expects.
The treated page's index goes up because you added clicks to the numerator. That is arithmetic you paid for, not evidence that the listing became more persuasive.
If campaign pages sit inside the cohort, they lift the median for everyone else. Untreated pages then get marked as underperforming against a benchmark a campaign inflated. Exclude any page under an active or recent campaign from the set that defines the cohort median. This is the most common way a benchmark gets quietly corrupted, and it is easy to miss because the corrupted number still looks perfectly reasonable.
SERP Clicks is a crowd-sourced pool of paid human clickers who search a keyword, scroll the results, click your listing, stay on the page for around a minute, optionally visit a second page, and never hit back. SparkCliks says the pool is more than 10,000 clickers, and plans run in monthly click credits from 120 at the entry tier up to 12,000 at the top.
What a click service can honestly promise is the clicks and settings you configure, visible in your own Search Console and analytics. It cannot promise a ranking, a position or traffic, and SparkCliks puts that plainly in its own FAQ: there are no guarantees in SEO unless you happen to own the search engine. Search engines publicly deny using some behavior signals as direct ranking factors, and say they discount clicks aimed at manipulating results. Separately, if you point any automated traffic product at pages carrying network ads, those visits count as invalid traffic under every major ad network's rules, and the penalty lands on your account rather than the provider's.
Frequently asked questions
FAQ
Compare it to the median CTR of your own pages in the same position band, intent type and device, rather than to a published figure. Divide the page's CTR by that median: below roughly 0.85 is worth investigating, and 0.85 to 1.15 is normal for your site at that position.
Use them for the shape, not the number. Studies from Advanced Web Ranking, Sistrix, Backlinko and others average across query types, markets and results page layouts that have nothing to do with your pages, so their position 1 figure describes the internet rather than your URL.
Around 2,500 impressions in a 28 day window is a sensible floor for grading a single page, and 5,000 or more makes the reading comfortable. Below that, pool the page with others built from the same template and grade the template instead.
Almost always because the results page changed around you. An AI answer panel, a new featured snippet, an extra ad slot or a People Also Ask block pushes your listing further down the screen without touching your rank, so your reported position stays flat while fewer people ever see you.
No. Brand queries come from searchers who already decided, so they click at rates non-brand queries never reach, and blending the two gives you a site-wide average that describes neither group. Split them into separate exports with a regex query filter before you calculate anything.
Once a quarter is enough for the cohort medians, using the same 28 day window length each time so the comparison holds. Rebuild sooner if you launch a large batch of pages, enter a new market, or notice the results pages for your main queries changing shape.
Related articles

Click Signal Measurement: What Analytics Can and Cannot Show
Click signal measurement stops at the click: Search Console cannot see your page, GA4 cannot see the results page. Here is which tool answers which question.

Dwell Time vs Time on Page vs Session Duration
Dwell time vs time on page vs session duration: who holds each stopwatch, why GA4 dropped time on page, and how to read the numbers you can actually see.

Bounce Rate Is Not a Ranking Factor: Why Still Track It
Bounce rate is not a ranking factor: search engines never see it. Here is what the metric really measures in GA4, and the three jobs it still does well.
