planningpoker.ca

Estimate together, with no server in between

Planning Poker connects your team directly, browser to browser, over an encrypted peer-to-peer link. Whoever starts a session hosts the room — everyone else just needs the link.

Planning Poker's revealed round on desktop, with participants, a radar chart, and session historyPlanning Poker's revealed round on desktop, with participants, a radar chart, and session history
The same room on a phoneThe same room on a phone
A revealed Planning Poker round: three participants each showing their Complexity/Uncertainty/Risk/Effort votes, the team result with a radar chart, and two prior tickets in the session historyA revealed Planning Poker round: three participants each showing their Complexity/Uncertainty/Risk/Effort votes, the team result with a radar chart, and two prior tickets in the session history
A revealed round
Planning Poker mid-round: two of three participants shown as ready without revealing their votes, while the host rates Complexity, Uncertainty, Risk, and EffortPlanning Poker mid-round: two of three participants shown as ready without revealing their votes, while the host rates Complexity, Uncertainty, Risk, and Effort
Voting in secret
The settings panel open: template and dimension configuration, plus the app's own light/dark mode toggleThe settings panel open: template and dimension configuration, plus the app's own light/dark mode toggle
Settings, your way

How it works

Pick a template

Classic Fibonacci or T-shirt cards for a single point, or Multi-Dimension mode — rate Complexity, Uncertainty, Risk, and Effort separately and let the app compute the story point.

A template is just a config object: which dimensions exist, and the deck of values each one can take. Multi-Dimension mode runs the same voting UI once per dimension, then a single consensus function turns all of them into one story point.

Vote in secret, reveal together

Everyone votes privately to avoid anchoring, then the host reveals all cards at once — with a live chart of the spread.

Votes broadcast over the same peer-to-peer link as everything else, but every peer only renders "voted" until the host triggers reveal — the value itself is withheld in the UI, not hidden by a server that could leak it.

Export when you're done

The host can download the whole session — every ticket, every vote — as JSON or CSV to calibrate estimates later.

The host's browser is the only place session history ever lives. Export just serializes that in-memory record straight to a file — there's no database to query because there's no database.

Local-only means more privacy

Sessions connect peer-to-peer over encrypted WebRTC — nothing passes through a server, so there's nothing to sign up for, and no ticket titles or votes sitting in a database anywhere. Installable as a PWA; the app shell works offline, though live estimation still needs a connection.

Open Planning Poker