My blog kept its Google positions but lost 97% of impressions
My developer blog went from 1,613 Google impressions a day to about 35 in under three weeks, while most pages kept their positions. These are the checks I ran, what each one showed, and what was actually wrong.
Short answer: if your impressions fall 95% or more in a few days while average position barely moves, Google has stopped showing your site for most queries. It hasn't pushed your pages down. Rule out the technical causes first: manual actions, indexing, crawling, cloaking, robots.txt. Then look at your links and your click-through rate, because that's usually where the real answer is.
That's the summary. Here's the case behind it: my own site.
On 14 August 2026, abdulkadersafi.com got 1,613 impressions from Google. On 16 August it got 165. By 1 September it was down to 30 a day. Today it gets about 12. My VPS prices post sat at position 6.5 before the drop and position 4.0 after it, and its impressions went from 4,816 to 15.
I spent the weeks after that running every check I know. Most of them came back clean. That turned out to be the useful part.
What the drop looked like, day by day
All numbers are from Search Console, domain property, web search only.
| Date | Impressions | Clicks | Avg position |
|---|---|---|---|
| 10 Aug | 2,909 | 12 | 15.3 |
| 14 Aug | 1,613 | 7 | 14.8 |
| 15 Aug | 808 | 4 | 19.7 |
| 16 Aug | 165 | 0 | 51.1 |
| 22 Aug | 95 | 0 | 65.1 |
| 31 Aug | 206 | 0 | 34.0 |
| 1 Sep | 30 | 0 | 26.2 |
| 8 Sep | 47 | 1 | 15.1 |
Two steps down. 15 to 16 August took about 90%. Then 1 September took most of what was left, from around 200 a day to around 35.
Clicks went to zero on almost every day after 16 August. Before that the site was getting 7 to 12 clicks a day. Not a lot, which matters later.
Position held, impressions didn't
This is the part that confused me at first. Pages that lost 99% of their impressions were still ranking well for whatever they still showed up for.
| Page | Impressions before | After | Position before | After |
|---|---|---|---|---|
| vps-prices-are-rising | 4,816 | 15 | 6.5 | 4.0 |
| homebrew-6-tap-trust | 2,626 | 32 | 6.6 | 8.2 |
| github-models-is-being-retired | 2,193 | 4 | 7.0 | 6.0 |
| claude-cowork-vs-openclaw | 1,397 | 18 | 6.8 | 6.6 |
| migrating-from-vs-code-to-zed | 1,208 | 2 | 10.9 | 7.0 |
| dataview-vs-datacore | 965 | 17 | 7.7 | 4.9 |
"Before" is 18 July to 14 August. "After" is 13 September to 11 October.
The query report explains it. Across 1,213 queries I compared, the losses were total. "laravel brain" went from 211 impressions at position 7.4 to zero. "vercel to hetzner" went from 147 to zero. "hermes vs cowork" was at position 4.1 and went to zero.
So a page didn't slide from position 6 to position 40. It stopped appearing at all for 95% of the queries it used to rank for, and kept a good position on the handful that survived. Average position is only calculated over the impressions you get. Lose the long tail and the average can look fine, or even improve.
If your chart looks like mine, open the query report and sort by impressions in the old period. Look for rows that went to zero, not rows that slipped.
The checks I ran, and what each one showed
In the order I'd run them again:
- Manual actions. In Search Console, the "Security & Manual Actions" menu. "No issues detected." No person at Google touched the site, so there's nothing to appeal.
- Security issues. Same menu. Clean.
- Indexing. 267 pages indexed, 57 not. Of those 57: 29 were 404s, 15 discovered but not indexed, 7 crawled but not indexed, and the rest redirects and alternate canonicals. Nothing got deindexed in the drop.
- URL inspection on the biggest losers. PASS, "Submitted and indexed", robots allowed, Google's canonical matching mine.
- Crawl stats. 2,490 requests over 90 days, 88% returning 200, flat every week including 15 and 16 August. Host status showed 0% failed requests and clean DNS and robots.txt fetches.
- Cloaking test. I fetched the same page as Googlebot and as a normal browser. Byte-for-byte identical, 54,422 bytes each.
- Meta robots and headers. Every page type returned
robots: all, a self-referencing canonical and noX-Robots-Tagheader. No stray noindex anywhere. - robots.txt and sitemap. Valid robots file, sitemap with 249 URLs and zero errors.
- Originality. I searched an exact sentence from one of the lost posts in quotes (the Google search operators trick). My site still came back first. Nobody had scraped it and taken its place.
- A control site. dsrpt.com.au sits in the same Search Console account. Flat across the same dates (565 impressions on 5 Aug, 709 on 16 Aug). So it wasn't a reporting glitch.
Ten checks, ten clean results. Google could reach the site, index it and read it. It had decided to stop showing it.
There were two real defects, and neither explains the drop. The breadcrumb schema had 19 invalid items (a category crumb missing its item URL), and the Article and FAQPage schema had gone missing, leaving breadcrumbs as the only structured data Google detected. Worth fixing. Schema doesn't decide whether a page gets shown, though. If you want the basics on that, I covered the on-page elements worth getting right before launch in an older post.
The spam update has an alibi
My first suspect was Google's August 2026 spam update. Same month, same shape: sudden, sitewide, every country.
Then I checked the times. Google started rolling it out on 18 August at about 12:30 pm ET and finished on 21 August, according to Search Engine Roundtable's report. My site fell on 15 and 16 August, two to three days earlier. Google's John Mueller said the update did not start before it was announced, and that the volatility people saw before 18 August was something else.
My own numbers back him up in an awkward way. During the rollout my impressions went 257, 203, 128, 137. The update arrived at a site that had already fallen.
So either the spam update didn't do this, or Google's timeline is wrong. I don't know which. Third-party tools logged unconfirmed volatility on 12 and 13 August, and the second step down on 1 September lines up with nothing Google has confirmed. A small schema change also went out around mid-August, and I haven't pinned its deploy date against the drop. Breadcrumbs aren't a ranking signal, so I doubt it, but I'm not going to pretend I've closed that lead.
What I can say: the cause is less useful than the reason the site was easy to drop.
Why my site was easy to drop
This part isn't comfortable to publish, so here are the numbers.
- 76 external links from 5 domains. GitHub (20), Reddit (17), obsidian.md (6), obsidianstats.com (4), google.com (2). Most of those are my own repos and my own Reddit posts. That was the whole outside vote for 249 pages.
- Internal links went nowhere. The ten most linked pages on the site were the nav and the footer: home with 218 internal links, then projects, blog, privacy policy, contact, services, terms. Not one blog post made the list. 202 content pages hung off listing pages with nothing pointing at them.
- A 0.2% to 0.5% click rate at position 15 to 21. In early August the site took around 2,900 impressions a day for 8 clicks. My guide to the different types of links took 8,810 impressions in two weeks and returned 2 clicks.
- Google crawled each page about once every nine days. 2,490 requests over 90 days for 249 pages. That's how Google treats a site it doesn't consider important.
- A lot of the archive was general explainers. Types of links, atomic design, REST vs GraphQL, SQL vs NoSQL. Official docs and Stack Overflow own those topics. I was ranking on page two for them anyway.
Put together: thousands of page-two rankings that almost nobody clicked, on a site almost nobody linked to. When Google tightened whatever it tightened, there was nothing holding those rankings in place.
The pages that kept their positions are the first-hand ones. My Cowork vs OpenClaw vs Hermes comparison, the Homebrew tap trust post, the Zed migration. Things only I could have written, because I did them.
One more thing my analytics hid
GA4 said I was growing. 2,006 sessions in the 28 days after the drop.
Then I looked closer. 71.6% was "Direct" traffic with 21.6% engagement and 25-second sessions. Singapore made up 888 of 1,800 active users, up 959%. Organic search was 80 sessions, down 74%. The growth was bot traffic, and it started the same week the rankings fell.
Google doesn't use Analytics data for ranking, so the bots didn't cause anything. But if I'd only looked at GA4, I'd have thought August was a good month. Turn on bot filtering and check where your "growth" comes from before you trust it.
Where it stands now, and what I'm doing
It hasn't recovered. There was a short bounce in early October, 78 to 141 impressions a day for about a week. Since 9 October it's been back to single and low double digits. The last 14 days, 22 October to 4 November, brought 165 impressions and 3 clicks.
The plan, in order:
- No reconsideration request and no disavow file. There's no manual action to reconsider, and 76 links from 5 clean domains is not a link spam problem.
- Sort all 143 posts into keep, merge or noindex. Keep the first-hand ones. Merge the pairs where two of my posts answer the same question (I found 11 of those). Noindex the generic explainers. Nothing gets deleted, because noindex can be undone.
- Add 3 to 5 real links inside every post to related posts and to the project each one is about.
- Link to the portfolio from things I already own. My npm packages, the S-Calc Obsidian plugin, MD Kanban and LaralCN-UI all have READMEs and docs sites that point at nothing on this domain.
- Fix the schema in the template so Article and FAQPage come back on every post at once.
- Write only what nobody else can. My builds, my migrations, my numbers. No more explainers.
I'll measure the keep pile, not the site total. The total will drop further as the noindex pile leaves the index, and that's the plan working. If you want the wider checklist I used to work from, it's in my general SEO guide.
I don't expect 2,900 impressions a day back. Those impressions were never earning clicks. A smaller site that people actually click is the better result.
What to do now
Open Search Console, set the date range to cover your drop, and compare the query report before and after. Count how many queries went to exactly zero. If it's most of them, you're looking at the same thing I am, and the fix lives in your links and your archive, not in your server config.
Last updated 8 Nov 2026