A BETTER READ ON YOUR GAME
Is my hourly real or luck?
Put a confidence range around your hourly and see what more hours could tell you.
Free web tools · No account · No ads or tracking. Calculations stay in your browser.
Made with GoodRun · An estimate, not a guarantee.
How sure can I be?
A narrower range means less sampling uncertainty. If it crosses zero, winning and losing rates remain compatible with the sample at the selected confidence. A p-value is not the probability you are a winning player.
The formula, in plain sight
Live: hourly ± z × SD/hour / √hours. Online: BB/100 ± z × SD/100 / √(hands/100).
z is 1.645 at 90%, 1.960 at 95%, and 2.576 at 99%. For a positive rate, the lower bound crosses zero after (z × SD/hour / hourly)² hours, or 100 × (z × SD/100 / rate per 100)² hands. Targets round up to the next whole hour or hand and hold the current win rate and SD fixed.
The normal approximation treats SD as known, with independent results and stable stakes, edge and variance. A guessed SD gives a range conditional on that guess. Small samples, correlated sessions, changing games and heavy tails can make it unreliable. Session totals of different lengths are not one-hour observations. This tool does not estimate SD or use a Student-t interval.
A 95% method covers the true mean in 95% of repeated samples under its assumptions; it does not give a 95% probability for this one interval. Rechecking until the interval is positive changes the error rate. The hours or hands target is a planning estimate, not a stopping rule.
Source: NIST: normal confidence interval for a mean with known SD. Volume conversion and the planning target are algebraic rearrangements of this model.
Starting points, with their evidence
There is no universal “normal game” preset. Stack depth, table size, rake, player style and straddles change variance. All values below describe the SD of a 100-hand block, in big blinds. A source’s measured value is not a measurement of your play.
- Live NLHE cash
- ASSUMED: 140; published benchmark range 120–160 BB/100. Not a measured population estimate.
- Live PLO cash
- ASSUMED: 175; published benchmark range 150–200+ BB/100. Deeper play can exceed it.
- Online NLHE 6-max
- ASSUMED: 90; published benchmark range 75–120 BB/100. These three benchmark ranges come from PrimeDope’s variance guide, not an independently audited sample.
- Online GG NL50 6-max
- MEASURED BY SOURCE: 78, with a middle-half range of 71–85 BB/100. Pokalab’s own reported data: regulars with 20,000+ hands, 4–6 players, no ante, after rake. GoodRun has not independently audited those hand records. Do not generalize it to live poker or every online pool.
- Online PLO 6-max
- ASSUMED: 140; 120–160 BB/100 is the modeled range used in SolvePoker’s simulations. Simulated inputs are not measured player SDs.
Single-player live estimates are not presets: one published estimate was revised after regrouping sessions. Neither establishes a population benchmark. Unequal-length session rates need proper normalization; taking their ordinary SD is not a common 100-hand SD estimate.
Sources checked 31 October 2026. Editing a preset changes its label to custom. Personal measurements are preferable; these inputs do not compute SD from raw hand histories.
Live hours ↔ online hands
win rate/hour = win rate/100 × hands per hour / 100
SD/hour = SD/100 × √(hands per hour / 100)
SD scales with the square root of volume; win rate scales directly. At 30 hands/hour, an assumed 140 BB/100 corresponds to about 76.68 BB for a one-hour block. Changing hands/hour estimates volume, not the table’s playing style.
Track this automatically with GoodRun.
Keep sessions, stakes and expenses together, so your next estimate starts with your own history.