The data behind this site

The odds, equities and frequencies quoted across PokerPro are not copied from anywhere. Each one comes from a data file in this repository, and each data file comes from a generator script beside it. This page covers the 8 of those files that are original measurements of the game: what each one measures, how it was measured, how big the run was, and — where the figures are sampled rather than counted — the seed and the margin of error. A further 1 is used on the site but is not yet checkable from the file, and is listed further down with the reason.

The counts on this page are read from the data files when the page renders, so they cannot drift from the data they describe.

8
Datasets
1 more not ready to cite
113,021,037
Exact deals dealt and scored
not sampled; 98,000 of them enumerated twice
5
Sampled datasets
3 of them reproduce from a seed
±0.31pp
Widest margin of error
narrowest ±0.05pp, both at 95%

Exact and sampled are not the same thing

Exact enumeration — 3 datasets

Every case that can happen was dealt and scored, so the answer is a count. There is no margin of error and no seed to quote, and a difference in the last published decimal is a real difference. Counting the exact halves of the mixed collections wherever their modules record a size, 113,021,037 deals were dealt and scored this way. That is deals dealt rather than distinct deals: 98,000 of them come from a second, independent enumeration of hands the per-hand table already covers, which is a check on the first run rather than new ground. And 1 of the 2 mixed collections answers its exact questions by combinatorics rather than by dealing and records no enumeration size, so nothing is counted for it.

Monte Carlo — 3 datasets

The space is too large to enumerate, so a large random sample stands in for it. Every such figure is an estimate with a range around it. The widest 95% margin anywhere on this page is 0.31 percentage points, and two sampled figures closer together than their own margin cannot be ranked from this data — each dataset below says exactly what its margin does not let us claim.

2 further datasets answer some questions by counting and others by simulating. Those state the method figure by figure, because the two halves deserve different amounts of trust.

Exact — counted, not estimated

Every case was dealt and scored. There is no sampling error in these figures and no seed to quote: rerun the generator and the digits come back the same.

Hand-versus-hand preflop matchups

exact enumeration

All-in preflop equity, and the split between outright wins, chops and losses, for named starting-hand duels — broken out by exact suit layout as well as across all combinations.

How it was measured

No sampling at all. Combination pairs are grouped into suit-isomorphism classes, because relabelling the suits of a whole deal cannot change the result, and for one representative of each class every possible five-card board is dealt and both hands scored with the evaluator behind the odds calculator. Win, tie and loss counts are exact integers, and equity is the win percentage plus half the tie percentage. Figures across all suits are each class weighted by its combination count.

Scale

Duel pages
13
Suit variants published
24
Suit configurations enumerated
64
Boards per configuration
1,712,304
Exact board evaluations behind the rows
109,587,456
Exact. Every case was dealt and counted, so there is no sampling error, no trial count and no seed. Rerunning the generator returns the same digits.

Precision

Stored to 2 decimal places. Exact figures, so the only rounding is for display. Two numbers that differ in the last place really do differ.

Where it stops being true

  • ·These are all-in preflop numbers. They say nothing about how a hand plays when there is still betting to come.
  • ·The board count is a floor, not a total. One page covers ace-king against every pocket pair, and its 13 rows come from 26 further enumerations of the same kind — the suited hand and the offsuit hand against each pair, weighted by combination count for the combined column. The data file keeps the finished rows and not the suit configurations behind them, so those boards are not in the figure above.

Variables measured

Pot equityOutright win frequencyChop frequencyCombination counts

Where it lives

  • Data: app/lib/matchup-data.js
  • Generator: scripts/generate-matchup-data.mjs
  • Recorded generation date: 2026-07-27

Flop odds for every starting hand

exact enumeration

For all 169 starting hands, how often the flop brings a pair, top pair, two pair, a set, an overpair, a flush, a flush draw, a straight, an open-ender, a gutshot — or nothing at all.

How it was measured

Every flop that can follow each hand is dealt and classified: the three cards come from the fifty the deck has left, and all of those combinations are covered. The result is a count rather than an estimate, so there is no margin of error and no seed.

Scale

Starting hands
169
Pocket pairs
13
Suited hands
78
Offsuit hands
78
Flops per hand
19,600
Flop classifications
3,312,400
Published figures
1,443
Exact. Every case was dealt and counted, so there is no sampling error, no trial count and no seed. Rerunning the generator returns the same digits.

Precision

Stored to 2 decimal places. Exact percentages rounded for display. A difference in the last decimal is real.

Where it stops being true

  • ·The categories are defined by the generator and overlap on purpose: a flopped flush counts inside pair-or-better as well, because it beats a pair.
  • ·These are flop frequencies only. Nothing here says how often the hand goes on to win.

Variables measured

Pair or betterTop pair or betterTwo pair or betterSet or betterOverpairFlushFlush drawStraightOpen-ended drawGutshotComplete miss

Where it lives

  • Data: app/lib/hand-flop-odds.js
  • Generator: scripts/generate-hand-flop-odds.mjs
  • The data file records no generation date.

Use it on the site

Flop facts for the hands people ask about

exact enumeration

The same exhaustive flop enumeration, cut the way players actually ask the question, for one hand from each family: a pocket pair, ace-king suited and offsuit, a suited connector and an offsuit broadway.

How it was measured

Every possible flop is dealt for each named hand and classified with the site's evaluator. This run is independent of the per-hand table above and agrees with it wherever the two share a definition, which is one of the checks the test suite makes.

Scale

Named hands
5
Flops per hand
19,600
Flop classifications
98,000
Published figures
22
Exact. Every case was dealt and counted, so there is no sampling error, no trial count and no seed. Rerunning the generator returns the same digits.

Precision

Stored to 2 decimal places. Exact percentages rounded for display.

Where it stops being true

  • ·One hand stands in for its family. The suited connector is measured as T9s, and lower connectors make slightly fewer straights.

Variables measured

Pair or betterAce or king on the flopFlushFlush drawOpen-ended draw or betterGutshotMade straight or flush

Where it lives

  • Data: app/tools/odds-chart/flop-facts.js
  • Generator: scripts/generate-flop-facts.mjs
  • The data file records no generation date.

Use it on the site

Part exact, part sampled

These collections answer some questions by counting and others by simulating, and each figure says which. The two halves deserve different amounts of trust.

Cooler and rare-event odds

exact enumeration and Monte Carlo

How often the coolers players argue about actually happen — set over set, flush over flush, aces against kings, quads over quads and others — per hand, per 100 hands, and at both six-max and full-ring tables.

How it was measured

Each scenario records its own method, and those methods do not split the collection cleanly in two: 8 scenarios are counting problems solved by combinatorics throughout, 3 are simulated throughout, and 4 count the conditional figure exactly and simulate the table figures beside it. Simulation uses the site's seven-card evaluator, and the trial count for each pass is recorded in the module and shown below. The module does not record which pass produced which figure.

Scale

Scenarios
15
Counted exactly throughout
8
Part counted, part simulated
4
Simulated throughout
3
Published probabilities
35

Sampled — read it with the margin, not the digits

Simulation passTrials95% margin
Flop coolers somewhere at the table4,000,000±0.05pp
Straight flush by the river3,000,000±0.06pp
Aces all-in preflop equity3,000,000±0.06pp
Aces against kings at the table4,000,000±0.05pp
  • Seed: none recorded The simulation passes were not seeded, so rerunning the generator reproduces the figures to within the margin below rather than digit for digit.
  • Widest margin in this dataset: ±0.06 percentage points.
  • What the margin does not let us rank: Two simulated probabilities closer together than this margin cannot be ranked from this data. The margin is the worst case over any probability, so on a rare figure it is far wider than that figure's own uncertainty. The figures counted by combinatorics carry no such caveat, and 4 scenarios publish both kinds side by side, each labelled in the scenario's own method note.

Precision

Stored to 4 significant figures. Probabilities are stored to at most this many significant figures, which most of the simulated ones do not support. The module does not record which pass produced which figure, so the smallest pass, 3,000,000 trials, is assumed throughout: at the frequencies observed, the 95% margin runs from 0.04% of the figure on the most common scenario to 17% on the rarest, which supports 1 significant figure on the rarest and 4 on the most common, against the 4 stored throughout. Read a simulated one-in-N figure as rounded rather than counted. The figures solved by combinatorics are exact as stored.

Where it stops being true

  • ·Table figures for multi-player flop coolers assume every player dealt a qualifying hand goes on to see the flop. Real tables fold, so the rate at your table is lower.
  • ·A per-hand probability is not a prediction about your session. A hundred hands is a very small sample of a one-in-a-few-thousand event.

Variables measured

Per-hand probabilityOne-in-N frequencyExpected occurrences per 100 deals

Where it lives

  • Data: app/lib/cooler-odds-data.js
  • Generator: scripts/generate-cooler-odds.mjs
  • Recorded generation date: 2026-07-12

Use it on the site

Figures behind the rigged-poker claims

exact enumeration and Monte Carlo

The claims players make when they say online poker is rigged, each turned into a number: how often a flopped flush draw gets there, what flop textures actually look like, how often the hand ahead on the flop loses, and how often two big hands collide.

How it was measured

The flop-texture and flush-completion figures are exhaustive enumerations, so they are exact. The suckout, made-hand and cooler figures come from simulation through a seeded generator, which makes them reproducible digit for digit by rerunning the script.

Scale

Flops enumerated
22,100
Turn-and-river runouts enumerated
1,081
Made-hand categories measured
9
Simulated deals counted
1,297,288

Sampled — read it with the margin, not the digits

Simulation passTrials95% margin
Flop leader beaten by the river397,288±0.16pp
Best five cards from seven, by category400,000±0.16pp
Two players both flopping a big hand500,000±0.14pp
  • Seed: 20260821 The generator draws every card from one mulberry32 stream seeded with this value, so the simulated figures reproduce exactly and not merely statistically.
  • Widest margin in this dataset: ±0.16 percentage points.
  • What the margin does not let us rank: Any two simulated percentages within this margin of each other are indistinguishable here. The flop-texture percentages are exact and can be compared freely.

Precision

Stored to 2 decimal places. The module stores the simulated percentages to this many decimals, which is more than the sample supports: a margin of 0.16 points spans 16 steps of the last stored decimal and 2 steps of the first, so not even the first decimal is fixed. Read a simulated percentage to the margin. The exact flop-texture percentages, stored to 1 decimal place, carry no such caveat.

Where it stops being true

  • ·These figures describe a fair deck. That is evidence about what you should expect to see, not an audit of any operator's shuffle.
  • ·The suckout figure counts only deals where one hand was clearly ahead on the flop, so it is conditional on that and is not a rate across all hands.

Exported but not measured here

  • HANDS_PER_HOUR The hands-per-hour rates for live and online play are the usual published conventions, not something this site measured. They are exported so pages can turn rates into sessions. Treat them as a stated assumption.

Variables measured

Flop texture frequencyDraw completion frequencySuckout frequencyMade-hand category frequency

Where it lives

  • Data: app/lib/rigged-data.js
  • Generator: scripts/generate-rigged-data.mjs
  • The data file records no generation date.

Sampled — every figure carries a margin

These come from simulation. Each has a 95% margin of error derived from its trial count, and differences smaller than that margin are not differences.

Downswing and breakeven-stretch simulation

Monte Carlo

How deep a downswing to expect over a long stretch of hands at a given win rate: the chance of ever dropping a given number of buy-ins, the worst drop a career sees, the longest run without a new high, and the chance of still being down after 10,000, 50,000 and 100,000 hands.

How it was measured

Careers are simulated hand by hand, each hand drawn from a normal distribution with the stated win rate and standard deviation — the same per-hand model as the variance simulator. Downswings are peak-to-trough equity drops measured at single-hand resolution, and a buy-in is 100 big blinds. The generator is deterministic, so the whole run reproduces from its seed.

Scale

Win rates covered (bb/100)
7
Careers per win rate
100,000
Hands per career
100,000
Careers simulated
700,000
Hands simulated
70,000,000,000
Downswing thresholds (buy-ins)
5

Sampled — read it with the margin, not the digits

Simulation passTrials95% margin
Careers per win rate100,000±0.31pp
  • Seed: pokerpro-downswing-v1 A deterministic sfc32 generator is seeded from this string, so the whole run reproduces exactly.
  • Widest margin in this dataset: ±0.31 percentage points.
  • What the margin does not let us rank: The margin applies to the probability columns, which are proportions of careers. It does not apply to the median, mean and 95th-percentile columns, which are not proportions; no margin is published for those, so read small gaps between neighbouring win rates there as noise.

Precision

Stored to 2 decimal places. The probability columns are stored to this many decimals, which the sample does not support: a margin of 0.31 points spans 31 steps of the last stored decimal and 3 steps of the first. Trust a stored probability to the margin, not to the digits shown. Hand counts are whole numbers.

Where it stops being true

  • ·Every hand is an independent draw from a normal distribution. Real results are not: tilt, table selection, stake changes and shot-taking all break that assumption, and a real downswing is usually part variance and part leak.
  • ·One standard deviation is used throughout. If yours is higher, as it tends to be in loose games, your downswings are deeper than these figures.
  • ·A breakeven stretch still running when a career ends is counted as it stands, so the published lengths are a little short of the truth.

Variables measured

Probability of a downswing of N buy-insWorst downswing per careerLongest breakeven stretchProbability of being down after N hands

Where it lives

  • Data: app/lib/downswing-data.js
  • Generator: scripts/generate-downswing-data.mjs
  • Recorded generation date: 2026-07-21

Omaha variant example matchups

Monte Carlo

What familiar holdings are worth in five-card PLO, six-card PLO, Big O and Omaha Hi-Lo — aces against kings, bad aces against a rundown, big pairs against a wrap — with the high and low shares separated in the split-pot games.

How it was measured

Each matchup is dealt from preflop with the site's Omaha evaluator, using exactly two hole cards and three board cards as the rules require. In the split-pot games equity is the high share plus the low share, and the scoop rate and the rate at which a low qualifies at all are recorded separately.

Scale

Example matchups
9
Game types covered
4
Runouts per matchup
200,000
Runouts in total
1,800,000

Sampled — read it with the margin, not the digits

Simulation passTrials95% margin
5-card PLO (3)200,000±0.22pp
6-card PLO (2)200,000±0.22pp
Big O (3)200,000±0.22pp
Omaha Hi-Lo (1)200,000±0.22pp
  • Seed: none recorded These runs were not seeded, so rerunning the generator reproduces each figure to within the margin below rather than digit for digit.
  • Widest margin in this dataset: ±0.22 percentage points.
  • What the margin does not let us rank: Equities this close together cannot be ordered from this data. Where a matchup is near even, read it as near even rather than as a favourite.

Precision

Stored to 1 decimal place. Stored to this many decimals, which is finer than the margin of 0.22 points allows: the margin spans 2 steps of the last stored decimal. A further decimal would be pure noise.

Where it stops being true

  • ·These are illustrative matchups chosen to make a point about each game, not a survey of the game. They show how much thinner the edges get as the hands grow; they do not say how often each holding comes up.
  • ·All-in preflop only, with no betting to come.

Variables measured

Pot equityHigh shareLow shareScoop rateFrequency a low qualifies

Where it lives

  • Data: app/lib/omaha-variant-data.js
  • Generator: scripts/generate-omaha-variant-data.mjs
  • The data file records no generation date.

PLO starting-hand class equities

Monte Carlo

What each kind of Omaha starting hand is worth all-in preflop against a random hand of the same size — aces with side cards, double-suited rundowns, two big pairs and the rest — in four, five and six-card Omaha, with the chop rate separated out.

How it was measured

A class is a description rather than a single hand, so each trial draws a fresh holding matching the description and a fresh random opponent hand of the same size, deals the full board and scores both with the site's Omaha evaluator. Every class has its own seeded stream derived from the master seed, so a class can be rerun on its own and still reproduce.

Scale

Hand classes
41
Variants covered
3
Runouts per class
400,000
Runouts in total
16,400,000

Sampled — read it with the margin, not the digits

Simulation passTrials95% margin
4-card PLO (15 classes)400,000±0.15pp
5-card PLO (13 classes)400,000±0.15pp
6-card PLO (13 classes)400,000±0.15pp
  • Seed: 20260917 Each class seeds its own generator from a hash of the master seed, the card count and the class key, so no class depends on the order the others ran in.
  • Widest margin in this dataset: ±0.2 percentage points, and ±0.3 points on the difference between two figures.
  • What the margin does not let us rank: Two classes whose equities differ by less than the difference margin cannot be ranked from this data. The published order ranks the estimates, and is not proof of the underlying order.

Precision

Stored to 1 decimal place. Stored to this many decimals, because the recorded margin of 0.2 points spans 2 steps of the last one. The data file records the same decimal count for the same reason, and the largest margin it stores for any single class is 0.15 points. The recorded margin is wider than the worst case this page derives elsewhere from the same 400,000 trials, 0.16 points, because a class draws a fresh holding for every trial as well as a fresh board; the wider figure is the one published.

Where it stops being true

  • ·Equity against one random hand measures raw strength, not how a class plays. Position, the number of players and playability matter more in Omaha than the raw figure suggests.
  • ·Side cards inside a class are drawn at random within the class definition, so a figure describes the average member of the class rather than its best or worst member.

Variables measured

Pot equity against a random handChop ratePer-class margin of error

Where it lives

  • Data: app/lib/plo-starting-hands.js
  • Generator: scripts/generate-plo-starting-hands.mjs
  • The data file records no generation date.

Use it on the site

Original data we are not asking anyone to cite yet

One further dataset is used on the site but cannot be checked from the file, because the file does not record its own sample size. Rather than quote a trial count this page cannot verify, it is listed here with the reason.

Preflop equity against one, three and five random hands

Monte Carlo

Pot equity for all 169 starting hands against one, three and five random opponents, all-in preflop.

Starting hands
169
Opponent counts
3
Published figures
507

Why it is not here as a measurement: The module does not export its trial count or its margin of error. Both are stated only in a comment at the top of the file and in the generator script, so nothing importable can confirm them, and this page will not quote a sample size or a margin it cannot check. The figures are used on the site and are fine for a rough read. They are not ready to be cited as measurements.

What would fix it: Have the generator write a methodology object beside the data, as the matchup, cooler and downswing generators already do, then regenerate.

Data: app/lib/preflop-equity-data.js · Generator: scripts/generate-preflop-equity.mjs · Starting-hand hub

How to cite these figures

Quote any of these figures with attribution — a link back to the page a figure came from is enough. If you quote a sampled figure, please quote its margin with it: a number from this page without its margin is a number we did not publish. And if you can show a figure here is wrong, tell us and we will correct it and say that we did.

One dataset carries a formal licence: the downswing CSV has shipped under CC BY 4.0 in its header since it was published. The rest are published without one, which is a deliberate gap rather than an oversight: attribution is what we are asking for.

PokerPro, "Hand-versus-hand preflop matchups" (exact enumeration, 109,587,456 exact board evaluations). https://pokerpro.tools/data#preflop-matchups. Computed 2026-07-27.
PokerPro, "Cooler and rare-event odds" (exact enumeration and Monte Carlo, 35 published probabilities). https://pokerpro.tools/data#cooler-odds. Computed 2026-07-12.
PokerPro, "Figures behind the rigged-poker claims" (exact enumeration and Monte Carlo, 22,100 flops enumerated exactly). https://pokerpro.tools/data#rigged-claims.
PokerPro, "Flop odds for every starting hand" (exact enumeration, 3,312,400 flops classified). https://pokerpro.tools/data#hand-flop-odds.
PokerPro, "Flop facts for the hands people ask about" (exact enumeration, 98,000 flops classified). https://pokerpro.tools/data#flop-facts.
PokerPro, "Downswing and breakeven-stretch simulation" (Monte Carlo, 70,000,000,000 hands simulated). https://pokerpro.tools/data#downswing-simulation. Computed 2026-07-21.
PokerPro, "Omaha variant example matchups" (Monte Carlo, 1,800,000 runouts simulated). https://pokerpro.tools/data#omaha-variant-matchups.
PokerPro, "PLO starting-hand class equities" (Monte Carlo, 16,400,000 runouts simulated). https://pokerpro.tools/data#plo-starting-hands.

Checking a figure

Each dataset above names the file the figures live in and the generator that produced them. Those scripts are in our repository rather than published, so the practical route for an outside reader is the method statement: each one says what was dealt, how many times and with what seed, which is enough to re-derive the figure independently. Ask for a script and we will send it. When we rerun them ourselves, the 3 seeded runs come back digit for digit, and the 2 unseeded ones come back within the margins shown above, which is the strongest claim an unseeded simulation can make.

If something here is wrong

Tell us and we will correct it. Every figure on this page is reproducible from a script in the repository, so a disagreement can be settled rather than argued: point at the figure and say what you get instead. A correction that changes a published number will be recorded in the changelog. The fastest routes are the feedback form or hello@pokerpro.tools.

What this page is not

It is a small site publishing its own working. The exact enumerations are as good as the evaluator behind them, which is the same evaluator the calculators use and is checked against published figures in the test suite. The simulations are honest samples of a fair deck, which is a statement about the game and not an audit of any poker room. Nothing here is peer reviewed, and we make no claim about who has used it.