AusCraft / Diablo IV ← all tools
Checking for the screenshot reader…
Drop a screenshot of your character here
— or click to browse
Saved in this browser — gear, item pictures, portrait and name. Set it up once.

01 Weighing a drop

Pick the slot it would replace and paste the new item — drag its screenshot in, or type the lines. Your saved gear above stays untouched.

Add a candidate item to see whether it's an upgrade
The math character sheet numbers, stat weights, buckets, self-tests
Read this before you type anything. Every number here comes off your character sheet, not off individual items. The sheet already has your paragon board, glyphs, skill tree and gear summed into it — so seeding from the sheet means paragon and skills are already accounted for. Turn on Options → Gameplay → Advanced Tooltip Information first. When a tooltip shows two numbers (Critical Strike Damage, Vulnerable Damage), always take the bottom one. The top one is already inflated by your multipliers and will double-count here.

01 Character, weapon, skill

The base of the chain. Weapon damage and Skill% set the size of the hit; main stat is its own independent multiplier that nothing else dilutes.

Weapon

Skill

Calibrate the class coefficient yourself

Coefficients change between patches, so don't trust any hardcoded number — including mine. Hover your main stat on the character sheet. It says +X% Skill Damage. Type both values here and this gives you the coefficient that is true right now, for your patch.

02 The additive bucket [+]%

One shared pot: Close, Distant, Core Skill, Damage to X, Damage vs X, most tempers, weapon implicits, and the additive half of paragon. This is the only place diminishing returns live. At +2000% in the pot, another +60% Close Damage is worth 2.85%.

Conditional additives

Name
[+]%
Uptime %

A +60% bonus you only meet 25% of the time averages to +15% additive. Set uptime honestly or the tool lies to you.

03 Crit, Vulnerable, Overpower

These are enumerated as real branches, not averaged. That matters: [+]Crit Damage sits inside the additive pot but only counts on a crit, and is then multiplied by the crit-only multipliers. That interaction is why "+150% Crit Damage" loses to "+100% unconditional additive" at 40% crit chance.

Overpower — leave proc at 0 if your build ignores it

The Overpower tooltip hides a large chunk of your real bonus. You get +1% Overpower Damage for each 1% of current life above base life, plus +1% for each 1% of Fortified life — neither is on the tooltip. Add those into the field above.

Summed multipliers — affixes containing the word "Multiplier"

The word Multiplier in the affix text is the tell. x56% Critical Strike Damage Multiplier sums with others of its kind and then applies once. x56% Critical Strike Damage without that word is a separate global multiplier — that one goes in panel 04.

Baselines are built in and cannot be raised by anything: a crit carries an inherent x50%, a Vulnerable target an inherent x20%.

04 Global multipliers [x]%

Aspects, uniques, paragon rare and legendary nodes, skill mods. Each one multiplies independently, so these never dilute each other. Set the condition to crit or vulnerable to route the multiplier into that branch — then leave its uptime at 100, because the branch already handles how often it fires. other is uptime-averaged.

Name
[x]%
Condition
Uptime %

Attack speed

Two separate caps of 100% each. They add — they do not multiply. Anything past a cap is thrown away. ApS = WeaponApS × (100% + min(Cap1,100%) + min(Cap2,100%))

05 Where your damage comes from

Average damage per hit
Average damage per second
Attacks per second

The bar shows how much damage you would lose if that link vanished entirely. A long bar means that link is carrying you. A short bar means the next point you spend there is nearly wasted.

Rolls carry roughly 80–120% weapon variance compounded with 90–110% skill variance, so a single hit swings from about 72% to 132% of this. The number above is the average, which is the only thing worth comparing gear on.

06 What one more point is worth, right now

Marginal gain at your current totals — this is the entire point of the tool. The same +60% Close Damage is a 60% gain on a fresh character and a 2.85% gain at +2000% additive.

StatPer pointPer typical roll

Attack-speed weight here is the naive continuous value. Real DPS only moves when you cross an animation breakpoint. Check your skill's breakpoint table before you buy attack speed — between two breakpoints it is worth exactly zero.

Equivalence

07 Gear comparison

List only the affixes that differ. A is what you are wearing, B is the drop. Values are deltas on top of the character above — so if the new ring loses the old ring's 40% crit damage, that 40% goes on side A.

A — currently equipped

B — the drop

B versus A, change in average DPS
SideAffixValueWorth on its own

Attack-speed breakpoint override

If the swap changes attack speed, continuous ApS lies to you — DPS only moves at animation breakpoints. Look up the frame counts for your skill before and after, and the comparison will use framesA ÷ framesB instead.

08 The formula this implements

Damage = AvgWeaponDamage
       × Skill%
       × (1 + MainStat / ClassCoefficient)
       × E[ (1 + Σ[+]additive + branch additives) × branch multipliers ]
       × Π(1 + each [x] global multiplier × its uptime)
       × (1 + Σ summed multipliers in the active category)
       × (1 − EnemyDamageReduction)

DPS    = Damage × WeaponApS × (1 + min(Cap1,100%) + min(Cap2,100%))

E[...] enumerates all 8 combinations of crit / vulnerable / overpower
       rather than averaging them, because [+]Crit Damage lives inside
       the additive pot but only pays out on a crit.

crit branch       : p = crit chance,      +[+]CSD,  × 1.5 × (1+ΣCSD mult) × Π(crit globals)
vulnerable branch : p = vulnerable uptime,+[+]Vuln, × 1.2 × (1+ΣVuln mult) × Π(vuln globals)
overpower branch  : p = overpower chance, +[+]OP,   × (1 + 0.5 × currentLife/maxLife)

Flat-damage effects (X'Fal's, Thorns) replace AvgWeaponDamage × Skill% with their flat number. Model those by setting Skill% to 100 and both weapon min and max to the flat value. Main stat still applies to them.

10 Self-test — checks that either pass or fail

These are Maxroll's published worked examples, run as real assertions against the same compute() the rest of this page uses. They run automatically every time you open the file. If a change to the math ever breaks one, a red banner appears at the top of the page — you don't have to remember to check. Each test builds its own character from scratch, so running them never reads or changes the numbers you typed above.

not run
CheckExpectedGotResult
What to do when one goes red. The number under Got is what the code now produces; Expected is what the published source says it must produce. Either the last change to compute() was wrong, or the game changed and the source needs re-reading — in that order of likelihood. Don't edit the expected value to make the light go green.