Search Console shows a strange split: the impressions line is climbing while the clicks line slides down. It looks like Google is showing your site more and sending you less, and in 2026 that is often exactly what is happening. But the same pattern can also be a healthy sign, a reporting quirk or a real ranking problem, and each needs a different response.
Most articles on this topic list a dozen possible causes and leave you to guess. This one shows you how to measure them. With two Search Console exports and a short script, you can split your click change into five parts and see how much each cause actually cost you.
Five Reasons Impressions Rise While Clicks Fall
Table 1: The Five Causes at a Glance
| Cause | What Is Happening | Good or Bad? |
|---|---|---|
| You rank for more queries, but low down | New impressions come from positions 20 to 50, where almost nobody clicks | Usually good: early sign of growing topical reach |
| AI answers and SERP features absorb clicks | AI Overviews, AI Mode, ads and other features answer the query on Google | Bad for traffic, not a ranking problem |
| You lost positions on high-volume queries | Big head terms slipped from top 3 to lower page one | Bad: a ranking problem to fix |
| Your snippet got less clickable | Google rewrote your title, or rich results like stars disappeared | Bad, but fixable on the page |
| Branded demand fell | Fewer people searched for your name, and branded queries carry the highest CTR | Bad, but a marketing problem rather than SEO |
Two reporting effects can also play a part. Search Console counts an impression whenever your URL appears on a results page the user loads, even if it sits below the fold, and links inside an AI Overview are counted as one block, at the position of the overview itself. More AI Overview appearances can therefore add impressions that were never really seen.
How Much AI Overviews Cut Clicks
If your impressions growth is in informational queries, AI Overviews are the first suspect. The research is consistent about the direction, if not the exact size.
Table 2: What the Research Says About AI Overviews and CTR
| Study | Finding |
|---|---|
| Ahrefs, December 2025 | With an AI Overview present, CTR for the top-ranking result was 58% lower, falling to about 19% lower at position 10 (300,000 keywords) |
| Pew Research Center, July 2025 | Users clicked a result on 8% of searches with an AI summary versus 15% without; links inside the summary got clicks on 1% of visits |
| Seer Interactive, April 2026 | Organic CTR on AI Overview queries was 2.36% versus 3.82% without; brands cited in the overview got about twice the clicks of brands that were not cited |
The Seer finding matters most for strategy. When an AI Overview appears, being cited in it roughly doubles the clicks you get compared with ranking below it uncited. Our guide to AI Overviews versus AI Mode explains how the two features pick sources differently.
Step 1: Export Two Matching Periods
- In Search Console, open Performance > Search results.
- Click Date > Compare and pick two equal periods, such as the last 28 days against the previous 28 days, or against the same 28 days last year if your traffic is seasonal.
- Turn on all four metrics: clicks, impressions, CTR and position.
- Export each period separately from the Queries tab. You need two CSV files, one per period.
Check the average position line before you go further. If impressions rose and average position got worse at the same time, new low-ranking queries are the likely story. If position held steady or improved while CTR fell, the cause is on the results page itself.
Step 2: Split the Click Change Into Its Causes
This script compares the two exports and breaks the difference in clicks into five parts. It builds a CTR curve from your own data, so a drop in CTR caused by ranking lower is separated from a drop in CTR at the same ranking, which is the signature of AI Overviews and other SERP features.
import re, sys
import pandas as pd
BRAND = r"acme|acme tools" # your brand terms, as a regex
def load(path):
df = pd.read_csv(path)
df.columns = [c.strip().lower().replace("top queries", "query") for c in df.columns]
df["ctr"] = df["clicks"] / df["impressions"]
return df.set_index("query")[["clicks", "impressions", "ctr", "position"]]
def bucket(pos):
return pd.cut(pos, [0, 3, 6, 10, 20, 1000], labels=["1-3", "4-6", "7-10", "11-20", "21+"])
prev, curr = load(sys.argv[1]), load(sys.argv[2])
# site's own CTR curve from the previous period, by position bucket
curve = prev.groupby(bucket(prev["position"]), observed=False).apply(
lambda g: g["clicks"].sum() / max(g["impressions"].sum(), 1))
both = prev.join(curr, lsuffix="_old", rsuffix="_new", how="inner")
new_only = curr.loc[curr.index.difference(prev.index)]
lost_only = prev.loc[prev.index.difference(curr.index)]
exp_old = bucket(both["position_old"]).map(curve).astype(float)
exp_new = bucket(both["position_new"]).map(curve).astype(float)
volume = ((both["impressions_new"] - both["impressions_old"]) * both["ctr_old"]).sum()
position = (both["impressions_new"] * (exp_new - exp_old)).sum()
rate_total = (both["impressions_new"] * (both["ctr_new"] - both["ctr_old"])).sum()
same_pos_ctr = rate_total - position
is_brand = both.index.str.contains(BRAND, flags=re.I, regex=True)
brand_change = (both.loc[is_brand, "clicks_new"] - both.loc[is_brand, "clicks_old"]).sum()
rows = {
"Clicks before": prev["clicks"].sum(),
"New queries": new_only["clicks"].sum(),
"Queries no longer shown": -lost_only["clicks"].sum(),
"More or fewer impressions on the same queries": volume,
"Ranking changes on the same queries": position,
"Lower CTR at the same position": same_pos_ctr,
"Clicks after": curr["clicks"].sum(),
}
for k, v in rows.items():
print(f"{k:48} {v:>10,.0f}")
print(f"{'(of which branded queries changed by)':48} {brand_change:>10,.0f}")
imp_new = new_only["impressions"].sum()
print(f"\nNew queries added {imp_new:,.0f} impressions at an average position of "
f"{(new_only['position'] * new_only['impressions']).sum() / max(imp_new, 1):.1f}")
Save the exports as prev.csv and curr.csv, set your brand terms in the first line, and run python decomp.py prev.csv curr.csv. The result reads like a bank statement for your clicks. Here is what each line means:
Table 3: How to Read the Output
| Line | What It Measures | If It Is the Biggest Loss |
|---|---|---|
| New queries | Clicks from queries you did not appear for before | Usually positive; check their average position |
| Queries no longer shown | Clicks you lost because you stopped appearing for a query | Look for deindexed, merged or outranked pages |
| More or fewer impressions on the same queries | Change in search demand or visibility at the old CTR | Seasonality, or lost or gained SERP slots |
| Ranking changes on the same queries | Clicks lost or gained from moving up or down | A ranking problem: check updates and competitors |
| Lower CTR at the same position | Fewer clicks at the same ranking | AI Overviews, new SERP features, ads or a weaker snippet |
In the example above, impressions rose 18% while clicks fell 24%. New queries and extra impressions added 1,350 clicks, ranking changes cost only 150, and lower CTR at unchanged positions cost 2,400. That site does not have a ranking problem. It has a results page problem, and the fixes are completely different.
Step 3: Find the Queries Behind the Biggest Loss
If CTR Fell at the Same Position
Sort your common queries by lost clicks and search the top 20 yourself in a private window. Note what sits above or around your result: an AI Overview, ads, a video carousel, a local pack, discussions and forums, or People Also Ask. The generative AI report in Search Console, rolled out to all sites in August 2026, shows which of your pages get impressions in AI Overviews and AI Mode, but it does not report clicks, so pair it with the Performance report.
If New Queries Explain the Impressions Rise
Filter the new queries by position. Queries ranking between 8 and 20 are the most valuable, because a small improvement moves them onto page one or into the top three. Strengthen the pages behind them with better coverage, internal links and a sharper title.
If Rankings Dropped
Check whether the drop lines up with a Google update, then compare your page with the pages that overtook you. This is a standard ranking recovery, not a CTR problem.
Step 4: Win Back the Clicks You Can
Table 4: Fixes by Cause
| Cause | What to Do |
|---|---|
| AI Overviews on informational queries | Make pages easy to cite: a direct answer near the top, clear headings, specific numbers and named authors. Being cited roughly doubles clicks versus being uncited |
| Answers that end the search | Add what a summary cannot replace: calculators, templates, original data, comparison tables, tools and downloads |
| Other SERP features | Target the feature: video for video carousels, Google Business Profile for local packs, structured data for eligible rich results |
| Rewritten or weak titles | Keep titles under about 60 characters, lead with the query and a concrete benefit, and make the H1 match |
| Lost rich results | Validate structured data in the Rich Results Test and fix errors |
| Branded demand drop | Look beyond SEO: PR, social, email and paid campaigns drive brand searches |
| Low-position impressions | Improve pages ranking 8 to 20 first; they have the highest click upside |
Titles and descriptions are the fastest lever. A meta tag checker helps catch titles Google is likely to rewrite, and the formatting that wins featured snippets also helps pages get cited in AI Overviews. For the AI side, our GEO basics guide covers how to become a source, and AI visibility tracking tools show whether it is working.
Measure Success Differently Now
For queries dominated by AI Overviews, clicks alone undersell your visibility. Track citations in AI answers, branded search growth and conversions per click alongside raw clicks.
When Rising Impressions and Falling Clicks Are Fine
- Average position is falling only because you now rank for many more long-tail queries.
- Clicks per page on your money pages are stable, and the loss sits on informational posts.
- Conversions and leads from organic search are flat or rising.
- Branded clicks are stable, and the drop is in queries that now show AI Overviews.
In these cases the trend is the new normal for search, not a sign that something is broken. Put your effort into earning citations and building pages that give people a reason to click.
FAQs
Why Are My Impressions Going Up but Clicks Going Down?
The most common reasons are ranking for many new queries at low positions, AI Overviews and other search features answering queries on Google, losing positions on high-volume terms, a less clickable snippet, or fewer branded searches.
Do AI Overviews Count as Impressions in Search Console?
Yes. If your page is linked in an AI Overview, it counts as an impression, and every link in the overview gets the overview’s position. Clicks from AI Overviews and AI Mode are included in the regular Performance report.
Is a Falling CTR Always Bad?
No. If CTR falls because you now appear for many more queries at lower positions, it can signal growing reach. It is a problem when CTR falls for the same queries at the same positions.
How Do I Know If AI Overviews Are Taking My Clicks?
Compare CTR for queries where your position stayed the same. If CTR fell at unchanged positions, search those queries yourself and check for AI Overviews. Search Console’s generative AI report also shows which pages appear in AI features.
What Is a Good CTR in Google Search?
It depends heavily on position and query type. Position one can see well over 20% CTR on queries without search features, while queries with AI Overviews and ads often see far lower rates. Compare against your own past CTR at the same position rather than a single benchmark.
