4 August 2026·11 min read·GTO

What a GTO solver actually tells you

A solve is not a list of correct plays. It is a strategy — frequencies and expected values — computed for a game you specified precisely. Reading it as anything else is how solver study goes wrong.

"GTO" is used loosely enough that it has come to mean something like "correct". It doesn't. Game-theory-optimal has a specific meaning, it comes with specific guarantees, and the guarantees are narrower and more useful than the folklore version.

What the solver is doing

Give a solver a completely defined game: two players, a stack depth, a set of bet sizes each is allowed to use, a rake model, and the ranges each side starts with. The solver then iterates. Both sides repeatedly best-respond to what the other is currently doing, and the strategies converge toward a Nash equilibrium — a pair of strategies where neither player can improve their expected value by unilaterally changing anything.

That equilibrium is what "GTO" means. And the guarantee attached to it is precise:

A GTO strategy cannot be beaten in the long run, by anyone — including an opponent who knows exactly what you are doing.

Note what is not claimed. It does not say a GTO strategy wins the most money. Against a specific flawed opponent, a deliberately exploitative strategy makes more. GTO is the floor, not the ceiling: it is the strategy that stops losing, and the reference you measure a deviation against.

What comes out is a distribution, not a decision

Open a solve and you will not find "raise KJo". You will find something like: KJo raises 62% of the time, folds 38%, with EV 0.31bb for raising and 0.00bb for folding. Every hand in the range gets a probability distribution over the available actions, plus the expected value of each.

This is the single most important thing to internalise. Solver output is a strategy, hand by hand, and a chart that flattens it to raise-or-fold has thrown away the part with the most information in it.

Why hands mix at all

Mixed frequencies are not hedging and they are not noise. They come from indifference. At equilibrium, a hand that takes two actions with nonzero frequency has the same EV for both — that is exactly why the solver is willing to split it. If raising were better, it would raise 100%.

Two consequences follow, and they point in opposite directions:

  • Mixing is what makes the strategy unexploitable. Your opponent needs you to be predictable in order to counter you. The mix is the defence, and it is why the equilibrium exists at all.
  • You lose almost nothing by not mixing. If both actions have the same EV against equilibrium play, picking one and always taking it costs you approximately zero against an equilibrium opponent. It only costs you against an opponent who notices and adapts — which, in most games, is nobody.

The practical read

A hand at 50/50 is telling you it is on the boundary and the decision barely matters. A hand at 96/4 is telling you the answer is "always", with a rounding error attached. Read frequencies as confidence, and simplify accordingly.

A solve answers the question you asked

Every solve is built on an abstraction, and the abstraction is a set of assumptions you chose. Change one and the answer changes.

  • The bet sizes in the tree. A solver can only use the sizings you gave it. Allow only a 2.5x open and the solution is "the best strategy if you must open 2.5x" — not "the best strategy".
  • Rake. Rake takes money out of every pot won, and it hits marginal, small-pot hands hardest. A rake-free solve is systematically looser than any real game justifies. If a solution does not tell you its rake model, you do not know what you are looking at.
  • Stack depth. 100bb and 40bb are different games with different answers, not the same answer scaled.
  • Chips versus money. Cash-game solves maximise chips. In a tournament, chips are not linear in money — a chip you win is worth less than a chip you lose — so a cash solve is simply the wrong tool for a final table. ICM solves exist for exactly this reason and they produce noticeably tighter answers.
  • Two players. Most solves are heads-up between two ranges. Real multiway pots are a much harder problem, and the equilibrium concept itself gets slipperier when there are three or more players.

And "solved" is a matter of degree

Solvers stop when the answer is close enough, and "close enough" has a number: exploitability, sometimes reported as Nash distance — how much a perfect counter-strategy could win against the output. A solution converged to 0.1% of the pot is more trustworthy than one stopped at 2%. It is normal, and fine, for the exact frequencies at the boundary of a range to still be wobbling when the EV difference between the options is a hundredth of a big blind.

Preflop is the part you can most trust

Preflop is where solver output is most reliable, for an unglamorous reason: the game tree is small. No board runouts, one street, a handful of sizings. That makes preflop solutions comparatively cheap to converge tightly and comparatively stable across reasonable assumptions.

It is also where the output is most usable, because preflop is the one place where the spot genuinely repeats. You will be in the cutoff facing a fold, fold, fold thousands of times. Getting that right is worth more than a brilliant river decision you will face twice a year.

The "opening range" you see on a chart is a byproduct of this: it is the set of hands whose raise EV beat folding, in a specific solve, rounded to a picture. That is why position changes the chart so violently — you changed the game, so the answer changed.

What a solver is silent about

  • Your opponent. The solve assumes they play the equilibrium too. If they fold their big blind 70% of the time, the profitable strategy against them is not the one on your screen — it is much wider, and the solver will never tell you that, because you did not ask it.
  • Whether you can execute it. A strategy with fourteen mixed frequencies per node is not a thing a human plays at a table. The version of it you can actually run is a simplification, and the useful question is what that simplification costs.
  • Anything outside the tree. Table talk, timing, a player who is tilting, a limp from a player who never limps. The model has no place to put that information.

EV loss is the right unit for a mistake

The most useful number in a solve is not the strategy, it is the EV of each option. It converts "you deviated" into "you deviated and it cost 0.02bb", and that number is what tells you whether to care.

Most simplifications are cheap. Rounding a 62/38 mix to "always raise" is usually worth a fraction of a big blind per hundred. Folding a hand the solver raises 100% of the time is not cheap. Sorting your leaks by EV loss rather than by how bad they felt is the whole discipline, and it is why a per-hand EV column is worth more than another chart.

How to actually study with it

  1. Look at the shape before the hands. Which categories are in? Where does the boundary sit? The shape is what generalises; the individual cells are memorisation.
  2. Round the mixes. Turn frequencies into a rule you can execute: always, never, or "this one is a coin flip, do whatever". Then check the EV cost of the rounding.
  3. Ask why the boundary is where it is. Every hand at the edge of a range is there for a reason — blockers, domination, playability, fold equity — and the reason is what transfers to a spot you have no solve for. This is the part an AI coach is genuinely good at, because it is explanation, not computation.
  4. Then deviate on purpose. Equilibrium is your starting point. If the blinds are folding too much, widen. Knowing the baseline is what makes the deviation deliberate instead of accidental.

Used this way, a solver is not an oracle handing down correct plays. It is an instrument that answers precise questions precisely — and the skill is entirely in knowing which question you asked.

See the frequencies, not just the colours

GTO preflop solutions with mixed frequencies intact and a per-hand EV column, plus a coach that will explain any cell in the grid.

Open the web app Read the position guide

Keep reading