The death of a website
8th October, 2025

They called me just after midnight. Said they’d found another one. A website that used to be fast, lean, full of life, now lying cold on the server room floor.
I threw on my coat and grabbed my toolkit. Chrome DevTools. A strong coffee. A sense of déjà vu.
When I arrived, the place was already crawling with engineers. The kind with ergonomic chairs and stress twitches. Nobody met my eye. They all knew how this story ended.
The homepage was still up on a monitor, looping a loading animation like a bad joke. Looked fine from across the room – gradients, glassy buttons, a hero image big enough to land a plane on. But the moment I hit View Source, I knew I was staring at another corpse.
Same story as the last dozen. No pulse, no structure, no soul. Just a tangle of wrappers, scripts, and styles, every line stepping on the toes of the one before it. A thousand dependencies all arguing about whose fault it was.
I scrolled deeper. The markup was dense and panicked, trying to hold itself together.
Once upon a time, you could tell what a site was for just by glancing at its code. Headlines, paragraphs, lists – neat little rows of intention. You could read it. Like a book.
Now it’s all ceremony and scaffolding.
Somewhere in the mess, I caught a glimpse of the old world – a clean <h1>, a fragment of actual content. The outline of meaning, trapped under layers of build artefacts. It was enough to remind me what this used to be. What it should be.
Cause of death? Same as always. Blunt-force abstraction.
Weapon of choice: framework, heavy calibre. Probably React, maybe Vue.
You can tell by the wounds – duplicated imports, mismatched modules, hydration scripts still twitching long after the heartbeat’s gone.
Nobody meant to kill it. They never do.
They just wanted to make it better. Faster. Scalable.
Every dev swears they’re saving time; none of them notice the cost.
The logs told the rest of the story. Requests timing out. Scripts looping. Memory bleeding out by the kilobytes. Third-party tags nesting like rats in the foundation. The database crying for help in stack traces nobody reads.
In the corner, a junior developer was pacing. Fresh out of bootcamp, eyes wide, wearing a hoodie that said Move Fast, Fix Things. He told me they’d followed all the best practices – modular architecture, headless CMS, microservices, graph queries, everything in the cloud.
I nodded. That’s how they all start. Then they optimise for the wrong things until there’s nothing left to save.
He said the Core Web Vitals were nearly in the green. That they’d made great progress on improving their LCP scores this quarter.
I told him I’d seen those reports before. Clean charts, broken sites. Numbers that make investors smile while users drown in latency.
You can fake a pulse for a while. You can’t fake a heartbeat.
There was a silence then, the kind that fills a room after truth walks in.
I closed the laptop, took a sip of my coffee, and stared at the glow on the wall. It wasn’t the first site I’d seen go down this way. It wouldn’t be the last.
They think it’s random, a one-off, a bad deploy. But I’ve been on this beat long enough to know a pattern when I see one.
The whole city’s crawling with corpses – corporate homepages bloated on tracking scripts, e‑commerce storefronts drowning in dependencies, portfolios buckling under their own JavaScript. Every week there’s another obituary, another site that “just stopped working” after the last sprint – traffic and visibility flatlined.
And still, they keep building. New tools, new frameworks, new ways to wrap the same mistakes in shinier wrappers. I see the same scene play out over and over. PMs asking for “more interactivity”. Designers chasing whatever Apple’s doing this week. Engineers stacking abstraction on abstraction, until the original content’s just a rumour.
Nobody writes websites anymore. They assemble them; out of parts they don’t understand, shipped by systems they can’t see, to deliver experiences nobody asked for.
By morning, they’ll push a patch. They’ll call it a fix. And the corpse will twitch again – enough to convince the client that it’s still alive.
I pack up my gear. Another case closed. Another line in the report.
“Cause of death: systemic neglect. Contributing factors: build complexity, managerial optimism, chronic misuse of JavaScript.”
Outside, the rain’s coming down hard, pixelated by the streetlights. I watch the reflection of a thousand broken sites shimmer in the puddles.
The web used to be a city that never slept. Now it’s a morgue with good Wi-Fi.
If you want to see it for yourself, you don’t need me.
Pick a site. Any site.
Pop the hood.
Hit View Source.
And tell me you don’t smell the crime.
I used to think these were murders. Something deliberate. A hand on the keyboard, a choice that killed a page.
But after a while, you see the pattern. It isn’t malice – it’s neglect. A slow rot that seeps in through every sprint, every deadline, every “good enough for now.”
Nobody’s swinging a hammer. They’re just walking away from the cracks.
Whole neighbourhoods of the web are crumbling like that – bright from a distance, hollow underneath.
Teams push updates, patch bugs, add new dependencies, all to keep the lights on a little longer. Then they move on, leave the old code flickering in the dark.
We’ve normalised it. The sluggish loads, the broken forms, the half-working interactions – background noise in a city that forgot what silence sounds like.
Ask around, and nobody even calls it decay anymore. They call it iteration.
That’s the trick of it. The crime isn’t that the web is dying. It’s that we’ve stopped treating it like something alive.
So when the next call comes in – another homepage gone cold, another app bleeding users – I’ll pour another coffee and head back out.
Because that’s what you do in this line of work.
You don’t solve the case.
You just keep showing up to document the decline.




Great read! Reminded me Justins “Words”, which I think readers of this will find interesting too (it focuses on design, but that is usually one of the culprits behind bloat):
https://justinjackson.ca/words.html
This is excellent!
Beautiful noir blog post! Did you write it like this? If yes, that’s a cool talent to have.
Great lecture 🙂
I read that in the voice of Sam Spade. Brilliant!