We added 9 directory badges to our footer and lost 57% of our organic traffic in 5 days

A post-mortem with the Search Console data, including the recovery.

Ten days ago I did something that looked like good SEO hygiene and cost my site more than half its organic traffic in under a week. The cause was embarrassingly ordinary, the recovery was fast once we found it, and there’s a natural experiment buried in the crawl data that makes the whole thing unusually easy to prove.

Posting the numbers because I couldn’t find anyone who’d published this particular failure with the data attached.

The setup

PixelPanda is a small AI image tools site — DR 43, nothing special. Almost all of our organic traffic comes from free tool pages that rank on their own: background remover, image upscaler, merge images, and so on.

We’d been running a directory-listing campaign to close a link gap against a bigger competitor. Standard stuff: get listed on the AI tool directories, several of which want a “Featured on” badge on your site in exchange, and a couple of which we paid for.

On 23 August, across five commits between 10:55 and 20:00, we shipped a “Featured on” badge strip into the site footer. Nine outbound links. Because the footer is in the base template, it landed on every page on the site.

Every one of those links carried rel="noopener" and nothing else. Which means every one of them was dofollow.

The crash

Rankings fell off a cliff the next morning.

date        day   clicks   impressions   avg position
2026-08-20  Thu      821        31,802       11.1
2026-08-21  Fri      720        30,617       11.3
2026-08-22  Sat      687        30,413       11.5
2026-08-23  Sun      709        27,246       12.0   <- badges shipped
2026-08-24  Mon      500        19,689       17.1   <- onset
2026-08-25  Tue      268        13,937       31.7
2026-08-26  Wed      240        12,986       35.5
2026-08-27  Thu      225        12,639       35.6
2026-08-28  Fri      189        11,858       36.6
2026-08-29  Sat      190        14,823       42.1

Week over week that’s 5,402 clicks down to 2,329 — a 57% drop. Average position went from ~11 to 42.

The shape mattered more than the size. This wasn’t a few pages losing rankings — it was the entire /free-tools/ section demoted roughly uniformly, while the homepage barely moved:

page position before after
/free-tools/merge-images 9.1 37.5
/free-tools/make-image-transparent 8.8 36.3
/free-tools/image-analyzer 7.3 21.8
/free-tools/image-to-prompt 10.9 63.0
/ (homepage) 3.7 6.0

Uniform demotion across a whole section, with the homepage largely spared, is the signature of a site-level signal rather than a content problem on any individual page.

What we ruled out

  • Manual actions — none in Search Console.
  • Security issues — none.
  • robots.txt — clean, Allow: /.
  • Deindexing — indexed page count was flat and rising through the period.
  • Page health — 200s, correct canonicals, single H1, no stray noindex.
  • The August algorithm volatility — that was 1–6 August. We were flat through it: 783, 837, 775, 812 clicks. Google’s last confirmed ranking update was months earlier.

Then we went through every commit in the window. New landing pages, some API changes, a BigCommerce callback, docs. Exactly one change touched every page on the site: the badge strip.

The diagnosis

Thousands of sitewide dofollow links pointing at directories — several of which we had paid for that same day, and one of which was a reciprocal badge-for-listing exchange.

That is a textbook link scheme under Google’s link spam policy, and the part people forget is that the policy demotes the linking site, not just the recipient. We had effectively turned our entire site into a paid link farm pointing outward, in an afternoon, without thinking of it that way even once.

The fix

One commit. All nine links changed to:

rel="sponsored nofollow noopener"

Badges stay up, listings stay live, the directories keep their placement. Only the link equity stops flowing. We shipped it on 30 August at 09:44 local and then pushed the demoted URLs into the Indexing API to speed up re-crawling.

The recovery

date        day   clicks   impressions   avg position
2026-08-29  Sat      190        14,823       42.1   <- trough
2026-08-30  Sun      362        16,994       31.2   <- fix shipped
2026-08-31  Mon      391        17,687       21.3
2026-09-01  Tue      469        18,917       12.4
2026-09-02  Wed      497        20,975       12.4

Average position is back to 12.4 — essentially where it was before the crash. Clicks are still roughly a third below baseline and I expect that to keep closing as more pages get re-crawled.

The natural experiment

This is the part that convinced me, and it’s the reason I’m posting.

Google doesn’t re-crawl every page at once. So on any given day after the fix, some pages had been re-fetched with the nofollowed footer and some hadn’t. That gives you a controlled comparison for free.

Here’s every page we tracked, with its last crawl date from the URL Inspection API:

page before trough 2 Sept last crawled
make-image-transparent 8.8 36.3 8.7 3 Sept
image-analyzer 7.3 21.8 6.6 4 Sept
round-corners 6.9 19.6 7.5 30 Aug
merge-images 9.1 37.5 11.6 4 Sept
ai-selfie 7.2 22.3 11.7 2 Sept
image-upscaler 20.7 51.6 26.6 1 Sept
image-to-prompt 10.9 63.0 44.7 27 Aug

Every page Google re-crawled after the fix has recovered to roughly its old position. The one page it has not re-crawled since before the fix — image-to-prompt, last fetched 27 August — is still sitting at 44.7.

Same site, same fix, same day. The only variable is whether Googlebot has been back yet.

What I’d tell you

A footer link is not one link. It’s one link times the number of pages on your site. Ours became about 15,000 outbound dofollow links to paid directories overnight. If we’d put those nine links on a single /featured-on page, none of this happens.

“Directory listing” and “paid link” can be the same thing. Nobody sold it to me as a link purchase. I paid for listings, they asked for a badge, I added the badge. The label on the invoice doesn’t change what the markup does.

rel="sponsored nofollow" costs you nothing here. You keep the badge, the listing, the referral traffic and the social proof. The only thing you give up is passing equity you never wanted to pass.

Check what your footer does after every campaign. This took six days to notice because we were watching signups, not average position, and the badge work didn’t look like an SEO change. It looked like marketing.

Diff your commits against the onset date. The single most useful thing we did was list every commit in the window and ask which ones touched every page. That narrowed it from “something is wrong” to one candidate in about ten minutes.


Happy to answer questions about the diagnosis. The Search Console figures above are unedited day-level exports; the position numbers are page-level averages over the ranges shown.

Try PixelPanda

Remove backgrounds, upscale images, and create stunning product photos with AI.