LOADING THE FEED ▮
NICHE OF ONE
LIVE --:--
← The Feed

A Teenager Solved Web Discovery in 1995. We Threw It Away.

/What a webring actually is, how the 1995 version worked under the hood, why it died, and how the one I just built works. Including the search index I'm building on top of it, which is the part the old ones never had.

post to X email it
A Teenager Solved Web Discovery in 1995. We Threw It Away.
// the everything pass All-Access The whole catalog, the members vault, and the back room where the operators talk shop. $67/yr →

TL;DR: A webring is a circle of independent sites that hand readers to each other with nobody in the middle. A high schooler built the definitive version in 1995, it worked, and we abandoned it when search got good. Search isn’t good anymore. I built one, here’s exactly how it works, and I’m building a search index on top of it that only returns sites a human made.

In June 1995, a high school student named Sage Weil launched something called WebRing. He’d written the script the year before, building on earlier work by Denis Howe. It solved a problem that was genuinely hard at the time: there were interesting websites, and there was no reliable way to find them.

That kid went on to co-found DreamHost and then create Ceph, the distributed storage system Red Hat eventually bought for $175 million. So he was not a dummy. And the thing he built as a teenager worked so well it ran for years across tens of thousands of rings.

Then we threw it in the garbage, because Google showed up and made finding things feel solved.

It’s not solved anymore. So let’s look at what he actually built, because the mechanism is almost insultingly simple and it still works.

What a webring actually is

A ring is a list of sites that agree to point at each other, in order, in a circle.

Every member puts a small block of HTML in their footer. In 1995 that block had a few links in it and usually a truly hideous animated GIF. The links pointed at a script running on the ring’s hub, and they carried two pieces of information: which ring you’re in, and which site you are.

Reader finishes reading something on site four. They hit Next. The hub script looks up site four in the list, works out that site five comes after it, and bounces the reader straight there. Site five’s footer has the same block. Hit Next again, you’re at site six. Keep going and eventually the ring wraps around and puts you back at site one.

That’s it. That’s the entire invention. A list, a modulo operation, and a redirect.

What made it work wasn’t the code, it was the constraint. A ring had a subject. If you were in a ring about model railways, everybody in it was about model railways, and every site had been looked at by whoever ran the ring. There was no ranking. There was no bidding. Being in a ring meant a human had decided you belonged in it, and hitting Next was a bet that the next site would be worth your time. The bet usually paid.

Compare that to what you get now when you search for a hobby.

Why they died

Two things killed rings, and only one of them was Google.

The first was that search genuinely got better, fast. Once a search engine could reliably surface the good model railway page, curating a list of them by hand felt like busywork. Rings started looking quaint around 1999 and embarrassing by 2003.

The second was that the hubs were centralized, and centralized things rot. WebRing got acquired, changed hands, filled up with ads, and started dying the death that acquired web properties die. When your ring’s hub goes down, every member’s footer breaks at once. Thousands of rings just quietly stopped turning.

Both of those are worth staring at, because the first one has reversed and the second one is a design problem I have to answer for.

Search has been enshittified from the inside. The results page fills with generated sludge, then the engine starts answering the question directly so you never click through to the person who actually knew the answer. Meanwhile the platforms that inherited discovery started charging rent: you built the audience, they own the pipe, and the fraction of your own people who see your work goes down every year unless you pay.

So the problem that rings solved in 1995 came back. It came back wearing a different suit, but it’s the same problem. Finding a person who made a thing is hard again.

How this one works

Mechanically, the same as 1995. The implementation is just less silly.

Every member drops a badge in their footer. Three characters and no images: a back arrow, the mark, a forward arrow. It’s plain HTML with inline styles. No script, no tracker, nothing that phones home, nothing that watches your readers. If every machine I own caught fire tonight, that badge would sit there being inert HTML instead of throwing errors on your page.

When somebody clicks the arrow, the request hits a router I run at the edge. Not a server in a rack somewhere: a small piece of code that runs in a few hundred cities at once, so the redirect fires from wherever the reader physically is. It pulls the member list, finds where you sit in it, works out your neighbor, and forwards them. Same modulo operation the teenager wrote. It takes about as long as the browser takes to decide it’s going somewhere.

The member list is a plain JSON file sitting on the open web. You can go read it right now. Nothing about who’s in this ring is hidden, which I’d argue is the minimum bar for something you’re being asked to link to from your own site.

Two things I changed, both because of how the old ones died.

If your site isn’t in the list, the router doesn’t guess, it sends the reader to the page explaining what the ring is. And if the list ever has only one member in it, the arrows don’t loop you back to the site you’re already on like an idiot. They take you to the directory, which currently says, in plain English, that the ring has one member and it’s me.

Because it does. I’ll come back to that.

The part 1995 didn’t have

Here’s what I’m building on top, and I want to be straight that this part isn’t finished yet.

A ring knows something a search engine doesn’t: every site in it has been looked at by a person. That’s a vetted list of human-made pages, which in 2026 is a genuinely scarce asset.

So I’m indexing it. Every member’s feed gets pulled, run through an embedding model, and stored as vectors, which is a complicated way of saying the index understands what a piece is about rather than which words it contains. Then you can search the ring. Not the web, the ring. Every result is a site somebody in this circle vouched for.

Search for “how do I leave Substack without losing my list” and you don’t get twelve pages of affiliate spam wearing a blog costume. You get the people in the ring who actually wrote about it.

That’s a search engine that only returns things a human made. Small, obviously. Aggressively small. But I’d rather have two hundred results from people who exist than two million from a content farm, and I don’t think I’m alone in that.

The machinery for this already runs on my own site, so it isn’t vapor. Extending it across the ring is queued, not shipped. When it works I’ll say so, and when it breaks I’ll say that too.

What it costs you and what you get

Nothing, permanently. No tier, no upgrade, nothing to buy later. If I ever start charging for a seat you have my written permission to be extremely rude about it in public.

You get a listing on the members page with a link search engines follow. You get readers arriving from the sites on either side of you, which are readers who were already reading something, in the middle of reading, which is a considerably better state than “scrolling.” When the index works you get found in it.

You keep your list, your site, and your readers. Leave whenever you want, delete three lines of HTML, and nothing else of yours breaks. No exit interview.

And I don’t care whether you used AI to make your work. The indie web crowd has mostly decided that’s a moral line, and directories over there will bounce you for touching the tools. That’s a category error. A machine didn’t decide your piece was finished. You did. Nobody ever asked whether Ginsberg used a typewriter.

What gets you turned down is a site with nobody home behind it, pumping volume that nothing read before it went out. You can spot that in about nine seconds and so can everybody else.

The honest part

There’s one member. It’s me. A ring of one is a mirror.

I’m not going to pad it with my own subdomains to make the number look respectable, because you’d notice, and because a directory that lies about its size on day one is going to lie about other things by month three.

The seat’s free and the instructions are at nicheof.one/noo. If you don’t have a site to put a badge on, that’s the real problem to solve first, and I’ve got opinions about that which mostly reduce to: own the thing, keep it cheap, don’t rent your audience from anybody.

A teenager fixed this in 1995 with a list and a redirect. It took the rest of us thirty years to break it badly enough to need fixing again.

// comments
Open full search ↵esc closes · ↑↓ move · ↵ opens