ART/GTO
Solving

Ranges

A range is the list of hands a player can hold in a spot, with a weight for each hand. Before you solve, you give ARTGTO one range for each player. The solver then finds the best strategy for every hand in both ranges.

This page covers the Range Editor, hand weights, the text syntax for import and export, and the range library.

What a range is

There are 1326 possible two-card combos in poker. A range gives each combo a weight from 0.0 to 1.0:

  • 1.0 — the player always has this combo here.
  • 0.5 — the player has this combo half the time. For example, if a player calls preflop with AJo 50% of the time, give AJo a weight of 0.50.
  • 0.0 — the combo is never in the range.

Weights matter because the solver counts a 0.5-weight combo as half a combo. Using realistic weights gives you more realistic strategies than all-or-nothing ranges.

The editor shows the size of your range at the top, as a weighted combo count and a percentage of all 1326 combos.

Opening the Range Editor

The Solver screen shows two ranges: Out of position and In position. Open the Range Editor for the range you want to change.

screenshot
Range Editor modal with the 13x13 grid on the left and the Weight Brush, Text, Save to library, and Library cards on the right

If the range was loaded from a file, a Loaded: row shows the file name. Press Escape to close the editor.

The hand grid

The editor shows the standard 13×13 hand matrix:

  • The diagonal holds the pairs, from AA at the top-left to 22 at the bottom-right. Each pair class is 6 combos.
  • Above the diagonal are the suited hands (AKs, AQs, …). Each suited class is 4 combos.
  • Below the diagonal are the offsuit hands (AKo, AQo, …). Each offsuit class is 12 combos.

Each cell shows the class label and its current weight. The cell fills with color as the weight goes up. If only some combos of a class are active (for example, only AsKs out of all AKs combos), a thin accent strip appears at the bottom of the cell. This tells you the cell holds a mixed, combo-level selection that the class weight alone cannot show.

Painting weights

Painting works like a brush:

  • Left mouse button — paint the current brush weight. Click a cell, or hold and drag across several cells.
  • Right mouse button — clear cells back to weight 0. Drag works here too.

The editor reminds you of this: LMB paint · RMB clear · drag to apply.

The Weight Brush card sets what the left button paints:

ControlWhat it does
1.00 0.75 0.50 0.25Preset brush weights
CUSTOM sliderAny weight from 0.00 to 1.00, in steps of 0.01

Three preset buttons give you fast starting points: Clear empties the whole grid, Pairs selects every pocket pair, and Suited selects every suited hand.

Tip
Paint the broad shape of a range with weight 1.00 first, then switch to a lower brush weight for the mixed hands at the edges.

The Text card — import by typing or pasting

The Text card holds a text box that parses as you type. You can paste a range from another tool or type it by hand. The placeholder shows the style it expects: AA, KK, AKs, AKo, 8d7h, JJ+ …

The editor describes what it accepts: Accepts shorthand (AA, KK, AKs:0.5), specific combos (8d7h), PioSOLVER blocks ([10.80]…[/10.80]), and '+' expansions (JJ+, AJs+).

Use Parse to apply the text again and Clear to empty the box. If the text cannot be read, the error appears in red as × {error} and tells you which token failed.

Text syntax reference

Hands are separated by commas, spaces, tabs, or new lines. Ranks are 29, T, J, Q, K, A and suits are c, d, h, s (both are case-insensitive).

SyntaxExampleMeaning
Pair classAA, 22All 6 combos of the pair
Suited classAKsAll 4 suited combos (higher rank first)
Offsuit classAKoAll 12 offsuit combos (higher rank first)
Exact combo8d7h, AsKhOne specific two-card combo
Plus expansion (pairs)JJ+JJ, QQ, KK, AA
Plus expansion (suited)AJs+AJs, AQs, AKs
Plus expansion (offsuit)AJo+AJo, AQo, AKo
Inline weight (fraction)AKs:0.5AKs at weight 0.5
Inline weight (percent)AKs:50%AKs at weight 0.5
PioSOLVER block[50.0]AKs, AQs[/50.0]Every hand inside the block at 50%
Comment# my notesIgnored to the end of the line
Section marker=== at line startThe line is skipped

Rules worth knowing:

  • Inline weights: a value above 1.0 is read as a percentage, a value up to 1.0 is read as a fraction. So AKs:50 and AKs:0.5 mean the same thing.
  • Plus expansions only work on classes. 8d7h+ is not valid.
  • Ranges pasted from GTO Wizard work as-is, including the space after the colon. For example: KcQc: 1,AcAd: 0.5597,5c4c: 0.13505947.
Warning
Inside PioSOLVER brackets the number is always a percentage, even when it is small. [0.5]KK[/0.5] means 0.5% (weight 0.005), not 50%. If you want half weight, write [50]KK[/50] or use KK:0.5.

Replace or merge

When importing, you choose how the new text combines with the current range:

  • Replace — the text becomes the whole range.
  • Merge — the text is added on top. If a combo appears in both, the higher weight wins.

Exporting a range

Export range turns the current range back into text — the editor describes it as Range as text. Copy and paste anywhere. Use Copy to clipboard to grab it and Close to dismiss the window.

The export groups hands by weight, highest weight first:

  • Full-weight hands appear plain: AA, KK, AKs, …
  • Partial weights use PioSOLVER brackets: [50.25]AQs, AJs, 8d7h[/50.25]
  • If a whole class shares one weight, you get the class label. If the combos inside a class differ, you get the individual combos.

Weights are rounded to 4 decimal places in the export. The format is readable by ARTGTO itself and by other tools that accept PioSOLVER-style text.

The range library

The Library card connects the editor to a folder of range files on disk, so you can build a reusable collection instead of repainting ranges every session.

  • If no folder is set yet, the card shows (no folder set) and a Choose folder… button.
  • Once set, the card shows the path with a Change… button, and a scrollable tree of the files inside.
  • The file you currently have loaded is marked with a .

The library folder is organized by seat: each seat gets a subfolder (for example bu, sb) holding that player's range files as .txt text in the syntax above.

screenshot
Library card showing the folder tree with a loaded file marked by a checkmark

Saving to the library

The Save to library card (also reachable from the Save to library… button in the editor footer) names and files the range for you, so your library stays consistent.

Fill in three things:

  1. Pot — the pot type: SRP, 3BP, 4BP, or 5BP.
  2. Seats — the two seats involved. If you pick the same seat twice, the form warns: Pick two different seats.
  3. Range for — which of the two players this range belongs to: the opener or the 3-better.

The form then shows a plain sentence describing the range and a preview of the file path, so you can check it before saving. Press Save to library and a status message confirms the result.

The opener is the player who acts earlier preflop (order: UTG → MP → CO → BU → SB → BB). The file lands in the seat folder of the player the range is for, with a standard name:

Pot typeRange forFile name
SRPOpener{OPENER}_RFI.txt
SRPDefender{DEFENDER}_call_vs_{OPENER}_RFI.txt
3BPOpener{OPENER}_call_vs_{DEFENDER}_3bet.txt
3BPDefender{DEFENDER}_3bet_vs_{OPENER}_RFI.txt
4BPOpener{OPENER}_4bet_vs_{DEFENDER}_3bet.txt
4BPDefender{DEFENDER}_call_vs_{OPENER}_4bet.txt
5BPOpener{OPENER}_call_vs_{DEFENDER}_5bet.txt
5BPDefender{DEFENDER}_5bet_vs_{OPENER}_4bet.txt

Example: the Button's 4-bet range against a Small Blind 3-bet is saved as …\ranges\bu\BU_4bet_vs_SB_3bet.txt.

Note
The library folder is set per installation and is remembered between sessions. The same library also feeds the range pickers used elsewhere in the app, including Multi Job.

Saving and loading plain files

You can also work with single files outside the library structure:

  • Save: menu → RangeSave current to file…. The suggested name is oop_range.txt or ip_range.txt depending on which range is active.
  • Load: menu → RangeLoad from file…. If the file cannot be parsed, the import box opens with the file content and the error message so you can fix it by hand.

Apply or cancel

The editor footer has two exits:

  • Apply — closes the editor and keeps your changes.
  • Cancel — closes the editor and discards them.
Warning
A solve needs both ranges to contain at least one combo. If a range is empty, the solve stops with the message range is empty — paint some combos first. for that player.

Next step: set up the betting tree in Bet sizing, then start the solve in Running a solve.