Standard dice
NdXRoll N dice with X sides and add them up. The quantity defaults to 1, so d20 rolls a single twenty-sided die.
Learn Mini Kraken's generic notation and the dedicated Vampire V5, Fate, and Assimilation rolls. Every example and system guide can be tested live.
Type any notation from this guide and roll it right here — dice show up in 3D with sound.
Roll dice with the classic NdX notation: N is how many dice, X is how many sides. Both parts are optional and have smart defaults.
NdXRoll N dice with X sides and add them up. The quantity defaults to 1, so d20 rolls a single twenty-sided die.
d → d20Omit the sides and the engine assumes a d20. Typing d+5 is the same as 1d20+5, and 3d rolls 3d20.
d%d% rolls a hundred-sided die, equivalent to d100. Great for percentage-based systems.
dF · dF.1dF rolls a Fudge die with results -1, 0, or +1 (dF.2, the default). dF.1 uses the variant where blank faces are more common. The shortcut f alone rolls 4dF, the standard Fate check.
(expr)dXThe quantity can be a simple numeric expression in parentheses; put the side value directly after d. (2+1)d6 rolls 3d6.
Nd(expr)Put a constant expression in parentheses after d to calculate the number of sides. d(2+4) rolls a d6, and (2+1)d(2*3) rolls 3d6.
Notation strings are full math expressions. Combine dice with numbers, operators, and parentheses; standard operator precedence applies.
+ - * / % ^ **Addition, subtraction, multiplication, division, modulo (%) and exponent (^ or **) are all supported, with parentheses for grouping.
1.5 · +-Decimal numbers work anywhere in an expression. Repeated signs are simplified automatically: d20+-2 becomes d20-2.
One card per function — every helper the engine accepts inside a notation. All of them take full expressions (including dice) as arguments.
floor(x)Always rounds down to the nearest whole number: floor(3.9) is 3. The classic way to halve damage.
ceil(x)Always rounds up: ceil(3.1) is 4. Useful when a system rounds in the player's favor.
round(x)Rounds to the nearest whole number: round(2.4) is 2, round(2.5) is 3.
abs(x)Removes the sign: abs(-3) is 3. Handy for margins and differences that can't be negative.
sign(x)Returns -1, 0, or 1 depending on whether the value is negative, zero, or positive.
sqrt(x)Returns the square root of the value: sqrt(16) is 4.
pow(x, y)Raises the first value to the second: pow(2, 3) is 8. Same as 2^3.
min(x, y)Returns the lower of two values: min(2d10, 7) caps the result at 7.
max(x, y)Returns the higher of two values: max(2d10, 7) guarantees at least 7.
exp(x)Returns Euler's number e raised to the value: exp(1) is about 2.718.
log(x)Returns the natural log (base e) of the value: log(10) is about 2.303.
sin(x)Sine of the value in radians. Rarely needed at the table, but available for exotic formulas.
cos(x)Cosine of the value in radians. Rarely needed at the table, but available for exotic formulas.
tan(x)Tangent of the value in radians. Rarely needed at the table, but available for exotic formulas.
Roll a pool and keep only the best — or ditch the worst. This is how you build advantage, disadvantage, and classic stat rolls like 4d6 drop lowest.
kN · khN · klNk or kh keeps the highest dice, kl keeps the lowest; everything else is ignored in the total. 2d20kh1 is advantage, 2d20kl1 is disadvantage.
dN · dlN · dhNd or dl drops the lowest dice, dh drops the highest. 4d6d1 is the classic ability-score roll.
k → k1 · km → kl1Omit the number and 1 is assumed: 2d20k means 2d20k1. km is an alias for kl1 (keep the lowest die).
When a die hits its trigger (the maximum value by default), it explodes: you roll an extra die and keep both. Explosions can chain.
!Each die that rolls its maximum value triggers an extra roll, shown as a separate die.
!!!! adds every chained explosion into a single die total instead of listing extra dice.
!p · !!p!p subtracts 1 from each exploded die (Hackmaster style). Combine with compound as !!p.
!cpAdd a compare point to change when dice explode: d6!>=5 explodes on 5 or 6, d10!=3 explodes only on 3.
!N · !!N · !pN · !!pNN is a positive integer that caps the additional explosions generated by each original die. Combine the cap with compound (!!N), penetrate (!pN or !!pN), and a trigger, as in d6!2>=5.
ei · eiNei is a friendly alias for explosion: 3d6ei equals 3d6!, and 3d6ei5 equals 3d6!>=5.
Reroll dice you don't want to keep. By default the trigger is the minimum value (a natural 1 on most dice).
r · r(cp)r rerolls a die until the result no longer matches the trigger. Add a compare point to customize it: d20r<3 rerolls 1s and 2s.
ro · ro(cp)ro rerolls a matching die a single time and keeps the new result, even if it matches again.
Force every die in the pool to land on a different value.
u · u(cp)u rerolls duplicated results until all dice are different. With a compare point, only duplicates that match the condition are rerolled.
uouo rerolls each duplicate a single time, keeping whatever comes next.
Instead of summing the dice, count how many meet a target — the dice-pool style used by systems like World of Darkness or Shadowrun.
cpPut a compare point right after the dice and the total becomes the number of dice that match: 6d10>=8 counts dice showing 8 or more.
f(cp)Add f plus a compare point to also count failures; each failure subtracts one from the success total.
Flag dice as critical successes or failures. This is purely visual — it marks the dice in the output but never changes the total.
cs(cp)cs marks dice that match the compare point: d20cs=20 highlights natural 20s.
cf(cp)cf marks fumbles: d20cf=1 highlights natural 1s.
Clamp each individual die to a floor or ceiling after rolling.
minNmin raises any die below the value up to it: 4d6min2 turns every 1 into a 2.
maxNmax caps dice above the value: d%max50 never shows more than 50.
Reorder the dice in the output to read results faster.
s · sa · sds or sa sorts the rolled dice in ascending order, sd in descending order. Only the display order changes.
Wrap expressions in braces to treat them as a single group — and apply keep/drop logic across whole sub-rolls.
{A, B}List one or more expressions separated by commas inside braces. The group total is the sum of its expressions.
{...}modGroups support keep, drop, and sort. With a single expression, keep/drop applies to its dice; with several expressions it applies to each sub-total. Use sd or sa to sort the expressions.
Repeat an entire notation several times in one go.
N#Prefix the notation with a count and #. 6#4d6k3 rolls a full set of six ability scores at once. Up to 100 repetitions.
Several modifiers (explode, reroll, unique, successes, criticals) accept a compare point: an operator followed by a number that defines when the modifier triggers.
=Equal to<Less than>Greater than<=Less than or equal>=Greater than or equal!=Not equal<>Not equal (alternative)Vampire V5, Fate, and Assimilation preserve die types and interpret their symbols after the roll. Every roll surface now understands their dedicated calls without approximating the rules with a generic formula.
The main roller, character sheets, chat, buttons, macros, the bot, and this playground accept these calls. Separate independent rolls with ; to preserve every system's dice and symbols in the same 2D and 3D batch.
Hunger replaces dice in the total pool. V5 mode keeps normal and Hunger dice distinct, counts successes, and recognizes criticals, messy criticals, and bestial failures.
Call names are interchangeable. Named parameters accept Hunger and difficulty in English or Portuguese; the positional order is pool, Hunger, and optional difficulty.
v5(...)vampiro(...)vampire(...)vampire-v5(...)v5(pool=7,hunger=3,difficulty=4)vampiro(pool=7,fome=3,dificuldade=4)v5(7,3,4)v5(7,3)Roll Fate dice with minus, blank, and plus faces. Four dice are the standard pool, while the total preserves every symbolic face for both the 2D result and the 3D dice.
Use fate or fatedice. The named count accepts dice, dado, or dados; omit it to roll the standard four dice.
fate(...)fatedice(...)fate(dice=4)fate(dados=4)fate(dado=4)fatedice(4)fate()Roll any combination of d6, d10, and d12. After the roll, choose up to the stated limit and total only the symbols on selected dice.
assim(d6=2,d10=1,d12=1,keep=2)Use the short, Portuguese, accented Portuguese, or English call. Named parameters accept keep or manter; the positional order is d6, d10, d12, and optional keep.
AS(...)assim(...)assimilacao(...)assimilação(...)assimilation(...)AS(d6=2,d10=1,d12=1,keep=2)assim(d6=2,d10=1,d12=1,keep=2)assimilação(d6=2,d10=1,d12=1,manter=2)AS(2,1,1,2)assim(2,1,1,2)AS(2)An Action Roll uses two distinct d12s: Hope and Fear. Add both values to the modifier. Matching dice are a Critical Success; otherwise, the higher die determines whether the action was rolled with Hope or Fear.
In the 3D roll, Hope uses your skin color and Fear uses that color's RGB inverse.
Use daggerheart, dagger, or dh. The modifier is optional, and Difficulty can be omitted when it is secret.
daggerheart(...)dagger(...)dh(...)daggerheart(modifier=2,difficulty=15)dh(mod=2,dc=15)dh(2,15)dagger(-1)daggerheart()Separate rolls with semicolons to combine generic dice, Vampire V5, Fate, Assimilation, and Daggerheart. The 2D result and 3D overlay receive the same dice list in the same order.
Take this notation to the 3D dice roller, your character sheets, or the Discord bot.
Open the dice roller
Comments & Labels
Attach a label to any roll — perfect for naming attacks and damage types. Comments never affect the math.
Line comments
// · #// labels a full expression; # works directly after a die notation.
Block comments
/* */ · [ ]Wrap text in /* */ or [ ] anywhere in the notation.