Reviewed by Chris Wilson, ARPG Mechanic Specialist | Last Updated: October 2023
Use this Path of Exile DPS Calculator to instantly determine the exact Physical, Elemental, and Chaos Damage Per Second of your weapons. Essential for crafting, trading, and build optimization.
Path of Exile DPS Calculator
Please enter a valid Attack Speed.
Total DPS
0.00
Phys DPS 0.0
Ele DPS 0.0
Chaos DPS 0.0
Path of Exile DPS Calculator Formula
The standard formula used to calculate the DPS (Damage Per Second) of a weapon in Path of Exile is derived by averaging the minimum and maximum damage and multiplying by the attack speed.
DPS = ((Min Damage + Max Damage) / 2) × Attacks Per Second
A Path of Exile DPS Calculator is a tool used by players to evaluate the offensive power of weapons found in the game. While the game tooltip provides a basic DPS figure, it often does not aggregate Physical, Elemental, and Chaos damage into a single metric that is easy to compare against other items.
This calculator helps players determine if a new drop is an upgrade (“raw DPS upgrade”) before applying complex modifiers from the passive skill tree or support gems. It is particularly useful for traders pricing items or players crafting high-end rare weapons.
How to Calculate Path of Exile DPS (Example)
Here is a step-by-step example of calculating the DPS for a sword with the following stats:
Identify Stats: Physical Damage: 50-100, Fire Damage: 10-20, APS: 1.5.
Calculate Average Physical: (50 + 100) / 2 = 75.
Calculate Average Elemental: (10 + 20) / 2 = 15.
Sum Average Damage: 75 (Phys) + 15 (Ele) = 90 Total Average Damage.
Multiply by Speed: 90 × 1.5 APS = 135 Total DPS.
Frequently Asked Questions (FAQ)
Does this include Quality?
Usually, players input the numbers visible on the item after quality has been applied. If you are crafting, apply quality scraps in-game to see the updated numbers before using this calculator.
Why is pDPS separate from eDPS?
pDPS (Physical) scales with modifiers like “increased Physical Damage,” while eDPS (Elemental) scales with “increased Elemental Damage.” Builds usually focus on scaling one specific type efficiently.
Does this calculate Poison or Bleed DPS?
No. Ailment DPS (Bleed, Poison, Ignite) relies on complex character stats, passive tree nodes, and gem links. This tool calculates the weapon’s local DPS only.
What is a good DPS for a weapon?
This depends entirely on the league stage and weapon type. In the endgame, two-handed axes often exceed 800+ pDPS, while one-handed foils may aim for 450+ pDPS.
/**
* Formats a number with commas and 2 decimal places.
* Used for displaying the final results.
*/
function bepFmtNum(num) {
if (isNaN(num)) return “0.00”;
return num.toLocaleString(‘en-US’, { minimumFractionDigits: 2, maximumFractionDigits: 2 });
}
/**
* Helper to get float value from ID. Returns 0 if empty or invalid.
*/
function bepGetVal(id) {
const el = document.getElementById(id);
const val = parseFloat(el.value);
return isNaN(val) ? 0 : val;
}
/**
* Main Calculation Logic
*/
function bepCalculateDPS() {
// 1. Get Inputs
const physMin = bepGetVal(‘bep-phys-min’);
const physMax = bepGetVal(‘bep-phys-max’);
const eleMin = bepGetVal(‘bep-ele-min’);
const eleMax = bepGetVal(‘bep-ele-max’);
const chaosMin = bepGetVal(‘bep-chaos-min’);
const chaosMax = bepGetVal(‘bep-chaos-max’);
const aps = bepGetVal(‘bep-aps’);
// 2. Validation
const apsError = document.getElementById(‘bep-aps-error’);
const resultArea = document.getElementById(‘bep-result-area’);
// Reset previous errors
apsError.style.display = ‘none’;
// Must have at least APS to calculate anything meaningful in PoE context
// Even if damage is 0, APS must be valid physics.
if (aps Max)
// In PoE, if Min > Max, the game usually treats it oddly, but for calc we swap or error.
// Let’s just assume user input might be messy and take Math.abs or just swap logic implicitly by averaging.
// Average = (A + B) / 2 is order independent.
// 3. Calculation
// Physical
const avgPhys = (physMin + physMax) / 2;
const physDps = avgPhys * aps;
// Elemental
const avgEle = (eleMin + eleMax) / 2;
const eleDps = avgEle * aps;
// Chaos
const avgChaos = (chaosMin + chaosMax) / 2;
const chaosDps = avgChaos * aps;
// Total
const totalDps = physDps + eleDps + chaosDps;
// 4. Update UI
document.getElementById(‘bep-final-result’).innerText = bepFmtNum(totalDps);
document.getElementById(‘bep-phys-result’).innerText = bepFmtNum(physDps);
document.getElementById(‘bep-ele-result’).innerText = bepFmtNum(eleDps);
document.getElementById(‘bep-chaos-result’).innerText = bepFmtNum(chaosDps);
// Show Result Area
resultArea.style.display = ‘block’;
// 5. Generate Steps
const stepsHtml = `