When a Broken Link Is Not a Broken Link

A white-and-red ‘Do Not Enter’ sign.

Photo by Kyle Glenn on Unsplash

I keep a small dashboard running that watches this website for me. Is it up? Does the sitemap still match what’s actually on disk? Are the update feeds live? And, once a night, the unglamorous one: are there any dead links — anywhere on the site — quietly rotting?

One morning it told me there was. One broken link, on one page. The page was a post I’d written a couple of weeks earlier, the one about tearing out my renderer and rebuilding a whole game out of equations. The dead link, it reckoned, was the one pointing at Shadertoy — which, if you read that post, you’ll know I was practically writing a love letter to.

The link worked fine

I clicked it. It loaded instantly. Of course it did — Shadertoy is very much alive and the wizards are still conjuring worlds out of a screenful of maths on it every day.

So why did my tool insist it was broken?

Because my tool doesn’t click links the way you and I do. It knocks. It sends a tiny HEAD request — the web’s equivalent of tapping on the door and waiting for a “yes, come in” — and it reads the answer. A missing page answers 404, gone. Shadertoy answered something different: 403, forbidden.

Not “there’s nothing here.” “There’s something here, and you may not have it.”

Shadertoy, like an awful lot of the modern web, sits behind bot defences — the machinery that waves humans through and slams the door on anything that smells automated. And a link-checker knocking with no browser, no mouse, no history is exactly the sort of thing that machinery exists to keep out. My robot looked like a robot, got treated like one, and dutifully filed the silence under “broken.”

It wasn’t wrong about what it saw. It was wrong about what it meant.

The three wrong fixes

There are three easy ways to make a warning like this go away, and all of them are worse than the warning.

The first is to delete the check for that one link. Quick, clean — and now that link is invisible forever, including the day it genuinely dies.

The second is to reach for a bigger hammer: whitelist the whole domain, or just stop checking external links at all. That throws away the entire reason I built the thing.

The third is the worst, and the most tempting: just… ignore it. Let the little red number sit there and learn to scroll past it. The trouble is that a warning you train yourself to ignore is worse than no warning at all, because the day it’s telling you something real, you’ll scroll past that one too. A smoke alarm that cries wolf gets its battery taken out — and then it’s just a plastic disc on the ceiling.

Known, and accepted

What I actually wanted was to tell the tool something I knew and it couldn’t: I’ve looked. It’s fine. Stop counting it as a fault — but don’t stop watching it.

So that’s the feature. There’s now a Mark known button on any external link that fails the probe. Press it and the link steps out of the red “broken” list and into a quiet one called Accepted — known good. It stops counting against the site’s health. The nagging stops.

But — and this is the whole point — it does not stop being checked. Every nightly sweep still knocks on that door. The link just gets filed under “yes, I know” instead of “something’s wrong.” One click puts it straight back on the naughty list the moment I change my mind, and if the link ever disappears from the site altogether, the tool tells me that, too — so an old judgment can’t quietly go stale behind my back.

The honest bit

It is a tiny feature. A button and a list. I could describe the whole thing to you in a sentence.

But I think the small distinction underneath it is the part worth keeping. A false positive you silence by deleting the check is a little lie you tell yourself: there was never a problem here. A false positive you record a judgment about is something else entirely — it’s honesty with a memory. One quietly unplugs the alarm. The other says “I heard it, I went and looked, here’s what I found” — and leaves every wire exactly where it was.

The most dangerous state for any watchdog isn’t being occasionally wrong. It’s barking often enough at nothing that you stop looking up when it barks.

Peace with the doormen

The people behind Shadertoy conjure entire animated worlds out of a few lines of maths — the exact trick I borrowed to build a monster. It turns out they also conjure a very firm “no” for robots. Fair enough; it’s their door.

My little watchtower and I have made our peace with it. The link isn’t broken. I know it isn’t. And now my tool knows that I know — without ever once agreeing to stop checking.