# Versus 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. Source: https://steevepommier.com/projects/versus/ Section: Projects Published: 2026-09-29 Updated: 2026-10-09 Tags: ranking, pairwise comparison, local-first, real-time, PWA, i18n, TypeScript, Vite, Cloudflare Workers, Durable Objects, Cloudflare D1, Cloudflare R2, Vitest, Playwright --- 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: {% table %} - Method - Algorithm - Best for --- - Balanced (default) - Bradley-Terry, fitted on all duels at once, with a ± margin per item - Things that do not change: photos, products --- - Dynamic - Elo, duel by duel - Preferences that drift over time --- - Simple - Smoothed win rate - Readability --- - Exact sort - Binary insertion sort - Settling a short list in the fewest duels {% /table %} 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.