SEO Benchmarking: How to Measure Progress vs Competitors

by Rohail Taha
19 minute read

SEO benchmarking goes wrong in one particular way. The number moves because the list of keywords behind it changed, not because your rankings changed.
Between June and August 2026, average position on RankCaddy’s own site went from 28.6 to 30.6. A higher average position is a worse one, so the site looks as though it slipped. Over the same weeks, the keywords the team actually cared about improved.
Both numbers came out of the same Search Console property, over the same three months, and both are correct arithmetic. The only difference is which queries went into the calculation. One average ran across whatever queries appeared that month. The other ran across a keyword set that was held fixed.
This guide covers three things. First, what SEO benchmarking is, and how a benchmark differs from a metric, a baseline and a KPI. Second, the three reference points you can fairly compare your numbers against. Third, how to build a benchmark that cannot quietly tell you the wrong story.
TL;DR: SEO benchmarking only works when something stays fixed. A benchmark is only as good as the thing it holds constant. Compare a fixed set of keywords, on one device and in one country. Choose the window before you look at the data. Compare against your own past and against named competitors. Sector averages are a sanity check, never a target.
What is SEO benchmarking, and what is it not?
SEO benchmarking means picking a reference point, then measuring your search performance against that same point on a schedule. The reference point is what makes the measurement mean anything. Without one, a metric is just a number that moved.
A benchmark is only as good as the thing it holds constant. Most SEO benchmarks hold nothing constant.
Metric, baseline, benchmark and KPI get used as if they all meant the same thing. They do not, and keeping them apart is most of the work.
Your SEO baseline is a fact about your own history. It is the value you started from, recorded with its date and its source. Your benchmark is a choice about what counts as good. Treat the two as one thing and your report cannot say what its numbers are being compared against.
| Term | What it is | The same example, four ways |
|---|---|---|
| Metric | The raw number, as the report gives it to you | Average position: 30.6 |
| Baseline | The value you started from, with its date and its source | Average position on the day tracking started, from the tracked keyword list |
| Benchmark | The reference point you judge the metric against | Average position for the same keyword set, ten weeks earlier |
| KPI | The metric you have agreed to be held accountable for | Average position across the 40 keywords the client is paying for |
SEO metrics are cheap to collect and easy to misread. Settle all four definitions in the table above before anyone builds a report. Then the useful question stops being “is 30.6 good?” and becomes “compared with what, measured how, over which weeks?”
The three things you can benchmark against
There are only three things you can compare an SEO number against: your own past, your competitors, and a sector average. The three are not equally useful. Competitive benchmarking is the easiest of the three to defend, because it is the only one that moves with the market you are competing in.
| Reference point | What it can tell you | What it cannot tell you |
|---|---|---|
| Your own past performance | Whether the numbers you own moved, by how much, and when | Whether the whole market moved with you |
| Your competitors | Whether you gained ground on the queries you both want | Their conversion rate, their revenue, or what they changed |
| Sector averages | Roughly what range an industry sits in | Anything at all about your site, your pages or your queries |
Your own history tells you whether you improved. Only a competitor set tells you whether improving was enough.
Your own past performance

Your own history is the easiest baseline to get hold of, and the easiest one to get wrong. The report it comes from can change without anybody telling you. A logging error prevented Google Search Console from accurately reporting impressions from 13 May 2025 until 27 April 2026.
Google acknowledged it on 3 April 2026 and marked it resolved in early May 2026. The fix applies to the reporting from that point on. The issue was resolved going forward, while the affected historical period remains unreliable for impression-based comparisons.
Treat the whole of that period as a hard boundary in your own data. Impressions on one side of the boundary do not compare with impressions on the other. Neither do the two metrics calculated from impressions, click-through rate (CTR) and average position. Clicks were not affected, so clicks are the one number you can carry across the boundary and still trust.
If your year-on-year comparison has a baseline anywhere inside those 50 weeks, you are comparing corrected impressions against inflated ones. Calling the difference performance would be wrong. Either move the window, or compare clicks only and say so in the report.
Your competitors
A competitor set is the easiest reference point to defend, because it shows you the one thing your own history cannot: whether the market moved too. Say you lost two positions in a quarter, and the three sites above you lost four. That was a good quarter. Your own numbers alone cannot tell you so, because they only show the two positions you lost.
Pick the set by three tests, in this order:
- Search competitors, not business competitors. Your set is whoever holds the results pages you want. That often includes a marketplace, a forum thread and a publisher you have never thought of as a competitor.
- The keyword-overlap test. If a domain does not rank on a decent share of the keywords in your basket, leave it out. It is not competing with you on the keywords you are measuring.
- Comparable, not aspirational. One domain far above you gives you useful context. Three domains far above you give you a report nobody can act on.
Be honest about the limits of a competitor set. You can see a competitor’s position on your keywords and how that position moves. You cannot see their conversion rate, their revenue, their content calendar, or which of their changes caused the movement you can see.
A competitor comparison is also the one reference point Search Console cannot give you. Search Console reports your own property and nobody else’s. RankCaddy’s rank tracking handles competitors inside the project. You can add up to nine competitor domains, and each one becomes a line on the project’s rank history graph and on the individual keyword graphs, checked daily against the same keywords as your own.
One constraint decides when you have to add those domains: competitor history starts the day you add the domain, and none of it is backdated. If you want a competitor comparison to show in January, you have to add the domains now.
One limit is worth stating plainly. RankCaddy does not publish SEO industry benchmarks. It compares your data against your own history, and against competitor domains you choose. Sector ranges are too wide for an industry average to help you anyway, which is why competitor rank tracking is the part worth having.
When the graph shows a gap on one keyword, the next move is a change to a page, not a change to your strategy. The quickest of those changes are the usual SEO quick wins. Write a title that matches the query. Add an internal link from a page that already ranks. Add a section that answers the question the rest of the results page is answering.
Sector averages
A sector average is the weakest reference point available. The numbers show why. In a 2026 compilation of sector benchmarks, organic search accounts for 15% to 22% of total traffic in banking, credit and lending, and 32% to 40% in luxury.
| Sector | Organic share of total site traffic |
|---|---|
| Banking, credit and lending | 15% to 22% |
| Luxury | 32% to 40% |
A number whose normal range runs from 15% to 40%, depending on the industry you are in, cannot work as a target. Use it as a sanity check instead. If your organic share is 3% or 70%, something is worth looking at. Anywhere in between, the sector average has told you nothing you can act on.
The same reasoning answers the question people actually ask: is 75 a good SEO score? No score out of 100 is a benchmark of anything. A site audit score measures how closely your site matches that vendor’s checklist, and vendors do not agree on the checklist.
An SEO visibility score has the same problem. It works as a trend line, as long as the keywords behind it never change. It is not a grade. The same goes for every score that bundles several measurements into one number, including ours.
Published CTR curves fail for a different reason. The results pages they were measured on have changed since. In the first four months of 2026, 68.01% of US Google searches ended without a click, against 60.45% in 2024. The rise is 7.5 percentage points in two years, according to SparkToro’s clickstream analysis.
An Ahrefs study of 300,000 Google searches found that the presence of an AI Overview was associated with a 34.5% lower average click-through rate for organic results. A curve published in 2023 describes a results page that no longer exists. Benchmark against your own recent numbers instead of against anybody’s published curve.
Which metrics are worth benchmarking
Seven metrics are worth the trouble. What you hold constant matters more than which of them you pick.
A position checked against the results page itself is not affected by the Search Console impressions error above. You chose the keyword list and you set the checking schedule, so both stay the same from one measurement to the next. That is a large part of why tracking rankings still matters.
If you can only keep two metrics, keep non-branded clicks and position on a fixed keyword set. Clicks tell you whether search sent anybody. Position tells you whether the work moved the keywords you agreed to be judged on.
| Metric | What it tells you | What it cannot tell you | Hold constant |
|---|---|---|---|
| Position on a fixed keyword set | Whether the pages you chose are gaining ground on the terms you chose | Whether anyone clicked | The keyword list, device, country, language, search type |
| Non-branded clicks | Whether search is sending you demand you did not already own | Which query earned it, when the query is anonymised | The brand-term list and the length of the window |
| Branded and non-branded split | How much of your search performance your brand name is doing | Why the brand grew | The brand-term definition, word for word |
| Impressions | How often Google put you in front of somebody | Anything, on their own | Nothing you can hold constant across 13 May 2025 to 27 April 2026 |
| CTR by query group | Whether your snippet earns the click for that kind of query | How you compare with a published curve | The query group and the position band |
| Referring domains | Whether anybody new started citing you | That the links did the work | The index you count them in, and the counting rule |
| Core Web Vitals | Whether real users get a fast, stable page | Where you will rank | The device class and the reporting window |
Which Core Web Vitals to benchmark
Plenty of guides still name the wrong three metrics. The current three are Largest Contentful Paint, Interaction to Next Paint and Cumulative Layout Shift. Google’s thresholds for them are 2.5 seconds, 200 milliseconds and 0.1. Interaction to Next Paint replaced First Input Delay on 12 March 2024. Any page that still tells you to benchmark First Input Delay was written for 2023.
Why impressions are not a benchmark
Impressions earn the warning in the table above. Across RankCaddy’s own reporting window, 1,199,638 non-branded impressions produced 195 clicks. That is a non-branded CTR of 0.02%. Branded queries produced 1,218 of the site’s 1,413 total clicks, which is 86% of the clicks from about 0.3% of the impressions.
Non-branded impressions rose from 12,058 in June to 19,085 in August, a rise of 58%. Not one extra visitor came with them. RankCaddy’s site is young and sits mostly on pages three and four of the results, so take these figures as an illustration of a single point. Impressions on their own are not a benchmark of anything.
Why branded and non-branded belong apart
Branded and non-branded queries belong in separate benchmarks, for the same reason impressions do. Branded terms make up around 44% of Google searches. A benchmark that mixes them in is partly measuring how well known you already are.
When one group of queries has a normal position but an unusually low CTR, the fix is usually the title and the description. An on-page check will tell you that in a few seconds.
Why SEO benchmarking goes wrong: the fixed-basket problem
The most common way an SEO benchmark lies has nothing to do with a bad metric or a bad tool. It is a keyword set that changes between the first measurement and the second. The average then gets worked out over a different group of keywords each time. Here is what a changing keyword set looks like on our own site, with the numbers.
The same site, two opposite verdicts
We pulled RankCaddy’s Google Search Console data for the three months Google had reported, 5 June to 23 August 2026. Then we stripped out every query containing “rankcaddy” or “rank caddy”. That left 852, 861 and 910 distinct non-branded queries in the three months.
Then we ran the same numbers twice. The first run covered whatever queries happened to appear that month. The second covered only the 322 queries that appeared in all three months.
| Month (2026) | Non-branded queries | Impressions | Average position, all queries that month | Average position, fixed 322-query basket |
|---|---|---|---|---|
| June (5 to 30) | 852 | 12,058 | 28.6 | 29.4 |
| July | 861 | 13,996 | 25.8 | 27.1 |
| August (1 to 23) | 910 | 19,085 | 30.6 | 25.1 |
All figures are impression-weighted average position, non-branded queries only, from RankCaddy’s own Search Console data.
Measured across whatever queries showed up, the site got worse: 28.6 to 30.6. Measured across the same 322 queries in all three months, the site got better: 29.4 to 25.1. Same site, same source, same period, opposite conclusions.
The only difference between those two verdicts is whether the basket of keywords was held still.
The cause is arithmetic, not a Search Console flaw. Of August’s queries, 439 had not appeared at all in July, and those new queries sat at an average position of 36.
New long-tail queries entering the report at page four pull a site-wide average down, even while every keyword you already had is climbing. If you have ever said “our average position got worse and I cannot see why”, this is one reason.
How much a keyword set turns over
Counting the queries kept, lost and gained between one month and the next puts a number on the turnover:
| Month on month | Queries kept | Queries lost | New queries | Churn |
|---|---|---|---|---|
| June to July | 480 | 372 | 381 | 61% |
| July to August | 471 | 390 | 439 | 64% |
Churn here is the queries lost plus the new queries, divided by every distinct query seen across the two months together.
Only 322 of roughly 900 queries a month, about 36%, appeared in all three months. Roughly six in ten of the non-branded queries seen across any two consecutive months appear in only one of them.
Benchmark “average position” or “number of ranking keywords” straight out of Search Console, and you are benchmarking Google’s sampling of your long tail rather than your own work. That is the reason to keep a fixed, tracked keyword set alongside the report. You choose the basket, so the basket stops moving.
How far the keywords actually moved
Inside the fixed basket, comparing June with August:
- Improved by more than 1 position: 89 queries
- Worsened by more than 1 position: 168 queries
- Flat, within 1 position either way: 65 queries
- Moved 5 or more positions in either direction: 106 queries
- Moved 10 or more positions in either direction: 41 queries
The improved, worsened and flat counts add up to the whole basket of 322. The last two lines count how far keywords moved, in either direction. A third of the basket moved five positions or more in ten weeks. That is worth knowing before anyone reads meaning into a one-position change.
Why the average and the median disagree
Two ways of averaging the same basket give two different answers. The impression-weighted average says the basket improved by 4.3 positions. The middle keyword in that same basket got 1.2 positions worse, and the mean change was 1.1 worse.
Both figures are true. The weighted average tells you about the keywords Google shows a lot. The median tells you about the typical keyword. A report that prints one of them and calls it performance has chosen for you without saying so.
Real keywords from the same basket, moving in both directions while the site-wide number said something different from all of them:
| Query | June average position | August average position | Impressions, June to August |
|---|---|---|---|
| topic cluster examples | 23.8 | 13.7 | 234 to 483 |
| topical authority | 73.7 | 62.0 | 131 to 276 |
| topic cluster strategy | 34.5 | 42.5 | 245 to 81 |
What makes a benchmark checkable
A reader can check a claim about progress without your spreadsheet if the report states three things:
- A stated basket. Which keywords, and how many, chosen when.
- A stated weighting. Impression-weighted, simple average, or median, said out loud.
- A stated comparison window. Both dates, and where they came from.
A report missing any of the three cannot be checked by the person reading it, so its reader has to take the progress on trust.
The limits of one site’s data
Four caveats on the numbers above, and each one limits how far you can take them:
- The figures come from one young B2B SaaS site, not a cross-industry study. Treat them as what one site’s Search Console data looked like, never as an industry norm.
- The window is short and two of the months are partial. Google had reported 5 June to 23 August 2026 when we pulled the data. The fixed-basket comparison uses the same queries at both ends, so the finding holds, but you should know the shape of the data behind it.
- 65% of the clicks in this dataset came from anonymised queries. Google leaves those queries out of query-level reporting while still counting them in page totals. Your page totals will not equal the sum of your keywords, and the gap is Google’s, not a mistake in your arithmetic.
- Search Console reports an average position across all impressions in the period, not a live position. That is why the advice here is a fixed basket compared over time, rather than one number read off a screen.
How to track SEO progress without fooling yourself
A benchmark you can defend takes six decisions. Five of them have to be made before you look at any data. Take them in this order and you benchmark your SEO against something that will still mean the same thing next quarter.
Choose the basket, the segment and the window before you open the report, and write all three down where the next person can read them.
Step 1: Fix the basket

Choose the keywords you are willing to be judged on and put them in a tracked list. The set then stops changing under you.
Keep the list deliberately small. A minority of your keywords produces most of your results, so twenty terms you chose will tell you more than nine hundred Google sampled for you. Tracking plans are sized by a daily keyword allowance, which means the honest basket is also the cheaper one.
If you are still deciding what goes in the list, a template for choosing which keywords to track will get you to a shortlist faster than a blank spreadsheet.
Tags are how you benchmark one segment instead of a whole domain. Filter the graph to a single tag, and a product line or a client’s priority terms gets its own trend line and its own Caddy Score.
Step 2: Fix the segment
Use one device, one country, one language and one search type per comparison. Mix them and you get a number nobody can read. A drop on mobile and a climb on desktop cancel each other out, and the average then looks as though nothing happened.
A RankCaddy project is one domain, one device, one search type, one language and one country for that reason. Two devices means two projects, not one project with a filter.
Step 3: Record the baseline and its source
Write down the date and the report the number came from, not just the number. First rank is the position from the very first check. Best rank is the best position recorded since tracking began. Those two values are the real argument for tracking before you start optimising, because a baseline cannot be reconstructed afterwards.
If your baseline is Search Console plus Analytics rather than tracked positions, blended Search Console and Analytics data keeps both on one screen and lets you define your brand terms. The non-branded numbers then stay separate from the branded ones.
Step 4: Choose the window before you look

Do not let the comparison window straddle a confirmed Google update. Google’s own instruction is specific. First, confirm the update has finished rolling out on the Search Status Dashboard. Then wait at least a full week after it completes. Then compare that week against the week before the rollout started.
In RankCaddy, the keyword table’s Compare filter makes the window an explicit setting. Choose Daily, Weekly or Monthly, or add custom columns showing each keyword’s rank on dates you pick.
Step 5: Set the review schedule
Weekly for sudden changes, monthly against target, quarterly for a full reset of the competitive set and the basket. That schedule is how you monitor SEO progress without reacting to every small movement. A weekly review is for spotting a break, not for judging progress. Ten weeks was the shortest window in which the numbers above said anything stable.
Step 6: Annotate the events
Google core updates and keywords-added events are marked on the rank history graph automatically. You can add your own dated events with descriptions too: a migration, a redesign, the day 200 keywords joined the list. A trend line without those markers invites the wrong conclusion. The most expensive version of that mistake is crediting your own work for a core update.
The 2026 updates a comparison could straddle
Six confirmed ranking events landed between February and August 2026. A month-on-month comparison drawn without checking those dates had a fair chance of containing one.
| Update | Dates | Source |
|---|---|---|
| February 2026 Discover core update | Started 5 February, complete 27 February 2026, 22 days, the first core update Google labelled Discover-only | Search Engine Roundtable |
| March 2026 spam update | 24 to 25 March 2026, under 20 hours, the shortest confirmed spam update on the dashboard | Search Engine Journal |
| March 2026 core update | Started 27 March, complete 8 April 2026, 12 days | Search Engine Journal |
| May 2026 core update | Started 21 May, complete 2 June 2026, 11 days and 21 hours | Search Engine Journal |
| June 2026 spam update | Started 24 June, complete 26 June 2026, roughly 48 hours | PPC Land |
| August 2026 spam update | Started 18 August, complete 21 August 2026, 2.5 days, global and all languages | Search Engine Land |
Where the Caddy Score fits
One number for a whole project is a fair thing to want, and the Caddy Score is ours. It is a 0 to 100 volume-weighted measure of a project’s ranking performance, recalculated daily from your own tracked keywords. Treat it as a trend on a fixed basket, not as a grade.
The score has two quirks worth knowing. It can move when no rank moved at all, either because keyword search volumes were updated or because a position switched data source. And positions beyond 100 count the same as not ranking, so a hundred long-tail terms slipping off the bottom will show in the score even when the keywords you care about held.
Reporting benchmarks to clients and stakeholders
A benchmark report is not a data dump with a summary on top. It is a claim about progress, plus everything the reader needs to check the claim.
If the reader cannot tell from the report what was held constant, the report proves nothing.
What belongs in a benchmark report
Five things earn their place:
- The basket definition: which keywords, how many, chosen when.
- The window, with both dates, and whether an update landed inside it.
- The source of every number in the document.
- The comparison itself, weighted the way you said you would weight it.
- Three wins, three risks, and the next actions attached to each.
What does not belong: every keyword you track, a metric nobody agreed to be judged on, a chart with no window stated, and any number whose source you cannot name. Choosing SEO reporting metrics is mostly a matter of taking things out. The report gets better as things leave it.
How often to report progress to stakeholders
Report monthly, reset quarterly, and keep the weekly checks internal. Report any faster than monthly and you are handing somebody noise. They will remember the number and quote it back at you.
Keeping the report comparable month to month
The layout matters more than it sounds. A report layout you can clone and reuse as a template keeps the basket definition and the window identical every time, which is why RankCaddy’s reports are built to be cloned. Agencies asked to benchmark SEO performance across a client roster will find the same argument, applied to a whole portfolio, in reporting benchmarks to clients.
Frequently asked questions
What is SEO benchmarking and how does it work?
SEO benchmarking is setting a reference point you can judge your search performance against, then measuring the same thing against it on a schedule. Three things can serve as that point: your own past data, your competitors on the same queries, and sector averages. A competitor set is the easiest to defend, because it moves with the market.
What are the types of SEO benchmarks?
Three: historical, competitive and industry. Historical compares you against your own past, the easiest baseline to get and the easiest to get wrong. Competitive compares you against named competitors on the same keywords, and it is the only type that accounts for the market moving. Industry compares you against a sector average, which is only ever a sanity check.
What is the difference between a benchmark, a metric and a KPI?
The metric is the number. The benchmark is the reference point you judge the number against. The KPI is the metric you have agreed to be held accountable for. A fourth word matters just as much. Your baseline is the value you started from, recorded with its date and its source, before anyone optimised anything.
Is 75 a good SEO score?
No score out of 100 from a site audit tool is a benchmark of search performance. It measures how closely your site matches that vendor’s checklist, and vendors do not agree on the checklist. Judge the work on position across a fixed keyword set and on non-branded clicks, both compared over a window you stated in advance.
How often should I benchmark my SEO?
Weekly for sudden changes, monthly against target, quarterly for a full reset of the competitive set and the keyword basket. One rule applies whatever the schedule: never compare across a confirmed Google update. Wait a full week after the rollout completes, then compare that week against the week before it started.
How do I know if my rankings dropped because of a Google update?
Check the Search Status Dashboard for the update’s start and end dates. Wait at least a full week after it finishes rolling out. Then compare that week against the week before the rollout began. That sequence is Google’s own guidance. If your drop began before the rollout started, the update is not the explanation and you should keep looking.
Can I benchmark my SEO with only free tools?
For a historical baseline, yes. Search Console and Analytics together give you clicks, impressions, position and traffic for your own property, at no cost. For a competitive benchmark, no. Search Console reports your property and nobody else’s, so competitor positions have to come from a tool that checks the results page itself.
What is the 80/20 rule in SEO?
It is the observation that a small share of your pages and keywords produces most of your results. Applied to benchmarking, it is the argument for a deliberately small basket. Twenty keywords you chose and can defend will tell you more about progress than nine hundred that Google happened to sample for you this month.
Start with what you can hold still
One rule survives everything above. A benchmark is only as good as the thing it holds constant. Pick the keywords you are willing to be judged on. Fix the device and the country. Write the window down before you look at the data. Mark the days Google changed something. Name your weighting in the report.
You will not measure SEO success to the decimal place. You will be measuring the same thing twice, which is the part most reports never manage. If you want the basket held still for you, with competitor lines on the same graph from the day you add them, see the plans and start a free trial: 14 days, no card needed.