Exact equity,
not an estimate.

A native Mac workbench for Hold'em ranges, board texture and the equity behind them. No account, no network.

The Axis Ranges workspace on macOS: two player ranges in the left rail, a 13x13 hand grid in the centre carrying per-hand equity, and equity distribution, hand classes and combo tables in the right column.

What is in it.

  • RangesA weighted 13x13 grid, equity heat, hand classes, every combination
  • Building a rangeNotation, top-percent orderings, position models, saved starting points
  • BoardFour-colour picker, per-seat equity, distributions across the field
  • The detail columnTexture, Curve, Deck and Buckets, side by side with the board
  • RunoutsEvery turn and river, grouped and scored against the flop
  • FlopsA sweep over all 1,755 canonical flops, filtered by texture
  • MethodExact enumeration where it fits, seeded simulation where it does not
  • Pot oddsA breakeven number the heat ramp centres on
  • Scenarios and exportNamed spots, TSV out, keyboard for the whole thing
  • Quick equityA small window for a single number
  • SettingsDensity, precision, colour pairs, colour-blind safe palettes
  • The honest partWhat it does not do, and what it never sends

Ranges

The workspace you will spend the most time in. Every player in the hand gets a range, and every range gets read against the same board at the same time.

The Axis Ranges workspace: two player ranges in the left rail, a painted 13x13 grid in the centre, and equity distribution, hand classes and combo tables in the right column.
The configuration rail in Axis showing Player 1 and Player 2, each with a range string, a combination count and a weight brush, above the board, pot and sample-budget sections.
The rail holds every player. Each one shows the range as written, how many combinations that is, and how many are still live once the board and the other players' cards are removed.
The 13x13 hand grid in Axis with a range painted across pairs, suited aces and suited connectors.
The grid is the range. Drag across it to paint, set a partial weight with the slider, and the range string rewrites itself as you go.
Hand classes table in Axis listing overpair, high card, middle pair, top pair and flush with each class's share of the range and its equity, and the classes the range never makes at zero.
Hand classes split the range into fifteen made hands and seven draws, each with its share of the range and the equity it actually holds. Keep or drop a class to see the rest move.
Combos table in Axis listing individual hands with weight, equity and delta against the range average.
Every combination is listed with its weight, its equity, and how far above or below the range average it sits. Filter it when the list is long.

Heat, not guesswork

Switch the grid from weight to equity and every cell is coloured by how the hand actually performs on this board, on a continuous ramp rather than in buckets. The ramp centres on your breakeven number, so the colour boundary is the decision boundary.

Two ramps ship, red to green and amber to blue, because the first one is unreadable for a good share of players.

The heat control in Axis, showing a colour ramp legend, a 16.7 percent spread of plus or minus 0.5, and an Equity selector.

Building a range

Type it, paint it, or start from something and edit. All three end in the same place.

  • JJ+, AQs+, A5s-A2s, KQoStandard notation, parsed as you type.
  • 50%(QQ+)Half the combinations, carried through the maths rather than rounded away.
  • AhKsOne exact holding, when that is the question.
  • 55-22, AhKsSubtract combination by combination from whatever you have built.
The Top percent popover header in Axis offering All-in equity, Sklansky-Malmuth and Chen score orderings.
Top percent writes a canonical range for you, ordered three different ways. All-in equity is exact equity against a random hand; the other two are the published heuristics.
Position presets in Axis: under the gun open at top 15 percent, hijack 19 percent, cut-off 26 percent, button 45 percent, small blind 38 percent, big blind defend 40 percent, all by Chen score.
Position presets get you to a plausible opening range in one click. The app labels them a model rather than a solver output, because that is what they are.
The saved ranges popover in Axis with built-in starting points: Any Pair, Broadway, Connectors, One-Gap, Two-Gap, Ax, Kx, Qx and Suited Aces.
Saved ranges keep the ones you build. Nine built-in starting points sit alongside them, marked as starting points rather than as anybody's recommendation.

Board

Deal a flop, turn or river and read what it did to everyone at once.

The Axis Board workspace showing two players' equity distributions, a texture reading and a runout report for the flop.
The board picker in Axis: a four-colour deck with Board and Dead tabs, a Deal menu and a Clear button.
The picker is a whole deck, four-coloured if you want it. The same panel sets dead cards. Arrow keys move, space selects, and the Deal menu fills the flop, the next street, or straight through to the river.
The board in Axis showing the nine, eight and two of hearts, tagged monotone, wet and dynamic.
The board reads itself. Every window carries the same three-word summary of what you are playing on, so you never have to work it out twice.
Equity distribution histograms in Axis, one row per player, showing how each range's combinations spread across the equity axis.
Equity distribution gives every seat its own row, so you can see the shape of a range rather than just its average. Two ranges with the same equity can look nothing alike here, and that difference is usually the whole story.

The detail column

Four readings of the same spot, in the column beside the board. One is showing at a time, and the ranges never move underneath you.

The Texture tab in Axis: wetness 10 out of 100, taxonomy tags, suit and draw structure, and the share of remaining holdings that make each hand.
Texture. Wetness on a hundred-point scale with thresholds you can move, the taxonomy in plain words, how many flush and straight draws exist, and the share of every remaining holding that makes each hand.
The Curve tab in Axis showing weighted cumulative equity curves for four players with distribution diagnostics beneath.
Curve. The weighted cumulative range for every player on one chart, with the breakeven line drawn across it. Underneath: median, top-decile mean, the share above ninety percent, and how far ahead the range is.
The Deck tab in Axis: 49 turn cards with per-card equity, best and worst cards called out, filtered to the ones that help.
Deck. Every card left in the deck, each carrying the equity it would leave you with. Filter to the ones that help or the ones that hurt, hover for the combinations behind a number, click to deal it.
The Buckets tab in Axis: a donut per player and a table of equity buckets with each player's share, plus the combinations inside the selected bucket.
Buckets. How often a range holds a given band of equity, per runout or per combination, with cutoffs you set. Open a bucket to see the hands in it, then copy them back out as a weighted range.

Runouts

Every turn and river card, scored against the equity you already have and sorted by how much it moves it. Cards are grouped by what they actually did: a straight completing, a flush completing, the board pairing, a brick, an overcard.

Each row carries the number of cards in it, how much of the deck that is by weight, and the best and worst case inside the group, so a category with a flattering average cannot hide a disaster in it.

Run it one street or two. Two streets averages every river behind every turn, which costs seconds rather than milliseconds and says so before you start.

Runout categories table in Axis listing overcard, board pairs, four-flush board, straight completes and straight draw arrives, each with its effect on equity.

Flops

One board is an anecdote. This runs the same two ranges over every flop that exists.

The Axis Flops workspace: a sweep across all 1,755 canonical flops grouped by suit category, with best and worst flops listed in the detail column.
Flop sweep results in Axis: monotone, two-tone and rainbow categories with their flop counts, share of flops and mean equity against the all-flops mean.
There are 1,755 canonical flops once suit relabelling is collapsed. The sweep runs all of them and reports each category's mean against the overall mean, with the gap drawn to scale.
The flops list in Axis showing the best and worst flops for the range with their equities, and every flop ranked beneath.
Best and worst are named outright, and every flop underneath is ranked. Pick one and set it as the board to carry on working in the other two workspaces.
The flop filter in Axis with facets for suit, pairing, connectivity, high card, middle card, low card, wetness and dynamism.
Filter the sweep down to the flops you care about: suit and pairing, how connected it is, which ranks are on it, how wet, how dynamic. Group the result by any of the same facets.

Where the maths can be done exactly, it is done exactly.

On a flop, Axis enumerates every villain combination against every possible runout. That is well over a million matchups, and it comes back in under a second, labelled Exact. Preflop, where exhaustive enumeration would run for hours, it falls back to simulation and tells you so, with the trial count on screen. You always know which kind of answer you are looking at.

Sampled runs are seeded, so the same question gives the same number every time. No more watching the last decimal wobble while you try to compare two lines.

Postflop
Exact enumeration
Flop, turn and river. No sampling.
Preflop
Seeded simulation
Same input, same number, every time.
Sample size
20k to 2M
Your choice, per run, shown with the result.
Flop sweeps
1,755 flops
Every canonical flop, grouped by texture.
Table size
2 to 6 players
Each seat weighted independently.
Cancellation
Cooperative
Stop a long run and it drops the partial work.

The number you have to beat.

Give it the pot and what the call costs, and Axis works out the equity you need. That breakeven is not just printed somewhere: it becomes the centre of the heat ramp, so the colour a hand takes in the grid is telling you whether it calls, not just how it ranks.

Set it by hand instead if the spot is not a simple call.

Getting work out of it, and back in.

Scenarios

Save a spot under a name: ranges, board, dead cards and settings together. Open it later, or replace it when your read changes. The app reopens whatever you had last time.

Export

Copy any report as tab-separated rows and paste it straight into a spreadsheet. Copy a scenario as plain text. Copy a bucket of combinations back out as a weighted range string.

Keyboard

Deal a flop, deal the next street, run to the river, jump focus to the board or to either range, paste a range, run the flop sweep, collapse either side column. The shortcut list is a window in the app.

One number, when that is all you want.

Not every question needs the workbench. The quick equity window takes a board and up to six hands or ranges, gives you the split, and gets out of the way.

It shares the same engine as everything else, so the answer matches the one the full window would have given you, down to the last decimal.

The Axis quick equity window: a board of 9h 8h 2h and two player ranges, each with its equity and win, tie and lose split.

Set up the way you read.

The app has a settings window rather than opinions. The ones that change how numbers land:

Numbers

Equity to nought, one or two decimals. Monospace in tables so columns line up, or proportional if you prefer. Deltas framed against the category or against the board.

Density

Panel spacing and overall density, plus a text size that runs through the whole interface rather than just the body copy. Either side column collapses.

Colour

Three validated player-colour pairs: classic blue and amber, a colour-blind safe pair, and a high-contrast pair. Two heat ramps for the same reason. Four-colour deck on or off.

Dark and light, both finished.

Axis follows the system appearance. Neither mode is the afterthought, and the data colours were checked for contrast in both.

The Axis Board workspace in dark appearance.
Dark
The same Axis Board workspace in light appearance.
Light
Axis running on a laptop, showing the Ranges workspace with a painted hand grid and the equity readout.

The honest part.

What it will not do

Axis is an equity and range calculator. It is not a solver: it will not hand you a GTO strategy or betting frequencies, it does not compute ICM or tournament equity, and it does not connect to a tracker or a HUD. It answers “how often does this win?” precisely, and leaves the rest to you.

What it never sends

There is no network code in Axis at all. No account, no sign-in, no sync, no analytics, no crash reporter. Nothing you type can be sent anywhere, because nothing in the app can send it.

What it costs

Buy it once. No subscription, no in-app purchase, and no tier held back for later. One native bundle, no launcher and no runtime to install.

What it runs on

macOS 14 or later, on Apple silicon or Intel. Real menus, real undo, and a window that behaves like every other window on your Mac.

Stop estimating.

Coming to the Mac App Store.
macOS 14 or later · Apple silicon and Intel · one-time purchase

Questions about it