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
AJo50% of the time, giveAJoa 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.
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
AAat the top-left to22at 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:
| Control | What it does |
|---|---|
1.00 0.75 0.50 0.25 | Preset brush weights |
CUSTOM slider | Any 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.
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 2–9, T, J, Q, K, A and suits are c, d, h, s (both are case-insensitive).
| Syntax | Example | Meaning |
|---|---|---|
| Pair class | AA, 22 | All 6 combos of the pair |
| Suited class | AKs | All 4 suited combos (higher rank first) |
| Offsuit class | AKo | All 12 offsuit combos (higher rank first) |
| Exact combo | 8d7h, AsKh | One 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.5 | AKs 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 notes | Ignored to the end of the line |
| Section marker | === at line start | The 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:50andAKs:0.5mean 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.
[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 aChoose 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.
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:
Pot— the pot type: SRP, 3BP, 4BP, or 5BP.Seats— the two seats involved. If you pick the same seat twice, the form warns:Pick two different seats.Range for— which of the two players this range belongs to: theopeneror the3-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 type | Range for | File name |
|---|---|---|
| SRP | Opener | {OPENER}_RFI.txt |
| SRP | Defender | {DEFENDER}_call_vs_{OPENER}_RFI.txt |
| 3BP | Opener | {OPENER}_call_vs_{DEFENDER}_3bet.txt |
| 3BP | Defender | {DEFENDER}_3bet_vs_{OPENER}_RFI.txt |
| 4BP | Opener | {OPENER}_4bet_vs_{DEFENDER}_3bet.txt |
| 4BP | Defender | {DEFENDER}_call_vs_{OPENER}_4bet.txt |
| 5BP | Opener | {OPENER}_call_vs_{DEFENDER}_5bet.txt |
| 5BP | Defender | {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.
Saving and loading plain files
You can also work with single files outside the library structure:
- Save: menu →
Range→Save current to file…. The suggested name isoop_range.txtorip_range.txtdepending on which range is active. - Load: menu →
Range→Load 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.
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.