Planning Poker

Free real-time planning poker for Scrum and agile teams — peer-to-peer voting, no signup, no server stores your data.

What it does

Real-time, peer-to-peer voting

Start a session, share the link, and teammates join instantly. Votes sync browser-to-browser over WebRTC — there is no round-trip to a database, so a card flips in well under a second.

Seven decks, including custom

Fibonacci, Modified Fibonacci (with ½ and 100), T-shirt sizes, Powers of 2, Linear 1–10, a Risk deck, or your own comma-separated values. Custom decks travel in the share link so everyone sees identical cards.

Hidden votes until reveal

Before the reveal, the facilitator only ever sees who has voted — never what they voted. Card values stay on each voter’s machine and the facilitator’s memory until everyone is ready, which kills anchoring bias.

Stats that drive the discussion

On reveal you get average, median, mode, the min–max spread, a consensus indicator, and automatic outlier highlighting — so you talk about the 2 vs the 13, not the math.

Story queue + Markdown export

Paste your whole backlog, one story per line. Load each in turn, record the final estimate, and export the session as a Markdown table (Story | Average | Median | Final | Notes).

Facilitator controls

Reveal, reset the round, advance or skip stories, switch decks mid-session, kick a stray tab, and edit the current story — all gated to the facilitator role.

Reconnection & host migration

A brief drop marks a teammate as reconnecting rather than gone. If the facilitator disappears, the longest-connected voter is automatically promoted so the session survives.

Solo mode fallback

On a locked-down corporate network, or just prepping alone? Solo mode lets you estimate a backlog by yourself and export the result — no connection required.

How to use Planning Poker

  1. 1
    Start a session

    Click "Start a session". You become the facilitator and get an 8-character room code and a shareable link.

  2. 2
    Invite your team

    Copy the share link (or just the room code) and drop it into Slack, Teams, or your video call. Teammates open it, type a name, and join as a voter or observer.

  3. 3
    Set the story and vote

    The facilitator names the current story. Everyone clicks a card (or presses a number key). You can change your vote until the reveal — others only see that you have voted.

  4. 4
    Reveal and discuss

    When everyone has voted, the facilitator clicks Reveal. All cards flip at once and the stats appear. Talk through the spread and outliers, then agree on a final estimate.

  5. 5
    Next story, then export

    Click "Next story" to save the result and advance the queue. When you are done, export the whole session as a Markdown table.

When to use this

Distributed sprint planning

A remote team on three continents opens the link, estimates 12 backlog items in 25 minutes, and exports the Markdown table straight into the sprint ticket.

Backlog refinement / grooming

A Scrum Master pastes 40 rough stories into the queue, the team blitzes the obvious ones, and flags the wide-spread items for a follow-up conversation.

A quick estimate mid-standup

Someone asks "how big is this?" — the facilitator starts a session, drops the link in chat, and the team has a number in under a minute.

Teaching estimation to a new team

An agile coach uses the consensus indicator and outlier highlighting to show why a 3-vs-13 split is a signal to talk, not to average.

Solo pre-grooming

A product owner uses Solo mode the night before refinement to pre-size stories and walk in with a baseline.

Common errors & fixes

"This room has ended or no one is hosting."
The facilitator closed their tab, so the room no longer exists (there is no server keeping it alive). Ask them to start a new session and share the fresh link.
Teammates cannot connect on a corporate network
Strict firewalls sometimes block the WebRTC handshake. Try a different network or a phone hotspot, or use Solo mode to estimate individually and compare notes.
Votes look stuck on "?" for everyone
That is expected before the reveal — the "?" means "voted, value hidden". The facilitator reveals when everyone is ready; values only appear then.
Facilitator dropped and the room froze for 15 seconds
That is the reconnection window. After it, the longest-connected voter is automatically promoted to facilitator and the session continues. If everyone leaves, the room is gone.
Refreshed my browser and lost the room
Re-open the same link — as long as someone is still hosting, you rejoin the live session. Your name is remembered from last time.
Switched decks and all votes cleared
Intentional — changing the deck resets the current round so nobody is comparing T-shirt sizes against Fibonacci numbers. Re-vote on the new deck.

Technical details

TransportWebRTC peer-to-peer (DataChannel) via PeerJS
SignalingFree public PeerJS broker (handshake only — no app data)
TopologyStar — facilitator is the hub, broadcasts state to all peers
Room code8-char Crockford base32 (~40 bits, ~1.1 trillion combinations)
Server storageNone — votes, names and stories never leave your devices
Local storagedevzone.pp.* — your name, preferred deck, last 10 session summaries
DecksFibonacci, Modified Fibonacci, T-shirt, Powers of 2, Linear, Risk, Custom
Max participantsSoft cap 25 (UI warning), hard cap 50
Inbound messagesSchema-validated and rate-limited per peer before any state change
ExportMarkdown table (Story | Average | Median | Final | Notes)
AccessibilityKeyboard voting, ARIA live announcements, reduced-motion, AA contrast
PrivacyPre-reveal only "hasVoted" flags are shared; card values are withheld until reveal

Why peer-to-peer instead of a server

Most planning poker tools route every vote through their backend, which means your team’s estimates — and by extension, hints about your roadmap — sit in someone else’s database. This tool takes the opposite stance: it uses WebRTC, the same peer-to-peer technology behind video calls, so browsers talk directly to each other.

A tiny signaling handshake (through the free public PeerJS broker) helps your browsers find each other on the network, but no story names, vote values, or participant names are ever sent to or stored on a DevZone server. The trade-off is honest and deliberate: there are no persistent rooms and no history server-side, because persistence would require accounts, and accounts would break the no-signup promise. Close the tab and the session is gone forever.

The privacy rule that makes estimates honest

Planning poker only works if votes are simultaneous. If you can see that the senior engineer voted 3 before you commit, you anchor to 3 — and the whole point of independent estimation evaporates.

This tool enforces that at the protocol level, not just the UI. Before the reveal, the facilitator’s browser broadcasts only a boolean per person: "has voted" or "has not". The actual card value stays on the voter’s machine and in the facilitator’s memory, and is serialized to anyone else exactly once — when the facilitator clicks Reveal. Even a modified client cannot snoop early votes, because the values were never on the wire to begin with.

Reading the spread, not just the average

The single most common estimation mistake is averaging a split vote and moving on. If half the team says 2 and half says 13, the average (7.5) is the one number nobody believes — it papers over a real disagreement about scope or risk.

That is why the results panel leads with the spread and a consensus indicator (green when everyone agrees, amber when within one step, red when the gap is wide) and highlights outliers automatically. A wide spread is not a problem to be averaged away; it is the most valuable signal in the room. It usually means two people are estimating two different stories — one sees the happy path, the other sees the migration, the edge cases, and the test matrix. Surface that, talk it out, re-vote.

What happens when the facilitator disconnects

Because the facilitator is the hub of the star topology, their dropping is the one failure that could kill a session. The tool handles it deterministically. When peers notice the host is gone, each starts a 15-second timer and shows a "reconnecting" banner.

If the timer expires, every remaining client runs the same election independently — the longest-connected voter wins (ties broken by peer ID) — so they all agree on the winner without any coordination. That voter re-hosts under the same room code and rebroadcasts the last known state; everyone else reconnects to it. If no voter remains, the room simply ends, which is the correct outcome for a tool with zero server state.

Frequently Asked Questions

Is it really free, with no signup?

Yes. There is no account, no email, no paywall, and no trial. Click "Start a session" and you are estimating in seconds.

Does anyone store our votes or stories?

No. Votes, story names, and participant names sync directly between your browsers over WebRTC and are never sent to or stored on a DevZone server. A small signaling handshake through the public PeerJS broker only helps your browsers find each other. You can verify this yourself in your browser’s DevTools network tab — no vote data is sent to any devzone.tools domain.

How many people can join one room?

It is tuned for typical teams of 5–15. You will see a warning past 25 participants, and new connections are refused beyond a hard cap of 50. Larger groups are possible but latency depends on everyone’s networks.

Does it work on mobile?

Yes. The layout adapts to phones and tablets — cards stack, the participant grid scrolls, and everything stays tappable. You can fully participate from a phone.

What happens if I refresh or briefly lose connection?

A short drop marks you as "reconnecting" for 15 seconds rather than removing you. Re-open the same link and you rejoin the live room, as long as someone is still hosting it.

What if the facilitator leaves?

The session does not die. After a 15-second window, the longest-connected voter is automatically promoted to facilitator and the room continues. Only if everyone leaves does the room end.

Which estimation decks are supported?

Fibonacci, Modified Fibonacci, T-shirt sizes, Powers of 2, Linear (1–10), a Risk deck, and a fully custom deck where you type your own comma-separated values. The "?" card means "I don’t know enough" and "☕" means "I need a break" — both are excluded from the stats.

Can I use it without a team?

Yes — Solo mode lets you estimate a backlog on your own and export the result as Markdown. It is also the automatic fallback if your network blocks WebRTC.

How are the statistics calculated?

For numeric decks you get average, median, and mode; for all decks you get the spread and a distribution. Consensus is judged on how far apart the votes are on the deck (one step apart counts as near-consensus, not the raw numeric gap), and any vote two or more steps from the median is flagged as an outlier. The "?" and "☕" cards are never counted.

Can I export the results?

Yes. Each completed story is recorded with its average, median, and final estimate, and you can export the whole session as a Markdown table to paste into Jira, Linear, Notion, or a wiki.

Which browsers are supported?

Recent Chrome, Edge, Firefox, and Safari (15+), on desktop and mobile. If a browser or network blocks the peer-to-peer connection, the tool offers Solo mode instead.

Why peer-to-peer and not a normal server?

Keeping data peer-to-peer is what lets the tool be genuinely private and signup-free. The cost is that rooms are ephemeral — there are no saved rooms or server-side history, because those would require accounts. For most teams, a session that vanishes when you are done is exactly right.

Related Tools