LOADING THE FEED ▮
NICHE OF ONE
--:--
← 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 running on top of it, and how the members keep the ring clean without me refereeing every call.

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. $37/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, the search index bolted on top of it, and how the members keep the thing clean.

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 was the constraint, not the code. 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

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

So I indexed it. Every member’s feed gets pulled overnight, 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 happens to contain. Then you can search the ring. Not the web. The ring.

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.

It runs. Search this site and ring results sit above my own, because a human vouched for those and that’s worth more than me ranking myself first.

How it stays clean

A ring shares its readers. That’s the whole point of the thing, and it’s also what worried me. If one member rots, every other member’s footer is still handing readers to it, and nobody in the ring knows it’s happening. Vetting somebody once, on the day they join, does nothing about that.

So the crawl screens as it goes. Every post pulled from every member gets read by a safety model before it lands in the index, which is how you catch drift instead of just a bad application. A site can be exactly what it claimed in July and be something else by November. That gets caught in November.

The rest is you. Anybody can report a site in the ring, no account needed, because the person who lands on something ugly is the one who’ll notice first. Three people flag the same site and it’s suspended on the spot. The arrows stop routing to it that minute. Then I look at it and either lift the hold or make it permanent. Suspending first and judging second is the only order that doesn’t leave the ring feeding people to the problem while I catch up on email.

Stacking the deck takes work. One report per person per site per day, so the same grudge showing up three times in an afternoon still counts once. Somebody patient enough to come back from three different networks can beat that, and when they do it shows up in the report log looking exactly like what it is.

If you’ve got a Space here

Members of the Underground can put their own Space in the ring from their settings. One checkbox, off by default.

Off is the one place the ring is stricter than the rest of the site, and that’s on purpose. Flipping on search indexing is housekeeping. Joining a ring nails your address to other people’s walls and sends strangers to your door, so it gets to be a decision somebody made awake. Uncheck it and you’re gone on the next sync. The only thing that changes is the arrows quit pointing at you.

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.” And you turn up in the ring’s search, which is small enough that turning up in it counts for something.

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 have no 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
Full search on OneSearch: the network, the ring, and the open web →esc closes · ↑↓ move · ↵ opens