Dice Flags

Roll flags can be used to modify the behavior of a die roll. The table below is a useful reference for what flags are available in Astral.

All of these flags can be combined to enable advanced die rolls suited to whatever system you play!

In dice flags, an "equals" comparator is a single equal sign = (e.g. rr=1). When comparing stats within an equation, the equals comparator needs two equal signs (e.g. {Str + 3 == 13})

Any dice flag which uses a value threshold works differently when used with custom dice. Read more in the custom dice section

D&D5e Flags

These flags are specific to D&D 5th edition, though they can be used for any game or system if you need the same behavior.

Flag Description
adv Roll twice, and keep the higher roll
dis Roll twice, and keep the lower roll


Use the advantage flag to roll a die with advantage. It will work with any die, not just the d20, but it won't work if you roll more than one die.

2d20adv # will not work


Use the disadvantage flag to roll a die with disadvantage. Like Advantage, it will work with any die, but will not work if you roll more than one die.

2d20dis # will not work

Success/Fail Count (Dice Pools)

Does your system rely on a number of rolls meeting a threshold? Astral can count the number of dice that meet (or don't meet) a target number.

Flag Description
cs>=X Count each die result meeting X as a success
cf<=X Count each die result meeting X as a fumble

Count Success (cs)

Default Comparator Default Value
>= Maximum die value

Set a threshold to count successes by. It takes any comparator, but if the comparator is left out, it defaults to >=. Any die that does not meet the threshold is dropped, so it's not counted in the total value of the roll.

Count Success is also the default dice pool flag -- if you end your roll with just a comparator and number, it's functionally equivalent to adding a cs flag at the end.

4d6cs5 # The same as 4d6cs>=5
2d6>=5 # The same as 2d6cs>=5
2d8cs=4 # Will only count 4's as successes
4d6cs # Same as 4d6cs>=6

If you system gives you multiple successes for a certain roll, you can use the cs flag multiple times to represent that. 4d6cs>=5cs=6 would count each roll of 5 as a success, and each roll of 6 as two successes (since 6 meets both thresholds).

Count Fumble (cf)

Default Comparator Default Value
<= Minimum die value

Some systems might have secondary effects from dice that meet a certain threshold. It takes any comparator, but if left out defaults to <=. Using the cf flag, you can count how many fumbles a given die roll has. Any die that meets the threshold is dropped, so it's not counted in the total value of the roll.

1d20cf=20 # Will count 20 as a fumble
4d6cf2 # The same as 4d6cf<=2
4d8cf # The same as 4d8cf<=1

As with cs, if you need to count multiple fumbles for a certain roll, the cf flag can be used multiple times. 4d6cf=1cf<4 would count each roll of 2 or 3 as a fumble, and each roll of 1 as two fumbles.

Counting both fumbles and successes

You can easily define thresholds for both fumbles and thresholds by using both flags on a roll. Any dice not meeting the success threshold are dropped and not counted in the total. 4d6cf=1cs5 would count each roll of 1 as a fumble, each roll of 5 or 6 as a success, and drop any rolls of 2, 3, or 4.

Dropping Dice

There are many flags meant to drop dice without counting successes or fumbles. This is useful if you care more about the total roll, and don't need to compare each die to some threshold for success/fumble counting.

Flag Description
gtX Keep dice > X, dropping the rest
gteX Keep dice >= X, dropping the rest
ltX Keep dice < X, dropping the rest
lteX Keep dice <= X, dropping the rest
khX Keep the X highest dice, dropping the rest
klX Keep the X lowest dice, dropping the rest

Comparison Flags

All of the comparison flags (gt, gte, lt, lte) work the same way. Any dice that do not meet the threshold are dropped, and are not counted in the total.

For our examples, let's assume we rolled 2d20, and we got a 5 and a 15.

2d20gt5 # total: 15
2d20gte5 # total: 20
2d20lt15 # total: 5
2d20lte15 # total: 20

Keep Highest (kh) / Keep Lowest (kl)

These flags don't look at the dice results, but rather the number of dice in the roll. If you omit a number value, the default is 1.

4d6kh3 # Roll 4d6, keep the highest 3 (i.e. drop the lowest 1)
2d20kl # roll 2d20, keep the lowest 1 (basically, disadvantage)
2d20kh # roll 2d20, keep the highest 1 (basically, advantage)


Sometimes, you just want your dice to roll more dice. There are a few flags that can do that for you, depending on what behavior you want.

Flag Description
e>=X Explode dice that meet X, adding the values together
eo>=X Explode dice that meet X, adding the values together. Extra dice don't explode.
rr>=X Reroll dice that meet X, dropping the dice that get rerolled.
ro>=X Reroll dice that meet X, dropping the dice that get rerolled. Extra dice don't reroll.

These flags are not compounding. If you are using the Count Success (cs) or Count Fumble (cf) flags alongside exploding dice, the success/fumble threshold applies to each individual die rolled (including the extra dice from exploding), not to the sum of the exploded dice.

Exploding Dice (e/eo)

Default Comparator Default Value
>= Maximum die value

There are two flavors of exploding dice, one of which does not infinitely explode (eo). Both exploding dice compare a roll result to a threshold and roll an extra die (of the same type) if the roll result meets that threshold.

1d6e # same as 1d6e>=6
1de>=5 # will explode on 5 and 6
1d6e5 # same as 1d6e>=5
1d20e=1 # will explode only on 1's
1d20eo=20 # will explode on 20's, but only once

Rerolling Dice (rr/ro)

Default Comparator Default Value
>= Maximum die value

Rerolling dice acts in many of the same ways as exploding dice, except any dice that trigger a reroll get dropped and don't get added to the total. For example, if we rolled 1d20rr=1, as long as we kept rolling 1's, it would keep dropping the 1 and rerolling until it got a non-1 result. The final value of that would be the result of the non-1 roll, not the sum of all the 1's that were rolled.

1d6rr=1 # rerolls all 1's
1d20ro=1 # rerolls a 1, but only once

Changing Dice Display

Some flags only change the display of the dice, but don't otherwise effect the roll.

Flag Description
cr>=X Sets dice rolls that meet X threshold as crits, which get colored green
fr<=X Sets dice rolls that meet X threshold as fumbles, which get colored red
mX>=Y Groups dice into groups of at least X, whose values are each >= Y

Critical Range/Fumble Range (cr/fr)

Flag Default Comparator Default Value
cr >= Maximum die value
fr <= Minimum die value

Some systems don't crit at the maximum value and fumble at the minimum. Perhaps 1 is a crit and 20 is a fumble! You can use these flags to define custom ranges for your crits or fumbles, to make sure they get colored properly.

These are independent of the cs/cf flags (Count Success and Count Fumble). They don't effect how dice are rolled or scored, only how they display in chat.

1d6cr>=5 # sets 5 and 6 as crits
1d8fr=8 # sets 8 as a fumble (this die would have no crit)
1d20cr=1fr=20 # sets 1 as a crit and 20 as a fumble

Matching Dice (m)


Default Comparator Default Group Size Default Threshold
N/A 2 N/A

If your system relies on matching dice (doubles, triples, four-of-a-kind, etc.), you can have Astral easily tally which dice are matched, and how many dice are in each group.

2d6m # default, matches pairs of any value
4d6m3 # match triples
2d8m3>=3 # match triples, but only rolls of 3 or more
2d6m=1 # match pairs of 1's (🐍👀)

Modifying Die Values (Min/Max)

These flags enable you to change the value of the die after it's been rolled.

Flag Description Default
minX If a die rolls below X, the value becomes X Minimum die value (usually 1)
maxX If a die rolls above X, the value becomes X Maximum die value
1d20max16 # changes rolls above 16 to be 16
1d20min5 # changes rolls below 5 to be 5

Custom Dice

There are some flags that only work on custom dice. Many other flags have slightly modified behavior when used on custom dice -- see the below section for more details and examples.

Flag Description Examples
cl Split custom dice sides by space and combine similar values 1d[1,2,3,1 A]cl

Combine Like (cl)

If your custom die has a side with both a number and a symbol value, you may want the number to be combined with the the overall numeric value for the roll. The Combine Like (cl) flag makes this a breeze. Just make sure that your sides that have both numbers and symbols have a space between the number and the symbol, and the cl flag will take care of adding the number to the total.

1d[1,2,0,0,1 🐦,1 🐦]cl # would tally the 1's and the birds separately
1d[1,2,0,0,1🐦,1🐦]cl # would not work, as there is no space between them
1d[a 1,b 2,c 3,4,5,6]cl # works for any strings, not just emoji

Using Indexes instead of Values

Any flag which would normally take a number value as a threshold instead uses a 1-based index of where the value is on the custom die.

1d[a,b,c,1,2,3]cf=1 # would count "a" as a fumble (not the number 1)
1d[a,b,c,1,2,3]cs>=4 # would count 1,2,3 as successes
1d[a,b,c,1,2,3,4,5]gt2 # would drop "a" and "b" rolls
1d[a,b,c,1,2,3]e<=3 # would cause "a", "b", and "c" to explode
10d[a,b,c,1,2,3]m2<=3 # would match pairs of "a", "b", or "c"

Flags like Keep Highest (kh) and Keep Lowest (kl) still use the count of the dice to keep, since that is not effected by the custom sides. Likewise, the Match (m) flag's first argument (the group size) is not effected by the custom sides either, but the threshold value is.