In 2013 I was a college student with a Python book and a free evening. The result was twenty-one lines of HTML: a single button wired to a CSV of domains a script had scraped. Push it, get a random website. That was the whole thing. My friends and I lost entire evenings to it — there is something about not knowing where the next click lands that the modern feed never gives you.
The CSV sat in a folder for over a decade. This site is that button, rebuilt like I mean it.
The list started from that 2013 CSV and grew two ways.
First, a crawler. It fetches homepages only, identifies itself honestly, obeys robots.txt, rate-limits itself, and puts hard caps on everything — it is written to be a good guest on other people's servers. It records each site's title, language, and whether it is actually alive, and it discovers new domains by following links outward from sites already on the list.
Second, lists that humans curated on purpose. The dataset folds in the small web's best rolls: Kagi Small Web, the 512KB Club, the 250KB Club, the 1MB Club, personalsit.es, ooh.directory, Blogscroll, indieblog.page, engineering-blogs, several webrings (XXIIVV, Hotline, Hack Club, The Claw), the most-viewed sites on Neocities, the moderated index of searchmysite.net, and a slice of wiby.me's old-web index. Sites from these lists carry a small hand-picked mark in the ledger, and a toggle restricts the shuffle to just them.
Before anything reaches the button, a quality gate drops what a decade of link rot accumulates: parked domains, casino spam squatting on expired blogs, porn, bare “It works!” server pages, hijacked storefronts. What survives gets themed into categories — personal sites, blogs, wikis, music, art, academia, government, games and more — and tagged by country from its domain. By default the shuffle only draws from sites the crawler verified alive; a toggle lets you gamble on the unverified long tail.
There is no account, no algorithm, no ad, no tracker, and no iframe. The page is static HTML; your collection and trail live in your browser's localStorage and never leave your machine. Every site opens in a new tab as itself, because a framed page is not really a visit. The dataset is a single JSON file your browser downloads — open the network tab and it is all there.
The hand-curated slices come from projects that deserve the traffic. Go get lost in the originals too:
Built by Michael. The crawler, the quality gate, and this page are plain Python and vanilla JS — no frameworks, no build step, no third-party packages. Started in a dorm in 2013; still pushing the button.
Back to the button