← Back to calculatorRange Syntax
A range is a structural condition on a hand. The calculator expands it to every matching holding (dead cards removed), then enumerates or samples that space.
Combo counts shown are for PLO4 on an empty board.
CARD FORMAT
Ranks 2 3 4 5 6 7 8 9 T J Q K A
Suits s♠ h♥ d♦ c♣
Exact hand AhKhQhJh
Containment — "at least these ranks"
AsKhJd2cOne exact hand1
AAAt least two aces6,961
AKAt least one ace and one king17,316
KAt least one king76,145
AKQJOne each of A, K, Q, J256
Rank classes & spans
[A-J]One card ranked A through J (A / K / Q / J)—
Q+One card ranked Q or better179,335
A-QOne card from A down to Q179,335
TT-77A pair from TT down to 7727,628
Rank variables & sublists
RR / RROOA pair / two pair (repeated letters = same rank)87,685 / 2,808
JRONA jack plus three other distinct ranks56,320
K[2s,Jc,T]A king plus one of 2♠, J♣, or any ten24,890
[A-J][2-5]33One A–J, one 2–5, and two threes1,216
Suits — a suit char binds to the rank before it
ss / hhAt least two spades / two hearts69,667
KJssA K, the J♠, and one more spade1,981
KJ*ssA K, a J, and two spades — on four different cards (* = any card)1,153
KJ:ssA K and a J, plus ≥2 spades anywhere (a K♠ / J♠ counts toward them)4,492
KJ:ss!sssA K and a J with exactly two spades (≥2 and not ≥3)3,678
Operators — combine & negate
A!KAn ace but no king (negation !)58,829
A:KIntersection — both conditions hold (same as AK)17,316
AA,KKUnion — either condition holds13,886
How suit specs are consumed
Inline specs each take a distinct card (no double duty), while : checks the hand as a whole. So KJ*ss needs the two spades on their own cards, but KJ:ss lets a K♠/J♠ count as a spade. Take the hand K♥ J♠ 8♠ 2♣:
✓KJ:ssJ♠ + 8♠ are the two spades
✗KJ*ssK, J use their cards — only 8♠ left for two spade specs
Multiple ranges per player
Give one seat several ranges by joining them with the union comma. A seat takes a single range string — AA,KK,TT-77 means the player holds AA, or KK, or a pair TT–77. Overlapping hands are de-duplicated automatically (matched once, so equity never skews).
Combining alternatives — , binds loosest (no grouping)
AA,KK,TT-77AA, or KK, or a pair TT–7741,226
AA,KK:ssAA — or KK with two spades (the :ss only touches KK)8,680
AA:ss,KK:ssAA or KK, each with two spades3,447
AA,KK,TT-77:ssAA, or KK, or a TT–77 pair with two spades20,672
To apply a condition to every alternative, distribute it manually — AA:ss,KK:ss, not AA,KK:ss (which only touches KK). A stray comma (AA,) is a parse error, never a silent match-everything.
PLO5 and PLO6 adapt automatically — the free remainder is k − specified, so AA adds three free cards in PLO5 (four in PLO6) instead of two. The same range grammar applies to every game type.
Card specs are consumed injectively — more specs than hole cards (e.g. KJ*** in PLO4) matches nothing. Whitespace separates specs, so K J * s s is five specs — write KJ*ss. A pair range must stand alone; compose it with , or : (TT-77:ss).
Suits are written literally, relative to the board (ss, KJ*ss). Double/single-suited macros aren’t supported — a bomb pot is a 100%-range game where every seat is dealt in, so “double-suited” is never a meaningful filter.