Scroll to the bottom of almost any Profullstack site and you will find this:
<< Profullstack >> ⚄ ▲
That is a webring. The >> link takes you to the next site in the ring and << takes you to the previous one. The die picks a random site, the triangle votes for the site you are on, and the name opens the full member list.
Webrings were how people found each other on the web before search engines took over. A ring is a circle of sites that agree to link to each other, so a visitor can walk from one to the next. We brought one back because we run a lot of sites. Most of our visitors find one product and never learn that the other seventy exist.
What is in the ring
As of today the ring has 72 members. 59 are active and 13 are inactive. Here is a sample:
- Products: CoinPay, ugig.net, ThreatCrush, CrawlProof, PairUX, sh1pt, qrypt.chat
- Directories and data: RSS Amplifier, nichedb.dev, OutreachGraph, datamart.help
- Media: bittorrented, genrewatch, tipoffwatch, nixamp, p0dcasters
- Developer tools: moshcode, hqtui, hqterm.sh, r4ck.dev, BufferOverride
- Blogs: Chovy's blog, the LogicSRC blog and the CrawlProof blog
The full list, in ring order, is at rssamplifier.com/ring/profullstack. You can also get it as JSON or as an OPML file of every member's feed. The OPML file subscribes you to the whole ring in one import.
How it works
The ring runs on OpenWebring, an open spec we published at LogicSRC. RSS Amplifier is the first host.
A member site owes the ring a few plain links and nothing else. There is no script, no widget, no tracking pixel and no iframe. Here is the footer, with the two icons shortened to …:
<nav class="webring" aria-label="Profullstack webring">
<a href="https://rssamplifier.com/ring/profullstack/previous?from=https%3A%2F%2Fprofullstack.com%2F" rel="prev"><<</a>
<a href="https://rssamplifier.com/ring/profullstack">Profullstack</a>
<a href="https://rssamplifier.com/ring/profullstack/next?from=https%3A%2F%2Fprofullstack.com%2F" rel="next">>></a>
<a href="https://rssamplifier.com/ring/profullstack/random?from=https%3A%2F%2Fprofullstack.com%2F" title="Random site" aria-label="Random site"><svg …/></a>
<a href="https://rssamplifier.com/ring/profullstack/vote?from=https%3A%2F%2Fprofullstack.com%2F" title="Vote for this site" aria-label="Vote for this site"><svg …/></a>
</nav>
The die and the triangle are the random and vote icons from OpenIcon, our open icon set. They are drawn inline with currentColor, so they take the colour of each site's footer and load nothing from anywhere.
Our own sites do not paste this by hand. They render @profullstack/footer, which fetches the latest template at render time. One release of that package updates every footer in the fleet.
Each link is a redirect. The from= parameter tells the host where you are, and the host answers with a 302 to the right neighbour. Because of this, the ring's order lives only on the host. When a site joins or leaves, nobody edits seventy footers.
The host follows a few rules:
- It skips inactive members. A hop never lands you on a site that has dropped its links or gone down.
- It wraps. "Next" from the last member goes to the first.
- Random never returns you to the page you came from.
-
An unknown
fromgets a random hop, so a copied snippet still goes somewhere useful. -
It accepts other rings' URL shapes. That includes
?host=(Fediring),?via=(webri.ng),?url=,/<member>/next(IndieWeb and Hotline style), and a bare Referer. A site that already uses another ring's markup does not have to rewrite it.
Staying active
The host checks every member about once a week. It fetches the homepage and looks for a link back to the ring. If it finds one, the member is active. If it does not, the member is marked inactive and hops skip it. Members are never deleted. When the links come back, so does the member.
The links have to be in the HTML the server sends. A footer that only appears after JavaScript runs will never be seen by the checker.
Voting
The triangle is a vote for the site you are reading. It opens a small page on the ring host that shows the site and a Vote button. You do not need an account.
Each visitor gets one vote per site per day, and at most ten votes an hour across the whole ring. We never store your IP address. A vote is keyed on a salted hash of the address and the date, so it cannot be linked to you or followed from one day to the next. The vote itself is a button press, so a search crawler or a link prefetcher that follows the footer link never casts one. Vote counts show next to each site on the ring page.
Who made it: human, AI or both
Each member can publish a small descriptor at /.well-known/openwebring.json:
{
"openwebring": "0.1",
"site": { "url": "https://profullstack.com/", "name": "Profullstack" },
"made_by": "both",
"rings": [{ "ring": "https://rssamplifier.com/ring/profullstack", "slug": "profullstack-com" }]
}
made_by is human, ai or both. An optional disclosure field uses the W3C AI-disclosure vocabulary (none, ai-assisted, ai-generated, autonomous). Both are the site's own claim, and the host does not verify them. If a site leaves the field out, the host lists it as "unstated" and does not guess. Most of our sites say both, because they are built by people running fleets of AI coding agents. The ring page shows each member's declaration.
Join the Profullstack ring
The Profullstack ring is curated, so it is for Profullstack properties and close friends. If you run one, email us and we will add it. Then:
- Paste the five links above into your footer, or render
@profullstack/footer, and changefrom=to your own homepage, URL-encoded. The ring page has the full snippet with the icons. - Optionally publish
/.well-known/openwebring.jsonwith yourmade_by. - Ask the host to check you now instead of waiting a week:
curl -X POST 'https://rssamplifier.com/ring/profullstack/check?url=https://yoursite.example/'
The response tells you whether you are active and which page the link was found on.
Make your own webring
You do not need us to run a ring. Anyone with an RSS Amplifier account can make one, and it is public as soon as you save it.
1. Put your sites in the directory
Ring members are sites in the RSS Amplifier directory. If a site you want is not there yet, submit its feed first. Submission is free and needs no key.
2. Create the ring
Sign in and open rssamplifier.com/ring/new. The form has three fields:
-
Title: for example, "Indie game devlogs". This becomes the URL slug, such as
/ring/indie-game-devlogs. - About it: one optional line on what the ring is for.
- Sites: one per line. Each line can be a site address, a feed address or a directory slug:
https://example.com/
https://another.example/feed.xml
some-blog
The order you list them in becomes the ring's order. Click Publish the ring. If an entry is not in the directory, the form names it so you can submit it and try again.
The new ring immediately gets the same things the Profullstack ring has:
- A ring page at
/ring/<slug> - Hops at
/ring/<slug>/next,/previousand/random, and voting at/ring/<slug>/vote - A member file at
/ring/<slug>/openwebring.json - An OPML of every member's feed at
/ring/<slug>/opml - A listing on the ring index and in the host file every OpenWebring directory reads
3. Hand out the snippet
Each member pastes the footer from the earlier section, with your ring's slug in place of profullstack and their own homepage in from=. The ring page has a ready-made join snippet. Until a member's links are live they stay pending, and hops skip them. Members who don't want to wait for the weekly check can run the curl check above against your ring.
4. Manage it
Open /ring/<slug>/edit, which only the ring's owner can see. From there you can:
- Rename the ring or change its description.
- Add sites. Paste them one per line. New members go on the end, and nobody else's position changes.
- Remove a site. It leaves the ring at once, and the sites on either side become neighbours.
- Watch the votes. Each site's vote count shows on the ring page, so you can see which members readers like.
Changes are live the moment they save. Every form is a plain HTML post, so editing works with JavaScript turned off.
There is a shortcut, too. Every topic in the directory is already a ring. Open any topic page and you will find a webring link built from the feeds in that topic. If a site in that topic adds the links, the ring becomes a real one with that site as an active member.
Points
All ring activity earns points on the ring leaderboard: viewing, liking, following, sharing, adding a site and making a ring. Making a ring earns the most. Readers and rings both rank, and the most-liked rings appear in RSS Amplifier's footer.
For agents
Everything here is also machine-readable. RSS Amplifier's MCP server has list_rings, get_ring and ring_next, so an agent can walk a ring the way a person clicks >>. Every ring is also listed in nichedb.dev's webrings collection along with members from other hosts.
Why we did it
Search engines and social feeds decide what you see. A webring lets the sites themselves decide. Each site in the circle vouches for its neighbours with an ordinary link. We like that it costs a site a handful of anchors and costs the visitor nothing, and that the whole system runs on 302 redirects.
Click >> at the bottom of this page and see where you land.
Top comments (0)