About civilsort
Sort it out together.
How It Works
- Create a ballot with an optional title (e.g., "Friday Lunch Vote")
- Share the URL with participants using the copy button (๐)
- Control access with the Open/Closed toggle:
- Open โ new visitors can join and vote
- Closed โ only existing participants can access
- Add items that everyone can vote on
- Rank your preferences by dragging items into the "Ranked" zone (top = most preferred)
- View results in real-time on the Results tab
The Schulze Method
civilsort uses the Schulze method (also called Beatpath) to compute rankings. It's a Condorcet completion method that:
- Counts pairwise preferences โ for every pair of items, it counts how many voters prefer one over the other
- Finds the strongest paths โ uses an algorithm similar to Floyd-Warshall to compute the strongest indirect preference between any two items
- Handles cycles gracefully โ if voters prefer A>B, B>C, and C>A (a "Condorcet paradox"), the Schulze method resolves it by finding the strongest paths
- Elects Condorcet winners โ if one item beats all others head-to-head, it always wins
Incomplete Rankings
You don't have to rank every item:
- Ranked items are always preferred over unranked items
- Unranked items are tied with each other (no preference)
This lets you express "I care about these top 3, but I'm indifferent to the rest."
Features
- No login required โ users are identified by browser cookies
- Real-time updates โ results update instantly via WebSockets
- Dark/light mode โ toggle with the button in the top-right
- Collaborative โ any participant can add items; you can delete items you added
View source on GitHub ยท
Report a bug
โ Create a ballot