Abdulkader Safi

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.

Share
Search Console performance chart where Google impressions drop 97% in a week while average position stays level

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:

  1. 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.
  2. Security issues. Same menu. Clean.
  3. 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.
  4. URL inspection on the biggest losers. PASS, "Submitted and indexed", robots allowed, Google's canonical matching mine.
  5. 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.
  6. Cloaking test. I fetched the same page as Googlebot and as a normal browser. Byte-for-byte identical, 54,422 bytes each.
  7. Meta robots and headers. Every page type returned robots: all, a self-referencing canonical and no X-Robots-Tag header. No stray noindex anywhere.
  8. robots.txt and sitemap. Valid robots file, sitemap with 249 URLs and zero errors.
  9. 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.
  10. 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:

  1. 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.
  2. 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.
  3. Add 3 to 5 real links inside every post to related posts and to the project each one is about.
  4. 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.
  5. Fix the schema in the template so Article and FAQPage come back on every post at once.
  6. 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

FAQ

Frequently asked questions

Why did my impressions drop but my average position stay the same?

Because Google stopped showing your pages for most of the queries they used to appear on, while the few queries that survived still rank well. Average position is only calculated over the impressions you get, so losing hundreds of page-two appearances can make the average look the same or even better. Check the query report for queries that went to zero impressions, not just ones that slipped.

How do I know if a Google spam update hit my site?

Line your daily impressions up against the update's start and end times on the https://status.search.google.com/. If the drop starts inside that window, the update is a strong suspect. If it starts before the announced start, be careful, because Google has said it does not roll out announced updates before announcing them. Also check Manual actions in Search Console, since a manual action is a different problem with a different fix.

How do I check for a manual action in Search Console?

Open Search Console, go to Security & Manual Actions, then Manual actions. "No issues detected" means no person at Google has penalized the site, so there is nothing to appeal and no reconsideration request to file. Check the Security issues tab in the same menu while you are there.

Does Google punish a site with few backlinks?

Google does not penalize a site for having few links, but links are part of how it decides a site deserves to rank. My blog had 76 external links from 5 domains behind 249 pages, and most of those were my own GitHub and Reddit posts. That left nothing to hold the rankings up once Google got stricter, so few backlinks made the site easy to drop rather than causing the drop.

How long does recovery from a Google traffic drop like this take?

There is no fixed timeline, and recovery from an algorithmic drop usually shows up with a later Google update rather than after you redeploy. My blog has not recovered in almost three months, and it fell further in October. Plan in months, fix the reasons the site was weak, and measure the pages you keep rather than the site total.

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.

Written by

Abdulkader Safi

Senior & Lead Software Engineer

Lead engineer at DSRPT, from Lebanon and based in Kuwait. I write about the tools and bugs from real client work, with the numbers I measured.

About me → GitHub LinkedIn

Need this kind of work done on your project?

Start a project →