# Analyze


Analyze is where we do our analysis. We can build or import games from hand histories and we can do all kinds of analysis. In the following we will do our best to document the many features and still keep it light and easy to read. We highly recommend reading this guide before working with PokerJuice.

Print out the guide

We recommend printing out the guide and reading through it along with a good cup a coffee 😃

# Simulations

PokerJuice uses Monte Carlo simulations (opens new window) for all equity and frequency calculations. All players that have not folded are included in the calculations. In other words all simulations are range versus range meaning that players ranges impact one another.

This also means that:

  • equities and frequencies will vary from one run to another
  • (action) frequencies will not add up to 100% exactly

The simulations are done like this:

  • we pick a random hand from each player's range.
  • for each matchup we go to showdown with a random board

We do this many times and count winners or frequencies.

Number of trials

Most simulations are made up of 600,000 trials

We have put a lot of work into optimizing the performance and user experience by:

  • doing simulations in the cloud on multiple machines
  • caching both on the client and on the server to avoid unnecessary simulations

This hopefully means that no matter where in the world you are located you will have a nice and fluent user experience. If this is not the case please let us know (opens new window)

# Decision Tree

PokerJuice operates on a decision tree. What this means is that even though the user interface has a flat structure - where we can navigate back and forth in the hand - behind the scenes we are actully navigating a decision tree.

So how do we do that?

Let's look at a simple game where SB goes allin with the top 20% of hands and folds the rest. BB can then choose to either call or fold.


The decision tree for this game would look this. We can see that if SB folds it leads to leaf. The game is over and there are no more decisions. When SB goes allin we arrive at a new decision point, this time for BB. He can now either call or fold.

We can re-create this game in PokerJuice. Go to Analyze and click New Game. Select 2 players and click Create Game.


Let's start by creating the allin raise. Click the Allin button and click Raise To. We now want to define a range for this raise.


We enter 20% for the raise action. Let's also add the fold action by clicking the Fold button.


We will get a frequency somewhere around 80% (read more about cumulative actions). In this case 80.01% (why not exactly 80.00%?).

But notice that our fold action is now active and the raise action has been deactivated. So what does our decision tree look like now?


We have activated the SB's fold action which brings the action to a leaf (game over).


This is exactly what we can see in the replayer. If we step forward we will reach the leaf and it will say end of game on the right. Now we want to build the other half of the decision tree. We do this by activating the raise action.


Our decision tree now looks like this. We can now navigate forward and we arrive at BB's decision point. It is now time to add the call and the fold from BB. Let's start by adding the call. Click call.


We enter 40%.


Notice that we now have four new game nodes added to our game. Flop, turn, river and showdown nodes have been added to the game. The players are allin and there are no more decision points in the game. We are almost finished. We want BB to fold the rest of his hands. We click fold.

We are done 🎉


What can we see here? We can see the expected stack for BB for each of his actions. It is displayed on the tab next to the frequency for each action.

We can also see that the expected stack for BB's combined strategy is 96.56. Since he started with a stack of 99.00 this is not a profitable strategy. Let's see how SB is doing. We navigate one step back.


We see that the expected stack for SB's raises is 103.25. When SB folds he has an expected stack of 99.50. Combined his strategy yields him an expected stack of 100.23.

We have completed the decision tree. We hope you now have a basic understanding of how decision trees work in PokerJuice. To learn more about expected stacks we suggest reading the chapter dedicated to that subject.

# Decision Points

The decision points are the circles in the decision tree. This is where a player needs to make a decision. When navigating through a game we move from one decision point to another.


At the top of each decision point we have a couple of features:

  • The owner of the decision point and his stack size (before any actions)
  • The width of the starting range coming into the decision point
  • The player's equity in the pot
  • The player's expected stack

The width of starting range will change as we narrow a player's range throughout the game.

We also have:

These features are the same for all decision points throughout the decision tree. Let's dive into actions.

# Actions

When a poker player makes a decision he has three main actions to choose from:

  • Fold
  • Call
  • Raise To

In PokerJuice we can define actions and assign each action a range. The range tells us with what hands he will make the given action. This also means that if a situation is played out with all possible hole cards then each action will have a frequency.


To create an action we click either the fold, call or raise button. On each decision point we can have anywhere from one to three actions. Let's do a quick example:

We are on the button in a heads up game. We raise the top 80% of our hands and fold the rest. How would we emulate this in PokerJuice?

We click the raise to button.


We enter 80%.

We now click the fold button.


We have now defined our two actions with a range assigned to each. But wait, we never assigned a range to fold? How does PokerJuice know what hands goes into the folding range?

The reason is that the ranges assigned to actions in PokerJuice are cumulative.

Our action ranges look like this:

Action Range Cumultative Range
raise-to 80% 80%
fold (*) (*)!(80%)

Since the range assigned to fold is empty it defaults to (*).

Catch-all action

It is best practice to let the bottom action stay empty. This will ensure that all hands that have not been extracted by other actions will go into the bottom action and that the actions will sum to 100%


Here we can see that SB's range is indeed (*)!(80%).

Active Action

When adding a new action it will automatically be the active.

# Frequencies

Let's take a look at the frequencies. The frequency for each action is displayed on the tab to the right. In this case the frequency for raise is 79,94% and for fold 19,91%.

The frequency for each action tells us how often the player will have a hand in that particular range.

Hey, something's wrong?

The frequencies do not add up to 100%. Why not?

# Expected Stacks



Next to the frequencies we see n/a for the raise action and 99.50 for the fold action displayed. These are the expected stacks for each action.


The expected stack is the expected size of a player's stack at the end of the hand averaged over all the ways the hand can play out.

The expected stack when choosing to fold is 99.50 because that is what is currently the size of SB's stack. A fold will not change that.

The expected stack when choosing to raise is n/a. This is because we have not told PokerJuice how the hand will play out. In other words we have to complete the entire sub tree to be able to determine the expected stack.

Warning Triangle

The warning triangle is there to warn us that we have not completed the sub tree.

Let's do that quickly by assuming that BB will fold every single hand.


We first activate the raise action by clicking the red toggle button next to RAISE 2.50. We can now navigate forward in the replayer to BB's decision point and just add a fold (remember empty ranges default to (*)). We navigate back to SB's decision point.


We can now see that the expected stack from our raise is 101.00. This makes sense because we stand to steal BB's big blind every time.

But what is SB's combined expected stack for both actions.


At the top of the page we see our combined expected stack. In this case 100.55.

Why not relative EV like I am used to?

We think that using absolute values (stacks) instead of relative values is simpler and more intuitive and makes comparing different lines easier.

# Cumulative

Cumulative ranges mean that the sub ranges are mutually exclusive and sub range A is automatically excluded from sub range B. Sub ranges A and B are automatically excluded from sub range C and so on:

Action Range Cumultative Range
A (X) (X)
B (Y) (Y)!(X)
C (Z) (Z)!(Y)!(X)

Hands trickle down

You can think of cumulative as all hands from the starting range trickling down through the actions, where each action extracts a given set of hands.

Why cumulative ranges?

  • it is easy to make them sum to 100%
  • a given hand can not show up in two ranges at the same time

# Ordering

Since the actions are cumulative it means that the order of the actions is essential. We can confirm this by moving the fold action up above the raise action.


To do this we click the arrow up icon.


The fold action is now on top and since we are not extracting out any hands the fold range is empty (0.00%).

Catch-all action

Ranges only default to (*) when they are the last action

The raise is still 79.94% since we are filtering out the top 80% hands in the raise. Now, we are making the mistake of not letting the bottom range stay empty. This means that:

  • actions will not sum to 100%
  • expected stacks further up the decision tree will be incorrect


We get a warning that we might be doing something wrong.

# Player Range

When we play poker we narrow our opponent's range the best we can for each action they take. Based on their actions we can exclude certain hands from their range and as the game progresses the range will get narrower and narrower.

We do the same in PokerJuice. We start out by assigning them a preflop range. This can be based on their position at the table and their actions preflop.

E.g. if a tight player open from UTG we can exclude the bottom 85% of hands (read more about preflop rankings) and we assign him a 15% range.

Postflop we don't use preflop rankings anymore. Now a range is a function of the board and we need a way to express the sub ranges players can have.

PokerJuice contains an advanced syntax that we can utilize. We will go in-depth with the syntax later. For now, you just need to know three simple syntaxes:

Syntax Translates to
p+ One pair or better
2p+ Two pair or better
set+ Set/Trips or better

As mentioned these syntaxes are functions of the board. This simply means that one pair on the flop is not the same as one pair on the river!

Street Street Range Accumulated Range
preflop 50% 50%
flop p+ (preflop range):(p+)
turn 2p+ (flop range):(2p+)
river set+ (turn range):(set+)

The accumulated range is therefore an evaluation of the syntax on the current street with the previous street range prepended.

Let's do a quick example (download here) where BB check-calls all streets on a dry board with the hands from the table above:


Let's see how we narrow BB's check calling range:

Street Street Range Accumulated Range % of all hands
preflop 50% 50% 50%

Preflop we assign BB a range of the top 50% starting hands. This is the same as 50% of all hands.

Street Street Range Accumulated Range % of all hands
preflop 50% 50% 50%
flop p+ (50%):(2,33-66,7,88-JJ,Q,KK,AA) 36%

On the flop we define his calling range as p+. Since the flop is 2c7sQh this evalutes to (2,33-66,7,88-JJ,Q,KK,AA). This is 72.91% of all the hands he arrived with on the flop. So his range is now down to 36% (50% x 72.91%).

Street Street Range Accumulated Range % of all hands
preflop 50% 50% 50%
flop p+ (50%):(2,33-66,7,88-JJ,Q,KK,AA) 36.46%
turn 2p+ (50%):(2,33-66,7,88-JJ,Q,KK,AA):(32,72,73,Q2,Q3,Q7,22,33,77,QQ) 7.64%

On the turn we define his calling ranges as 2p+ on a board which is now 2c7sQh3d. This evaluates to (32,72,73,Q2,Q3,Q7,22,33,77,QQ). This is 20.95% of all the hands he arrived with on the turn. His range is now down to 7.64% (36.46% x 20.95%).

Street Street Range Accumulated Range % of all hands
preflop 50% 50% 50%
flop p+ (50%):(2,33-66,7,88-JJ,Q,KK,AA) 36.46%
turn 2p+ (50%):(2,33-66,7,88-JJ,Q,KK,AA):(32,72,73,Q2,Q3,Q7,22,33,77,QQ) 7.64%
river set+ (50%):(2,33-66,7,88-JJ,Q,KK,AA):(32,72,73,Q2,Q3,Q7,22,33,77,QQ):(Q,22,33,77) 5.93%

Finally on the river we define his calling range as set+ on a 2c7sQh3dQd board which translates to (Q,22,33,77). This is 77.64% of all the hands he arrived with on the river. His range is now down to 5.93%. (7.64% x 77.64%)

If we multiply the frequencies of his ranges throughout the game we can see that he ends up calling with a total of 5,93% of all starting hands.

So, a player's range is defined as a range for each street.


The player range component at the top helps us keep track of a given player's range on any street at any time.


We can hover over the street icons to take a quick peek at the range for that street.


On the far right we have a copy icon. This will copy the accumulated generic syntax to the clipboard.

# Snippets

To help manage sub ranges PokerJuice introduces something called snippets. Snippets are simply range fragments that we can combine to produce sub ranges. The idea is to make it more managable to deal with complicated ranges. We edit small snippets instead of one long text string.

Let's illustrate this with a quick example. We create a heads up new game and add an opening raise action:


We enter AA and we get a frequency of 2.56%.

# Add new

We would like to add another snippet.


To add a new snippet we click the plus icon.


We enter KK. We can see that the frequency is now 5.15%.

# Unions


If we look in the player range we can see that SB's range is now (AA, KK). As we can see snippets are separated by a comma. A comma means the union of two ranges. PokerJuice unites all snippets within the same action.

Union of two ranges

Use comma to get the union of two ranges. We can also think of (AA, KK) as AA OR KK

# Activate/Deactivate


We can activate/deactivate a snippet by clicking the check mark icon above.


Here we have deactivated the KK snippet that we just added a moment ago. The frequency is now back to 2.56%. Deactivated snippets are NOT part of the sub range and are completely ignored.

What's the point?

Activation/Deactivation of snippets can be useful when working with sub ranges. Thinking in terms of small snippets that we can turn on and off is much more flexible than working with one long string

# Negating

Negating means that we can exclude hands from our ranges. For example AA!KK means all hands with at least two Aces but with no Kings.

Negate operator

To negate a range we use an exclamation point. Example: AA!KK

Let's do a quick example:


We have a raise action with snippets AA and KK. We can see that the frequency is 5.15%. We now want to exclude all AK hands from this range:


We add a snippet !AK. The frequency is now down to 4.31%.


The sub range is now ((AA, KK)!AK). When we start a snippet with "!" then it will automatically wrap all snippets above in parentheses and then apply the negated range.

Let's illustrate this by moving the bottom snippet up one place. We click the arrow up to move the bottom snippet up:


The negation now only applies to AA.


We can confirm this by looking at the new player range.

# Copy/Paste

Copy/paste snippets can save quite some time when constructing more complex ranges. Let's say you have made a continuation range of 7 various snippets and you want to use that same continuation range for another player or another action.


In that case you click the copy icon above the snippets.


Then go to where you want to reuse the snippets and click paste.

As you can see all snippets are then pasted in same order and you can continue from there.

Snippets can also be copied to User Ranges where it can be saved for reuse.

# Syntax Preview

Postflop we can utilize the PokerJuice Syntax.


When we do we get a preview of the corresponding generic syntax when hovering the magnifying glass.

# Replayer

In the replayer we can follow the action in a game. Games do not contain a specific currency. Instead everything is calculated in big blinds.

In the following we will walk through the information presented in the replayer.

# Players


# Active Player

Here we have created a new heads up game. We can see that SB is the active player. Being the active player means that we are located on a decision point belonging to that player. The active player is highlighted in orange.

# Name

In the bottom right corner of the orange box we see Small Blind (sb). This is the name and position of the player. We can edit the name by clicking on it:


A popup appears where we can edit the name.

# Stack

In the bottom left corner we see the player's current stack. In this case 99.50. This is also editable by clicking on it.

# Equity

In the top left corner we see the player's equity. In this case 50%. This value will change as we change the players ranges. The equity is also visualized in the progress bar in the middle of the box.

# Expected Stack

Finally in the top right corner we see the player's expected stack. This is currently n/a since we have not completed our decision tree.

# Hole Cards

We can define a set of hole cards for any player.


If we hover over the cards a pencil and a refresh icon will appear on top of the cards. If we click the pencil we get a pop-up:


Here we select four cards and click Select.


We have now defined hole cards for SB. Notice that our equity changed to 51%.

# Toggle hole cards

We can toggle between a range and hole cards simply by clicking the refresh icon.


We click the refresh icon turn our holecards face down and our equity is shown as back to 50%.

# Board

To demonstrate how to edit the board we need to arrive at the flop.


  • create new game heads up
  • add call for SB and step forward
  • add check for BB and step forward

Or you can just download the game here.


We are now at the flop. We have yet to define a board.


On the right we see that we can edit the flop by clicking the pencil. We can also add a random flop.


We click random flop. In this case we get Jc9d2d.


And the same flop is visible in the replayer. Likewise we can add a turn card when we arrive at the turn and a river card when we arrive at the river.

# Pots

The current pot size is displayed on the right side of the poker table. PokerJuice handles side pots if a shorter stacked player is allin.


To demonstrate this we have created a 3-way game (download here) and set Button's stack to 60.00. Button goes allin and so does SB and BB.

We now have a main pot of 180.00 (3 x 60.00) and a side pot of 80.00 (2 x 40.00). SB and BB also have a progess bar visualizing the equities in both the main pot and the side pot.

Mouseover to see equity

You can mouseover each progress bar to see the exact equity

# Preflop Ranges

# Generic Syntax

PokerJuice implements the ProPokerTools generic syntax (opens new window).

# Ranks & Suits

The available ranks are: A, K, Q, J, T, 9, 8, 7, 6, 5, 4, 3, 2.

The available suits are: s, h, d, c (spades, hearts, diamonds, clubs)

# Wild Card

* means any rank

# Examples

Range Description
AsKhJd2c a specific hand where all cards are known
AA all hands with at least two aces in it
sshh all hands with two spades and two hearts
* all hands

# Combining Ranges

We will often have the need to combine ranges. For this purpose we have three operators available:

Operator Example Description
, AA, KK A range of all hands containing AA or KK
: AA:K A range of all hands containing AA and a King
! AA!K A range of all hands containing AA but no King

# Precedence

Just like math some operator have precedence over others. And just like math we can use parentheses to define precedence.

The order of precedence is (from top to bottom):

Operator Example Meaning Math equivalent Description
() (AA,KK):Q!J (AA,KK):(Q!J) Parentheses (Aces or Kings) containing a Queen but not a Jack
! AA,KK:Q!J AA, (KK:(Q!J)) Exponents Aces or Kings containing a Queen but not a Jack
: AA,KK:Q AA, (KK:Q) Multiplication Aces or Kings containing a Queen
, AA,KK Addition Aces or Kings

# Preflop Ranking

To select a preflop range it is useful to have a preflop ranking to easily be able to select a large number of hands. If we have a preflop ranking we can select a certain subset of that ranking using percentages. PokerJuice uses the ProPokerTools preflop ranking (download (opens new window)).

How are these rankings created?

Click here (opens new window) to read more about how this ranking was created

To demonstrate percentages in PokerJuice we have created a new game and added a raise action:


We enter 10%. We can see that the frequency is 10.03% (why not exactly 10.00%?).

How is this range doing against a random hand?


We can see that the top 10% of hands on average has 62% equity against a random hand.

# PokerJuice Preflop Ranges

The ProPokerTools preflop ranking is a solid start and they are fine and useful in a lot of situations. But there are situations where we would like to select preflop ranges that better reflect the ranges that a lot of players use in the real world. Theses ranges are less equity-based and more based on playability. For that reason we have created the PokerJuice Preflop Ranges.

# Quick Access

PokerJuice has built-in quick access to the PokerJuice Preflop Ranges. No more need to memorize them.


All we have to do is place the cursor inside the range input field and the drop-down appears automatically. The list is filtered as we type. Let's find the 3bet 8% ip range.


We type 8. The list is filtered and we can now easily select the 3bet 8% ip range.

# Postflop Ranges

While it is handy being able to select a range preflop based on a percentage, this will not work postflop. Postflop we have a board that comes into play which impacts equities to the degree that is does not make sense to talk about a top x% range. So, we need another way to select hands to build our ranges.

# PokerJuice Syntax

PokerJuice Syntax is a postflop syntax which provides an easy way to describe ranges postflop fast and accurately. Instead of having the find all the combinations manually we can use PokerJuice Syntax to describe the range we are looking for.

The syntax contains a set of expressions that we use. Expressions are evaluated in the context of the street on which we enter the expression. A set on the flop is not the same as a set on the turn.

Let's illustrate that with an example:

Board Expression Range
Kc 7s 2d set KK, 77, 22
Kc 7s 2d 4h set KK, 77, 22, 44

# Plus Operator

Most of the time we want a specific sub range or better. For this use case we can use the plus operator:

Board Expression Range
Kc 7s 2d 2p (72,K2,K7)!(22,77,KK)
Kc 7s 2d 2p+ 72,K2,K7,22,77,KK

We can see that 2p returns exactly two pair by filtering out all better hands while 2p+ returns two pair or better.

# N-th Operator

The n-th operator allows us to be even more granular when selecting a specific sub range. We suffix an expression with a number representing the sub range we are looking for.

For instance if we only want specific set on a flop, we can type:

Board Expression Range
Kc 7s 2d set1 KK
Kc 7s 2d set2 77
Kc 7s 2d set3 22

We can see that set1 returns top set while set2 returns middle set and so on.

Why not just type KK to get top set?

To understand KK we need knowledge of the board. To understand set1 we do not need knowledge of the board. Also set1 is re-usable on another board, while KK is not.

# Combing Plus and N-th Operator

We can even combine the plus operator and the n-the operator to give us a very specific sub range:

Board Expression Range
Kc 7s 2d set2+ 77, KK

We can see that set2+ returns second set or better.

# Made Hands

The expression made hands refers to hands the value of which are one pair or higher.

# One Pair

Board Expression Range
Kc 7s 2d p+ 2,33-66,7,88-QQ,K,AA
Kc 7s 2d p (2,33-66,7,88-QQ,K,AA)!(72,K2,K7,22,77,KK)
Kc 7s 7d p (*!*)
Kc 7s 2d 4h p (((2,33,4,55,66,7,88-QQ,K,AA)!(42,72,74,K2,K4,K7,22,44,77,KK)))
Kc 7s 2d p1 AA!(72,K2,K7,22,77,KK)
Kc 7s 7c 2d p (*!*)
Kc 7s 2d p2+ AK,AA,72,K2,K7,22,77,KK

# Board Card

Returns a range of hands that connects with the board.

Board Expression Range
Kc 7s 2d bc+ n/a
Kc 7s 2d bc K,7,2
Kc 7s 2d bc1 K
Kc 7s 6h 2d bc K,7,6,2
Kc 7c 7s 2d bc K,7,2
Kc 7c 7s 2d bc1 K

Plus operator not supported

Board card does not support the plus operator because it is not part of the official poker hand ranking (opens new window).

Therefore, it does not make sense to talk about a board card or better.

# Over Pair

Board Expression Range
Jc 7s 2d op QQ-AA!(72,J2,J7,22,77,JJ)
Jc 7s 2d op+ QQ-AA,72,J2,J7,22,77,JJ
Jc 7s 2d op1 AA!(72,J2,J7,22,77,JJ)
Jc 7s 2d op4 (*!*)
Jc 7s 7d op (*!*)
Qc Jc 7s 2d op2 KK!(AA,72,J2,J7,Q2,Q7,QJ,22,77,JJ,QQ)

Paired Boards

Over Pair on paired boards returns empty range because it would evaluate to two pair

# Top Pair

Board Expression Range
Jc 7s 2d tp J!(QQ-AA,72,J2,J7,22,77,JJ)
Jc 7s 2d tp+ J,QQ-AA,72,22,77
Jc 7s 2d tp1 AJ!(QQ-AA,72,J2,J7,22,77,JJ)
Jc 7s 2d tp2 KJ!(AJ,QQ-AA,72,J2,J7,22,77,JJ)
Jc 7s 7d tp (*!*)
Qc Jc 7s 2d tp1 AQ!(KK,AA,72,J2,J7,Q2,Q7,QJ,22,77,JJ,QQ)

The ranking of top pairs is determined by the kicker.

Paired Boards

Top Pair on paired boards returns empty range because it would evaluate to two pair

# Middle Pair

Board Expression Range
Jc 7s 2d mp 7!(88-TT,J,QQ-AA,72,22,77)
Jc 7s 2d mp+ 7,88-TT,J,QQ-AA,22
Jc 7s 2d mp1 A7!(88-TT,J,QQ-AA,72,22,77)
Jc 7s 2d mp2 K7!(A7,88-TT,J,QQ-AA,72,22,77)
Jc 7s 7d mp (*!*)
Qc Jc 7s 2d mp1 AJ!(Q,KK,AA,72,J2,J7,22,77,JJ)

The ranking of middle pairs is determined by the kicker.

Paired Boards

Middle Pair on paired boards is promoted to two pair

Turn & River

Middle Pair on the turn or river means the 2nd highest pair

# Bottom Pair

Board Expression Range
Jc 7s 2d bp 2!(33-66,7,88-TT,J,QQ-AA,22)
Jc 7s 2d bp+ 2,33-66,7,88-TT,J,QQ-AA
Jc 7s 2d bp1 A2!(33-66,7,88-TT,J,QQ-AA,22)
Jc 7s 2d bp2 K2!(A2,33-66,7,88-TT,J,QQ-AA,22)
Jc 7s 7d bp (*!*)
Qc Jc 7s 2d bp1 A2!(33-66,7,88-TT,J,Q,KK,AA,22)

Paired Boards

Bottom Pair on paired boards returns empty range because it would evaluate to two pair

# Two Pair

Board Expression Range
Kc 7c 2c 2p+ 72,K2,K7,22,77,KK
Kc 7s 2d 2p (72,K2,K7)!(22,77,KK)
Kc 7s 2d 2p1 K7!(22,77,KK)
Kc 7s 2d 2p2 K2!(K7,22,77,KK)
Kc 7s 7d 2p (22-66,88-QQ,K,AA)!(7,KK)
Kc 7s 2d 2p2+ K2,K7,22,77,KK
Kc 7s 7d 2d 2p (2,33-66,88-QQ,K3,K4,K5,K6,K8,K9,KT,KJ,KQ,AK,AA)!(7,22,KK)

# Set

Board Expression Range
Kc 7c 2c set+ 22,77,KK,cc
Kc 7c 2c set (22,77,KK)!cc
Kc 7c 2c set1 KK!cc
Kc 7c 2c set2 77!(KK,cc)
Kc 7c 7c set 7!(K7,KK,77)
Kc 7c 7c 2d set 7!(22,72,K7,KK,77)

Trips vs. Set

Usually a set refers to three-of-a-kind where one card is a community card while trips refers to three-of-a-kind with two community cards. In PokerJuice set covers both.

# Straight

Board Expression Range
Jc Tc 8c str+ 97,Q9,cc
Jc Tc 8c str 97,Q9
Jc Tc 8c str1 Q9
Jc Tc 8c str2 97!Q9
Jc Tc 8c str2+ 97,Q9,cc
Jc Tc 8c 8d str (97,Q9)!(T8,J8,TT,JJ,88)

# Flush

Board Expression Range
Jd 9d 2d f dd
Jd 9d 2d f1 dAd
Jd 9d 2d f2 dKd!dAd
Jd 9d 2d f2+ dKd,dAd
Jd 9d 2d 2c f dd!(92,J2,99,JJ,22)

# Full House

Board Expression Range
Kc 7c 2c 2d fh+ 72,K2,77,KK,22
Kc 7c 2c 2d fh (72,K2,77,KK)!22
Kc 7c 2c 2d fh1 KK!22
Kc 7c 2c 2d fh2 77!(KK,22)
Kc 7c 2c 2d fh2+ 77,KK,22
Jd 9d 8d 8c fh (98,J8,99,JJ)!(88,Td7d,QdTd)

# Quads

Board Expression Range
Kc 7c 2c 2d quads 22
Kc 7c 2c 2d 2h quads 2
7c 7c 2c 2d quads 22,77
7c 7c 2c 2d quads1 77
7c 7c 2c 2d quads2 22
Jd 9d 8d 8c quads 88!(Td7d,QdTd)

# Straight Flush

Board Expression Range
Jd 9d 8d 2c sf QdTd,Td7d
Jd 9d 8d 2c sf1 QdTd
Jd 9d 8d 2c sf2 Td7d
Kd Qd Jd sf1 (AdTd)

# Straight Draws

Straight draw expressions are named after the number of outs they have. For example, a gut-shot straight draw is named a 4w and an open-ended straight draw is named 8w and so on.

# Backdoor Straight Draws

PokerJuice Syntax supports backdoor draws. A backdoor straightdraw is a hand that can pick up a draw on the turn.

N-th operator

The n-th operator is not supported for backdoor straight draws. The reason is that it is hard to rank backdoor straight draws.

The syntax for a backdoor draw is a regular straight draw prefixed by an underscore. For example _8w. Examples are shown below.

# 8-way

Board Expression Range
Td 9c 2s 8w+ 87,Q86,J8,KQ76,KJ7,QJ
Td 9c 2s 8w (87,Q86,J8,KQ76,KJ7,QJ)!(876,KQJ,J87,QJ8)
Td 9c 2s 8w1 QJ!(876,KQJ,J87,QJ8)
Td 9c 2s 8w2 KJ8!(QJ,876,J87)
Td 9c 2s 8w2+ KJ8,QJ,876,J87
Td 9c 2s _8w+ 43,53,54

# 9-way

Board Expression Range
Td 6c 2s 9w+ 543,987
Td 6c 2s 9w 543,987
Td 6c 2s 9w1 987
Td 6c 2s 9w2+ 543,987
Td 6c 2s 3d 9w 987!(9874,9875)
Td 6c 2s _9w+ KQJ,AQJ,AKJ,AKQ,QJ9,QJ8,KJ9,KQ9

# 13-way

Board Expression Range
Td 9c 2s 13w+ 876,KQJ,J87,QJ8
Td 9c 2s 13w (876,KQJ)!(J87,QJ8)
Td 9c 2s 13w1 KQJ!(J87,QJ8)
Td 9c 2s 13w2 Q876
Td 9c 2s 13w2+ Q876,KQJ,J87,QJ8
Td 9c 2s _13w+ A43,A53,A54,643,653,654,7543,8543

# 17-way

Board Expression Range
Td 9c 2s 17w+ J87,QJ8
Td 9c 2s 17w (J87,QJ8)!QJ87
Td 9c 2s 17w1 QJ8!QJ87
Td 9c 2s 17w2 KJ87
Td 9c 2s 17w2+ KJ87,QJ8
Td 6c 2s _17w+ QJ8,KJ9,KQ9

# 20-way

Board Expression Range
Td 9c 2s 20w+ QJ87
Td 9c 2s 20w QJ87
Td 9c 2s 20w1 QJ87
Td 9c 2s 20w2 *!*
Td 9c 2s 20w2+ *!*
Jd 6c 2s _20w+ T975,QT87,KQ98

# Flush Draws

A flush draw is a hand that can improve to a flush on the next street.

# Backdoor Flush Draws

A backdoor flush draw is a hand that can pick up a flush draw on the turn.

N-th operator

The n-th operator is supported for backdoor flush draws

# Flush Draw

Board Expression Range
Ts 9c 2s fd ss
Ts 9c 2s fd1 Ass
Ts 9c 2s fd2 Kdd!Add
Ts 9c 2s fd2+ Kdd,Add
As 9c 2s fd1 Kss

# Backdoor Flush Draw

Board Expression Range
Ts 9c 2s _fd cc
Ts 9c 2s _fd1 Acc
Ts 9c 2s _fd2 Kcc!Acc
Ts 9c 2s _fd2+ Kcc,Acc
Ac 9s 2s _fd1 Kcc

# Flush Blocker

A flush blocker is a hand containing one or more cards blocking either a flush or a flush draw.

Board Expression Range
Ts 9c 2s fb s
Ts 9c 2s fb1 As
Ts 9c 2s fb2 Ks!As
Ts 9c 2s fb2+ Ks,As
As 9s 2s fb1 Ks

# Backdoor Flush Blocker

Board Expression Range
Ts 9c 2s _fb c
Ts 9c 2s _fb1 Ac
Ts 9c 2s _fb2 Kc!Ac
Ts 9c 2s _fb2+ Kc,Ac
As 9s 2s _fb *!*

# Overcards

Overcards returns all ranks higher than the board.

Board Expression Range
Ts 9c 2s oc A,K,Q,J
Ts 9c 2s oc1 A
Ts 9c 2s oc2 K
Ts 9c 2s oc2+ A,K

To express a specific number of overcards we can put the expression inside brackets:

Board Expression Range
Ts 9c 2s [oc][oc] [A,K,Q,J][A,K,Q,J]
Ts 9c 2s [oc1][oc] [A][A,K,Q,J]
Ts 9c 2s [oc1][oc2+] [A][A,K]
Ts 9c 2s [oc][oc][oc] [A,K,Q,J][A,K,Q,J][A,K,Q,J]
Ts 9c 2s [oc][oc]:fd [A,K,Q,J][A,K,Q,J]:ss

# Combo hands

A range of hands is often a combination of a made hand and a draw. We can combine made hands and draws to create combo hands.

# Made Hand + Flush Draw

Examples of combinations of made hands and flush draws:

Board Expression Range
Ts 9c 2s bc:fd (2,9,T):ss
Ts 9c 2s p+:_fd (2,33-88,9,T,JJ-AA):cc

# Made Hand + Straight Draw

Examples of combinations of made hands and straight draws:

Board Expression Range
Ts 9c 2s bc1:8w+ T:(87,Q86,J8,KQ76,KJ7,QJ)
Ts 9c 2s bc3:_13w+ 2:(A43,A53,A54,643,653,654,7543,8543)

# Straight Draw + Flush Draw

Examples of straight draws and flush draws:

Board Expression Range
Ts 9c 2s 8w+:fd (87,Q86,J8,KQ76,KJ7,QJ):ss
Ts 9c 2s 4w+:_fd2+ (76,86,J7,Q8,KJ,KQ,87,J8,QJ):(Acc,Kcc)

# Made Hand + Straight Draw + Flush Draw

Examples of made hands + straight draws and flush draws:

Board Expression Range
Ts 9c 2s bc1:4w+:fd T:(76,86,J7,Q8,KJ,KQ,87,J8,QJ):ss
Ts 9c 2s bc3:13w+:_fd 2:(876,KQJ,J87,QJ8):cc

# Quick Access

PokerJuice has built-in quick access to the postflop ranges as well.


All we have to do is place the cursor inside the range input field (postflop) and the drop-down appears automatically. If we start typing the list is filtered as we type.

# Syntax Builder

In case we are still learning the PokerJuice Syntax or just want a more visual approach, we can use the Syntax Builder to generate the PokerJuice Syntax for us.


Create a game with the flop above or download it here.

We have created a flop and we are now ready to use the Syntax Builder. We can select a combination of:

  • a made hand
  • a straight draw
  • a flush draw

The Syntax Builder will generate the syntax for us.


We have selected Top Pair + as our made hand and 8-way + as our straight draw.

In the preview window we can see the generated PokerJuice Syntax and the corresponding Generic Syntax

N-th operator

For each expression we can determine the n-th operator by selecting a number from 1 to 5 in the drop-down.

We can now click Insert or Insert & Close and the syntax is inserted.

# Import


Inside Analyze have an import button. This is used to import games. Let's try it out.


We click the button and we get a modal. Copy this sample game to the clipboard and paste the data into the modal.


We click the black Import button and we have imported a game at the exact spot it was exported.

# Export

To demonstrate the export feature let's:

  • create a new game
  • add a raise
  • set raising range to AA


We click the export button.


The data has now successfully been copied to our clipboard. We can now save this in a text file for later use.