SteevePommier
Theme
Menu background
Background pattern
Reveal
Reveal size 10
Density 50
Colour
Menu position
Analytics

Versus02

Rank anything by comparing two items at a time — text, images or colours — then publish the ranking and let a crowd vote on it live.

Ongoingrankingpairwise comparisonlocal-firstreal-timePWAi18n
A Versus duel in the dark theme: two gradient cards, Lagoon against Night neon, beside the live ranking of six website backgrounds.
The Versus home page: 'Rank your cheeses two at a time' above a live demo of the app ranking pastries.
Home page, with a scripted demo of the app
A duel between Tasmania and Seville, with a forecast in the middle and the eight destinations ranked on the left.
A duel, with the live ranking beside it
The results of the website background ranking: a podium of three gradients, Lagoon first.
Results as a podium, Dynamic (Elo) method
An exact-sort duel between a coral and a cobalt swatch, the other colours still waiting to be placed.
Exact sort, settling a short list of colours
The gallery: a new ranking card and the Popular section of published boards.
Your rankings and the Popular boards
Timeline
Sept 2026 —
Role
design + build
Author
Steeve Pommier
Stack
TypeScript, Vite, Cloudflare Workers, Durable Objects, Cloudflare D1, Cloudflare R2, Vitest, Playwright
AI
Vibecoded

Picking a favourite out of twenty is hard; picking one of two is easy. Versus asks only the easy question — this one or that one — again and again, and turns those quick duels into a real ranking, with a podium and a margin of error. Items can be text, images (dropped or pasted, downscaled in the browser) or colours and gradients from an inline editor; a whole list pasted at once becomes items too.

Four ways to score the same duels

Every duel is kept, so the scoring method can change at any time without losing a vote:

MethodAlgorithmBest for
Balanced (default)Bradley-Terry, fitted on all duels at once, with a ± margin per itemThings that do not change: photos, products
DynamicElo, duel by duelPreferences that drift over time
SimpleSmoothed win rateReadability
Exact sortBinary insertion sortSettling a short list in the fewest duels

The results page can put two methods side by side, which shows where a ranking is still fragile. Pair selection favours items with few duels, close positions and unseen pairs.

Local first, published on request

The app runs in the browser, keeps everything in localStorage, installs as a PWA and works offline. Only what you publish leaves the device: a published board gets a link, and a crowd votes on it in real time — one Durable Object per board holds the votes and the WebSockets, a D1 registry lists the boards, pictures wait in R2 until they are approved. Rankings, a crowd's result or a single duel can be shared as an image drawn in the browser, and a board's link unfurls with its own card.

It ships in English and French, the home page included, with no UI framework and three runtime dependencies — all of them fonts.