Incident Summary

It started innocently enough.
I published a dry little rant about ticket-driven development, fully expecting a quiet life of single-digit pageviews and maybe a pity share from an old colleague.

Then a friend dropped the link on Hacker News without telling me.
Someone else threw it up on Reddit.
And before I could even finish my coffee, bots, link preview crawlers, and over 10,000 developers showed up to see what all the fuss was about.

That’s when I learned, in real time, that Netlify’s free plan bandwidth limit isn’t just a number in their pricing table.


Timeline of Regret

Day 1:
Traffic explodes.
I’m half flattered, half shocked. But I figured it was just a quick blip of viral traffic.

Day 2:
Netlify politely warns me I’ve hit 50% of my monthly bandwidth.
I shrug. It’s three days till the end of the month. Whatever. Surely it’ll taper off.

Day 3:
It doesn’t taper off.
I log in and see 87 GB used out of 100 GB.
Pretty sure I muttered “oh shit” out loud.

Day 4:
Somewhere between Slack, Discord, and Microsoft Teams, every link preview on the internet was happily re-downloading my 1 MB PNGs. Over. And over. And over.
Honestly, I didn’t even think about that. So much for being a “senior developer.” No one was going to read my posts…right?


A cartoon illustration of a surprised developer wearing glasses and an orange shirt, staring at a large speedometer labeled 'Bandwidth' with the needle pegged in the red zone.

When your ’nobody will read this’ post eats 87GB in three days.


Root Cause(s)

  • Every post had a hero PNG the size of a desktop wallpaper.
  • No caching headers because I assumed the default was “good enough.” (It wasn’t.)
  • Mild arrogance about how much traffic a little Hugo blog could ever get.

Impact

  • 87 GB of bandwidth torched in about 72 hours.
  • A fresh appreciation for the humble WebP format.
  • An existential dread that Netlify would slap me with an invoice.
  • 0 email signups because, obviously, I hadn’t bothered to set that up either.

Immediate Response

I did what any slightly panicked developer would do:

  • Bulk-converted all the PNGs to WebP with squoosh.
  • Rebuilt the site in a flurry, hoping it wasn’t too late.
  • Added caching headers so the same person wouldn’t download the same image every time they sneezed.
  • Finally set up a separate MailerLite account. Which, yes, I should have done before the meltdown.

Also, I spent an embarrassing chunk of time trying to figure out if bots were really hitting my site or if Netlify’s dashboard was lying. It wasn’t.


Lessons Learned

  • Traffic decay is never as fast as your optimism.
  • Link previews alone can chew through dozens of gigs if you’re not careful.
  • Seniority doesn’t protect you from rookie mistakes. It just makes you feel dumber when you realize you’ve made them.
  • You should probably have an email capture form. Even if you think nobody cares.
  • Maybe it’s just me, but I still don’t fully trust Netlify’s bandwidth reporting. I don’t have all the answers and it didn’t seem like all that much traffic.

Remediation Plan

  • Keep all future images under 100 KB. Period.
  • Actually pay attention to those Netlify alert emails.
  • Accept that no amount of experience completely inoculates you against screwing up the basics.

Final Thought

If your side project gets popular before you’re ready, it won’t make you rich.
But it will make you humble.
And possibly a little paranoid.

Stay cynical.

p.s. as I write this Netlify just emailed to say I had passed 75% of my quota. A tad late.