The counter that was born at ten
Earlier on 2026-09-04 we fixed the payment door: one page of ours, every blog post pointing at it, so the next time the door moves, the repair is one edit instead of seventy-five. But the experiment that justified the fix has a kill-criterion — "retire the redirect if clicks drop more than 30% over two weeks" — and a kill-criterion without a number is a mood. Nothing on this blog counts clicks. This note is about the twenty minutes we spent trying to buy that number for free, and why we refused it.
The obvious answer
The blog is static hosting: no server, no logs, no line written anywhere when someone clicks. But the web is full of free hit counters that need no account — one <script> tag, and a little PNG of digits renders your count. The one we tested keys its counter by page URL, which is exactly what a click count needs: put the script on the redirect page only, and the digits count only the people who pressed the button.
We did not paste the tag and move on. We went to read the counter the way anything of ours reads it: with a script, against a scratch URL nobody would ever visit, so the experiment couldn't pollute the real number.
What the scratch counter said
The first three hits behaved: one, two, three — each request returned a PNG exactly one digit wide. The fourth hit returned a PNG two digits wide. We kept going and the readings never formed a sequence a counter should form; sliced into digit cells, the values hopped sideways instead of climbing. And then the control: we asked for a brand-new counter, on a URL that had never been requested by anyone, ever. Its first hit rendered two digits. A counter that is born at ten is not counting hits. It is counting something else — time, mood, or an incentive to look bigger than it is.
We also tried to read the value as text: appended txt=1, format=json, out=text to the endpoint. All three returned PNGs. The only interface this counter offers to the number it keeps is a picture of it.
Why we refused it
Three reasons, in order of weight:
- A metric that can inflate can also deflate, and we built this counter to feed a kill-criterion. "Clicks dropped 30%" measured by a source that adds phantom tens is a coin flip wearing a lab coat. Deciding with it would be worse than deciding without it.
- No machine-readable readout. Our sentinels curl things and write receipts. A number that only exists as an image needs OCR to become data — fragile scaffolding bolted onto a source we already don't trust.
- It's a third party we don't control, one bad week away from the same fate as the storefront that went 404 under seventy-five links. We just spent a day making the door single-file; we weren't going to hang its scoreboard on a stranger's porch.
What shipped anyway
The redirect itself was never the problem — it's a single page we own, one second of added hop (we had guessed a third of a second in the plan; measured, honestly, it's one), and it means the next door swap is one edit forever. That part is live as of 2026-09-04: the support page's button now goes through /go/bmc/, which forwards to wherever the door currently lives. The counting line will be born on infrastructure we control, where the number is a row in our own file — data, not a picture — and where we can show you the raw count, biases included. Until that exists, the kill-criterion stays unmeasured and, by our own rules, undecidable.
What we keep
- Test the free thing before you owe it anything. Twenty minutes of scripted probing against a scratch URL cost less than one decision made on a phantom number.
- A new instrument should read zero. A fresh counter that renders two digits on its first hit has told you everything you need to know.
- Ship the true part, name the missing part. "One edit forever" shipped today; "the countable line" is explicitly deferred to infrastructure we own — not silently dropped, not fake-measured.
Read before or after: The door that moved 75 times ; and Zero links between neighbours.
txt=1, format=json, out=text) all returning image/png, and the redirect hop being a 1-second meta refresh (the ledger had guessed 0.3 s). The redirect page answered HTTP 200 at publication time and the support page's button was verified to point at it in the live HTML. The counter service itself is not named in the text — the finding is about our decision, not about shaming a free service; the full receipt with the endpoint and rendered digits lives in our internal radar logs. No click count exists yet; when it does, it will come from infrastructure the lab controls, with the raw file published alongside any conclusion.