Skip to content

How we measure

Solver Accuracy

Every spot in the library is solved, then measured. That measurement travels with the spot: open a solve in the app to see its own accuracy, not an average or a claim about the library as a whole.

Target
0.3% of pot

Library and custom solves

Spots measured
501,655

The whole solved catalog, spot by spot

Median accuracy
0.27% of pot

Measured by best response

What the number means

Accuracy here is exploitability, and it answers one question: if somebody knew this strategy in advance and played the single best counter to it, how much would they win?

We write it as a share of the pot, because the pot is the natural unit — the same mistake costs the same share whether the blinds are $1 or $100. At 0.3% of pot, a perfect opponent beats the strategy for about 0.3 cents on every dollar in the middle. In a $100 pot, roughly 30 cents a hand.

Two things follow. Lower is better, and zero is the ideal nobody reaches. And the figure is an upper bound on the error, not a typical case: it assumes an opponent who already knows what you will do and never misplays. Real opponents do worse than that, which means the real gap is smaller still.

It is also worth keeping the scale in mind. A gap of 0.3% of pot is far below the cost of any decision a person gets wrong at the table. The residual error in these solutions is not what is costing you money.

How it is measured

Every finished spot is solved with counterfactual-regret minimisation on the real game tree — the actual hands, the actual bet sizes, rake included. The presolved library never uses a neural approximation.

Custom study uses a separate path. Supported flop setups return a neural strategy labeled as an estimate, with the model's measured typical held-out error of 4.2% of the pot. Supported turn and river requests use cached subgame analysis. Unsupported setups fail safely instead of starting a full-flop solve in the background.

When a solve finishes, we run an exact best response against the strategy it produced. That is a full walk of the tree that finds, for every hand and every decision, the most profitable answer to what the strategy actually does. The difference between what the strategy earns and what that perfect counter earns is the exploitability, and it is the number you see.

Nothing about that is sampled or extrapolated. It is not inferred from how many iterations the solve ran or how long it took. Each spot is graded on its own, and its grade is written into its own solution file — which is where both the badge in the app and the chart below read it from. If a spot has no measured number, the app shows no number.

The target, and what happens when a solve misses it

Every library spot and every custom solve is run to 0.3% of pot. The solver keeps iterating and re-measuring until it gets there.

If it cannot get there, the solve fails and reports the miss. It does not quietly ship a looser answer under the same label. That is a deliberate trade: a failed solve is visible and fixable, whereas a solve that silently relaxed its own standard would look exactly like a good one.

The same rule applies to anything shown before a solve has finished. If the app can put something useful in front of you while the exact answer is still running, it says so in as many words and carries its own measured number — an interim answer is labelled an interim answer, never presented as the finished one.

All of that is why the chart below can show the whole distribution. Nothing enters the library without a measured number, so there is no hand-picked subset to show instead.

The measured distribution

Here is every solved spot in the catalog, bucketed by the exploitability measured for it. The worst spot in it sits at 0.30% of pot — no solved spot in the catalog is looser than the target, and the typical one is comfortably inside it.

One note on the count, because it is bigger than the one on the pricing page. 501,655 is the whole measured catalog: every solved spot we hold a best-response number for. A plan’s library is a different count — the spots that plan opens — and Sharkling Splash opens 486,000+ flops. Neither number is an estimate; they simply count different things.

Measured exploitability across the library

Every one of the 501,655 solved spots in the catalog, measured by exact best response. Lower is better.

  • 0.10% or better36,263 spots · 7.2%
  • 0.10% - 0.20%69,909 spots · 13.9%
  • 0.20% - 0.30%395,483 spots · 78.8%
  • Worse than 0.30% (missed the target)0 spots

Median 0.27% of pot · worst spot 0.30% · 501,655 of 501,655 spots at or inside the 0.30% target · measured 2026-08-30.

A further 17 spots produced no usable measurement, so they are not in the chart and carry no number in the app either.

The number on a spot in the app is that spot’s own measurement, taken from this same source. Open any plan and every solve you look at carries its own figure in the header.

Frequently asked questions

What does exploitability as a percentage of the pot mean?

It is how much a perfect opponent—one who knows the strategy in advance and chooses its best counter—would win per hand, expressed as a share of the pot. At 0.3% of pot in a $100 pot, that counter-strategy wins about 30 cents a hand. It is an upper bound; no real opponent can do better.

Is the number measured or estimated?

Measured, for every spot, one spot at a time. After a solve finishes we run an exact best response against the strategy it produced and read the answer off. Nothing is sampled, extrapolated from a subset, or inferred from how long the solve ran. The number is written into the solution file itself, which is where the badge in the app and the chart on this page both read it from.

Does a neural network approximate any of these solves?

Not in the presolved library. Supported custom flop setups return a clearly labeled neural estimate, with typical held-out error of 4.2% of the pot. Supported turn and river requests use cached subgame analysis. Unsupported setups do not start a full-flop fallback solve.

Why is a lower number better?

Exploitability is the distance between a strategy and an unbeatable one. Zero would mean literally nobody could win a chip from it in the long run. A solve is never exactly zero, so the honest question is how close it got — and the smaller the gap, the less any counter-strategy can take from it.

How does that compare to the mistakes I make at the table?

A 0.3%-of-pot gap is far smaller than any decision a human gets wrong. A single misjudged river call or a bet sized one street too small costs whole percentages of the pot, sometimes tens of them. The residual error in these solves is not the thing costing you money.

What happens if a spot cannot reach the target?

The solve fails and says so. It does not round down its own standard and ship a looser answer under the same label, and no spot enters the library without a measured number attached. That is why the chart on this page can show the whole distribution rather than a hand-picked slice of it.