Calculating Damage Per Second (DPS) in Path of Exile (PoE) is notoriously complex due to the layering of mechanics such as "Increased" versus "More" multipliers, critical strike scaling, and accuracy ratings. This tool simplifies the mathematics used by the game engine to help you estimate your output without importing your character into complex third-party software.
How the Calculation Works
Understanding the hierarchy of damage modifiers is crucial for optimizing your build:
Base Damage: This is the flat damage range on your weapon or spell, plus any flat damage added by gear (e.g., "Adds # to # Physical Damage to Attacks").
Increased Damage (%): These are additive modifiers. If you have 50% increased from the passive tree and 50% from gear, your total is 100% increased (2x damage).
More Damage (%): These are multiplicative modifiers, typically found on Support Gems (e.g., Melee Physical Damage Support). These multiply your total damage after "Increased" modifiers are applied, making them extremely valuable.
Critical Strikes: DPS is averaged over time. The calculator determines a "Crit Factor" based on how often you crit and how much extra damage a crit deals (Multiplier).
Accuracy: If your Hit Chance is below 100%, your DPS is directly reduced by that percentage (e.g., 90% hit chance = 90% effective DPS).
Formula Reference
The core logic used in this calculator follows this simplified structure:
Cap Accuracy: Ensure your Chance to Hit is 100%. Missing attacks is the biggest hidden DPS loss for attack builds.
Seek "More" Multipliers: Prioritize Support Gems and Keystones that grant "More" damage rather than just "Increased" damage, as they offer diminishing returns.
Balance Crit Stats: High Critical Strike Chance is useless without Critical Strike Multiplier. Aim for a 1:10 ratio roughly (e.g., 50% chance, 500% multiplier) for high-end builds.
Attack/Cast Speed: This scales linearly. If you have slow, hard-hitting attacks, adding speed often feels smoother and safer than adding more raw damage.
Frequently Asked Questions
Does this account for Impale or Ailments?
No, this calculator focuses on Hit DPS. Ailments (Bleed, Poison, Ignite) and Impale mechanics require separate scaling formulas that depend on duration and stack limits.
What is "Effective DPS"?
Effective DPS usually refers to damage against bosses (like Guardian/Pinnacle bosses) which have resistance and damage reduction. This calculator shows your tooltip/hideout DPS potential.
How do I find my Base Damage?
Hover over your skill icon in the game (the tooltip). Look for the specific damage types (Physical, Fire, etc.) and add the ranges together to input the Min and Max totals here.
function calculatePoEDPS() {
// 1. Get Input Values
var minDmg = parseFloat(document.getElementById('poeMinDmg').value);
var maxDmg = parseFloat(document.getElementById('poeMaxDmg').value);
var aps = parseFloat(document.getElementById('poeAps').value);
var hitChance = parseFloat(document.getElementById('poeHitChance').value);
var incDmg = parseFloat(document.getElementById('poeIncDmg').value);
var moreDmg = parseFloat(document.getElementById('poeMoreDmg').value);
var critChance = parseFloat(document.getElementById('poeCritChance').value);
var critMulti = parseFloat(document.getElementById('poeCritMulti').value);
// 2. Defaulting and Validation
if (isNaN(minDmg)) minDmg = 0;
if (isNaN(maxDmg)) maxDmg = 0;
if (isNaN(aps)) aps = 1;
if (isNaN(hitChance)) hitChance = 100;
if (isNaN(incDmg)) incDmg = 0;
if (isNaN(moreDmg)) moreDmg = 0;
if (isNaN(critChance)) critChance = 0;
if (isNaN(critMulti)) critMulti = 150; // Base default in PoE
// 3. Logic Calculations
// Average Base Damage
var avgBase = (minDmg + maxDmg) / 2;
// Modifiers
// Increased is additive: 100% inc = 1 + 1 = 2x multiplier
var incMod = 1 + (incDmg / 100);
// More is multiplicative: 40% more = 1.4x multiplier (Simplified as one total bucket)
var moreMod = 1 + (moreDmg / 100);
// Accuracy Factor (Decimal)
var hitFactor = hitChance / 100;
if (hitFactor > 1) hitFactor = 1;
if (hitFactor 1) effCritChance = 1;
// Crit Multiplier comes in as percentage (e.g. 300% = 3.0x damage)
var effCritMulti = critMulti / 100;
// Avg Dmg Formula with Crit:
// Dmg = (NonCritChance * Base) + (CritChance * Base * CritMult)
// Which simplifies to: Base * (1 + CritChance * (CritMult – 1))
var critFactor = 1 + (effCritChance * (effCritMulti – 1));
// 4. Final Calculation
// Total DPS = AvgBase * IncMod * MoreMod * APS * CritFactor * HitFactor
var damagePerHit = avgBase * incMod * moreMod * critFactor;
var totalDps = damagePerHit * aps * hitFactor;
// 5. Display Results
var resultBox = document.getElementById('poeResult');
resultBox.style.display = 'block';
document.getElementById('finalDpsDisplay').innerHTML = totalDps.toLocaleString('en-US', {minimumFractionDigits: 1, maximumFractionDigits: 1});
// Update Breakdown
document.getElementById('resAvgHit').innerHTML = damagePerHit.toLocaleString('en-US', {minimumFractionDigits: 0, maximumFractionDigits: 0});
document.getElementById('resHitFactor').innerHTML = hitChance + "%";
document.getElementById('resCritFactor').innerHTML = critFactor.toFixed(2) + "x";
document.getElementById('resAps').innerHTML = aps.toFixed(2);
}