Last EpochEpoch DPS

Alpha

Paste a lastepochtools.com build-planner link and get an estimated per-skill DPS breakdown.

What is Epoch DPS?

Epoch DPS is a free, per-skill damage calculator for Last Epoch. Paste a lastepochtools planner link and it breaks the build down skill by skill, showing what each one does against a target rather than a single sheet number.

Sheet DPS is the naive hit-times-attack-speed-times-crit figure. Effective DPS accounts for what actually lands over time: ailment stacks, damage-over-time, minions, transforms, echoes, hit chance, and the target's defences. For most builds the two are a long way apart, and the gap is usually where the build lives.

This is an alpha. The numbers are estimates meant for comparing builds and finding what scales, not exact in-game readouts. Expect rough edges, and check the assumptions panel for anything the engine hasn't modelled yet.

How it works

  1. Paste a planner link

    Drop in a lastepochtools planner link (or just the code). Epoch DPS pulls the build straight from lastepochtools' public planner API.

  2. Read the per-skill breakdown

    Every skill, sub-skill, and ailment gets its own effective DPS and a full stat breakdown, so you can see exactly what carries the build.

  3. Tune and share

    Adjust the assumptions — target, ailment stacks, roll mode, conditional buffs — then share the /b/ link so anyone can open the same result.

FAQ

How accurate are the numbers?

It's an alpha. The engine aims to land within a few percent of what lastepochtools' own offence tab reports for global stats, but per-skill effective DPS is a model, not a measurement. Treat every figure as an estimate for comparing builds and finding what scales — not a guaranteed in-game readout.

Why are my numbers higher than lastepochtools?

By default Epoch DPS rolls every affix and implicit to its maximum — the build ceiling — so it usually sits above lastepochtools, which shows the average of each roll range for planner builds. Switch the roll mode to Average to compare like for like.

What does it actually model?

Direct skills, sub-skills (cast-on-hit and procs), ailments and damage-over-time, minions and their own skills, player transforms such as Werebear and Swarmblade, and echo repeats. Scaling from stats, tags, tree nodes, idols, affixes, uniques, and conditional buffs is folded into each skill's breakdown. Some mechanics still aren't modelled — those are flagged in the assumptions panel.

How does sharing work?

Every analysed build gets a stable link at /b/<code>, where the code is the lastepochtools planner code. Send that link and whoever opens it sees the same per-skill breakdown. No account needed.

Is it free?

Yes — free, no ads, no account, no paywall. It's a community tool built by a Last Epoch player for other players.

Is this affiliated with Last Epoch or lastepochtools?

No. Epoch DPS is an independent, unofficial tool. It is not affiliated with, endorsed by, or connected to Eleventh Hour Games (the makers of Last Epoch) or lastepochtools.com. Build data is fetched from lastepochtools' public planner API; all trademarks belong to their respective owners.

Changelog
July 27, 2026
  • the ≥1-curse detection behind Harvest's double-damage-to-Cursed, Symbol of Loss, and the 'against Cursed' leech/crit lines now counts only curse SEEDERS — a build that can actually put a curse on a clean target. A curse is defined strictly by the game data (an ailment flagged curse:true — Marked for Death, Exposed Flesh, Spirit Plague, Bone Curse; Doom and Frailty are NOT curses and never count), applied by a hitting skill or item, a curse skill cast directly, or a granted curse whose trigger doesn't need an already-Cursed target. A pure PROPAGATOR (e.g. Another Affliction's 'Chaos Bolts' hits against Cursed enemies cast Bone Curse', which can only fire on an already-Cursed target) no longer counts as cursing on its own — a build whose only curse was such a propagator loses the wrongly-earned double/Symbol-of-Loss credit, while builds that apply a real curse (including via node text like Flay's Scent of Death → Marked for Death) are correctly detected. The assumptions ledger now names the seeders and lists any excluded propagators
  • Flay's Deadly Plot ('Flay and all skills triggered by its skill tree deal more spell damage per 100 maximum mana') is now scoped correctly — the bonus stays a MORE multiplier (was mistakenly applied as increased) and reaches only Flay, its Blood Eruption, and the skills Flay's tree triggers (Chaos Bolts from Chaos Rip, Marrow Shards from Marrow Gnawer), lifting those proc'd casts. A directly-cast Chaos Bolts and unrelated spells like Aura of Decay no longer receive it, and Blood Eruption no longer double-counts the bonus
July 26, 2026
  • damage-type conversions now also re-type your on-hit ailment chances — when a skill's damage is converted (Blood Font Poison→Physical, Crimson Death Necrotic→Physical, Call of Morditas Fire→Cold, and so on), its matching on-hit ailment chance follows: poison chance becomes bleed chance under Poison→Physical, ignite becomes frostbite under Fire→Cold, etc., at the same chance, and the new ailment then scales with the new type's damage-over-time stats. Nodes that already spell out an ailment conversion (Soul Ripper bleed→damned, Frostblight, Corrupted Blood) keep their stated behavior. Partial conversions re-type that fraction of the chance. This makes Aura of Decay's Blood Font builds inflict bleed (its '75% Bleed Chance Effectiveness' now applies to the converted chance) instead of poison, and re-types Warpath/Spirit Thorns ailments on element-converted builds
  • 'Armor Shred Stacks' nodes (Werebear's Army Sunderer on Rampage/Maul, Abyssal Echoes' Rippling Corrosion) are now recognized instead of showing as unrecognized modifiers — they register the skill as an armour-shred source, contributing the armour-reduction bonus to your hits. Separately, Rage income/cost lines ('+Rage Gained On Hit' and rage costs on Werebear/Maul/Swipe/Rampage) are now recognized as not-DPS-relevant — Rage is assumed sustained for boss fights, so it never gates your damage
  • Tempest Strike's Gladiator of Lagon buff ('+Shared Spell Damage Buff') is now recognized instead of showing as an unrecognized modifier — the flat added spell damage is applied to both you and your minions; the companion node that doubles this buff's effect on minions with 50+ Intelligence is flagged as not-yet-modeled (a minion-buff-effect refinement) in the assumptions ledger
  • Warpath's Abyssal Tempest node ('while spinning, you cast Abyssal Echoes every 5 seconds') is now recognized instead of showing as an unrecognized modifier — Abyssal Echoes is modeled as an auto-cast at a fixed 1-per-5s rate while channelling Warpath, adding its damage when Abyssal Echoes is a specialized skill on the build
  • Reap's Death's Door node ('Reap deals more damage for each percent of health you are missing') is now recognized instead of showing as an unrecognized modifier — modeled as a multiplicative bonus scaling on your missing-health percent, which is 0 for a full-health build (so it stays inert vs the boss dummy) and rises for low-life builds, using the same missing-health basis as the Lich mastery scaler
  • Frost Wall's 'Enemy Targets' and 'Maximum Frequency Bonus' nodes are now recognized instead of showing as unrecognized modifiers — both drive the wall pillars' Lightning Blast auto-casts (a positional multi-target effect not modeled for single-target boss DPS), so they're flagged as not-DPS-relevant in the assumptions ledger rather than warning
  • Healing Hands' Cleric's Hammer node ('when you directly use a melee attack and hit an enemy, you have a chance to cast Healing Hands around the target') is now recognized — Healing Hands is modeled as a melee-hit-triggered proc (rate = your melee hit rate × chance) when it isn't your main cast, so its Searing Light fire hit contributes; and Divine Barrier's '20% Healing Conversion' is recognized as a heal-into-ward (defensive) effect rather than an unrecognized modifier
  • Shadow Rend's Breaking Force node ('the shadow's attack has a chance to shred armor on hit, doubled with a bow') is now recognized instead of showing as an unrecognized modifier — it registers Shadow Rend as an armour-shred source, so a build whose only armour shred came from this node now gets the armour-reduction bonus to its hits (builds that already shred armour elsewhere are unchanged, since armour shred is assumed maxed once any source is present)
July 25, 2026
  • leech aggregation corrected to match the game's Health Leech stat — skill-tree leech is now counted (a general '+N% <Type> Leech' node like Marrow Shards' Marrow Hunger was being dropped; a skill-scoped one like Flay's Go For The Throat now leeches only its own skill's damage), and 'Increased Health Leech' is no longer folded into the leech% (the game shows base leech% and it boosts leech rate, not amount). Together these land the reference Lich build on its true 30% health leech (was 34.9%), which feeds Hollow Lich's per-1%-leech damage and the Scornful Blood drain
  • Chaos Bolts' Chance of Snow node ('6% Chance for Double Hit Damage against Chilled') is now modeled — its hits get an expected-value boost (a 6% chance of double damage = ×1.06 on the hit) when the build applies chill (the node's own Chill Chance counts), assumed maintained on the boss; the boost is hit-only (bleed/damage-over-time untouched) and rides Chaos Bolts wherever it's cast, including proc'd copies
  • Aura of Decay's Blood Font node ('75% Bleed Chance Effectiveness') is now recognized instead of showing as an unrecognized modifier — your chance to inflict bleed now applies to Aura of Decay at 75% effectiveness, so on builds where the aura inflicts bleed its bleed stacks drop by a quarter (its inherited-chance penalty for the poison→bleed conversion)
  • stale build saves are now handled gracefully — skill-tree points allocated beyond a node's current maximum (from a save made before a tree rework) are clamped to the live maximum, and points allocated to a node that no longer exists are ignored; both surface a plain warning naming the node. Clamping fixes over-counted damage where a now-smaller node still carried its old point total (e.g. Flame Reave trees with 4-5 points in nodes whose maximum is now 1)
  • Devouring Orb's Abyssal Rush node ('while moving, automatically cast Devouring Orb') is now recognized instead of showing as an unrecognized modifier — Devouring Orb is modeled at its cooldown-gated cast rate (its 4s cooldown, reduced by any cooldown recovery) scaled by movement uptime, assumed 100% for the constantly-moving Warpath spin builds that run it (adjustable in the mechanics registry)
  • Harvest now deals double damage to Cursed enemies — its inherent ability effect, previously unmodeled. On a build that applies at least one curse (the boss is assumed cursed full-time), Harvest's hit — direct and proc'd — is doubled; a curse-less build sees no change, and the double never touches Harvest's own bleed/damage-over-time. Harvest's Symbol of Loss (more damage against Cursed enemies) is likewise now gated on applying a curse, so curse-less Harvest builds no longer over-credit it
  • 'Physical Penetration with Bleed' and the other 'Penetration with <Ailment>' effects (e.g. Double Edged Scythe, and 'Void Penetration with Doom') now correctly apply to that ailment's damage-over-time instead of your hit — matching the in-game stat (it belongs to the ailment, not the strike). Damage-over-time resistance still floors at 0, so this helps mainly against resistive enemies
  • Flay's Blood Eruption sub-skill now models its tree wires — Bloodsoaked Blade adds a fraction of your equipped axe/dagger flat melee damage (weapon implicits + affixes only) as flat spell damage to the eruption (previously mis-read as a small increased-damage bonus), Thirst of Dread's flat spell damage is doubled when a bleeding enemy is near (assumed, since the boss bleeds), Plasma Fountain's eruption-damage bonus and Deadly Plot's more-spell-per-100-max-mana still apply, and the eruption now triggers on every second Flay melee hit against a boss or rare (so it doesn't fire against non-boss targets) instead of at Flay's full hit rate — a large per-hit increase for Warlock Flay builds
  • culling is now modeled — a build with a cull effect (e.g. Harvest's Finality: enemies below ~13% health are instantly killed) shows its kill-equivalent DPS: the culled slice of the target's health is free, a ×1/(1−cull%) multiplier on the build total (labeled separately, never folded into the per-skill numbers, with a cull-immune enemy toggle for bosses that resist it). Detects cull from skill-tree Kill Threshold nodes (Finality, Swipe's Culling, Rive's Coup de Grace, Bone Curse's Brittle Bones, ...), base-ability data, and gear lines; culls don't stack, so the highest threshold among your actively-hitting skills governs
  • leech-drain damage (Scornful Blood, Fangs of the Berserker) is now recursive — the drain is itself damage you deal, so it re-triggers your leech (probe-proven geometric series, ~×1.4 on the reference build); typed leech lines ('X% of Void Damage Leeched') are now counted against that type's damage share, and overkill leech is flagged as dead vs bosses instead of silently dropped
  • damage-over-time now stops benefiting from resistance reduction once the target reaches 0 resistance — penetration and shred still help your DoTs against resistive enemies (down to 0), but over-penetration below 0 amplifies hits only, not DoTs (in-game measured: the reference build's bleeds ticked at sheet value on the 0-resistance dummy while its hits amplified)
  • extra spread projectiles ('+N Additional/Extra Projectiles', e.g. Frost Claw's Hand of Morditas) now all land on a real boss instead of getting half credit — the earlier half-credit was a training-dummy artifact (its small hitbox catches only part of the fan), so the engine now models the real-boss ceiling (Frost Claw '+2 Extra Projectiles' → 3 hits/cast); Explosion Tendrils, forks, and chains still add nothing on a single target since they reach outward, not from a hitbox limit
  • derived stack and proc rates now read your real (throttled) cast rates under the mana alternation cycle: a proc off a spender/generator (e.g. Flay → Chaos Bolts) rates off that skill's sustained rate rather than its un-throttled ceiling, and indirect casts stay outside the mana economy so they aren't double-counted; Undisputed's melee-hit stack count now includes indirect/proc'd melee hits (e.g. Harvest proc'd via Chaos Bolts), per its 'all melee attacks' wording
  • dual-spam builds now model the real cast cycle: the generator's swing is animation-canceled at its damage point when you alternate skills (timing read from game data), and the spender/generator split counts casts, not time — matching in-game measured cast rates for Flay + Harvest (A21Ke939 Flay ~2.3→3.2/s, direct Harvest ~1.7→1.9/s)
  • added Excoriation logic — Army of Skin's stacks grant Flay and Harvest +5 Melee Damage per stack, held at the 13-stack cap vs bosses (the boots gain a stack on every Flay hit against a boss), plus the per-stack chance for Flay hits to cast Rip Blood
  • calibrated the dual-spam mana economy against in-game measurement — a generator/spender build that can't sustain its cast rate (e.g. Flay + Harvest) now splits casts by the steady-state alternation share = return/(cost+return) (each generator cast funds return/cost spender casts) instead of the old raw-flow time-share, with per-cast cost and return read from the data (skill mana cost incl. tree nodes, mana-gain affixes, and skills' intrinsic on-hit mana return like Mana Strike's +15/hit); a predictive current-mana LEVEL now drives 'while above X% mana' and 'per current mana' effects (Star Guide's doubling, Mana Spark) — income vs spend incl. mana consumed by procs — so a mana-starved spam build correctly reads hover-low; and leech drains (Scornful Blood, Fangs) now scale off the damage you actually DEAL (post-crit, post-mitigation hit + DoT), landing in the millions instead of a pre-crit estimate
  • generic 'X% of damage leeched as health' lines with no damage-type qualifier (e.g. the Lich mastery innate) now leech off your damage-over-time output too, not just hits — so a leech-redirect build (Scornful Blood) credits its DoT damage into the drain
  • added Scornful Blood logic — 'instead of healing you, your leech drains the health of an enemy' now converts your total health leech (every source: gear, passives, skill trees, and the Lich mastery innate, scaled by any 'Increased Health Leech') into an unmitigated damage-over-time card named after the node; DoT-scoped leech (Essence Devourer) drains off your ailment damage, 'against Cursed' leech rides your curse detection, minion leech stays out of your pool, and Hollow Lich's '2% Increased Damage Per 1% Leech' rides the same aggregated total. Generalizes the Fangs of the Berserker leech-drain model to the 100% redirect
  • curses and aura nodes that reduce enemy resistance (Marked for Death −25% all, Exposed Flesh −15% cold, Aura of Decay's Vulnerability −15%) now lower the target's resistance — at full value vs bosses — and are re-typed by your damage conversions (Blood Font turns Vulnerability into −15% enemy PHYSICAL resistance); resistance shred a skill applies is likewise re-typed when the skill's own damage is converted (Harvest's Harrowing Blade necrotic shred becomes physical shred under Crimson Death)
  • added 'chance per N maximum mana to release <Skill>' proc logic (e.g. Flay's Chaos Rip: each Flay hit releases maxMana × 1% Chaos Bolts) — the released skill is now cast as an indirect proc scaled by your maximum mana, driving its downstream proc chains (Chaos Bolts → Harvest via Reaper of Mayhem). Previously this was unmodeled, so a build whose main damage comes from that proc chain was massively under-counted; these indirect casts correctly sit outside the mana economy (they aren't throttled)
  • Harvest's Death Inside now scales '+15% more hit damage per unique ailment' by the actual number of distinct ailments your build inflicts on the target (bleed, poison, doom, chill, etc.), capped at the node's Maximum Damage Bonus (+90%) — previously it applied a flat +15% regardless of how many ailments were on the target
  • '−X% Enemy <Type> Resistance per <Attribute>' effects (e.g. Aura of Decay's Fume Weaver: −1% enemy poison resistance per Intelligence) are now applied, and are re-typed when the aura's damage is converted (Blood Font turns Fume Weaver into −1% enemy PHYSICAL resistance per Intelligence) — a large physical amplifier that was previously ignored
  • added Undisputed logic — the unique axe's '5% increased Physical Damage for each recent Melee Hit against a Bleeding enemy (up to 255%)' now ramps as a stacking increased-physical buff whose stack count is derived from the build's melee hit rate over the 4s 'recent' window (capped at +255%), assuming the target is Bleeding
  • a skill node that converts the skill's damage type and swaps its damage tag (e.g. Harvest's Crimson Death 'Necrotic → Physical', Aura of Decay's Blood Font 'Poison → Physical') now re-types the skill's inherent flat damage (its per-attribute/base flat) to the new type, so it scales with the new type's increases and penetration instead of the old type's — previously that inherent flat kept the pre-conversion type and missed the converted scaling
  • a specialized skill that isn't on your action bar is no longer modeled as actively cast — its phantom cast (and any skills it would proc) is dropped, fixing large over-counts on builds that specialized an extra skill without slotting it (e.g. an off-bar Chaos Bolts that was proc'ing Harvest). Skills genuinely proc'd by an on-bar skill still count, and builds with an unreliable action-bar record (duplicate slots) or a transform are left unchanged
July 21, 2026
  • proc'd-skill rate caps phrased as 'this effect can occur a maximum of N times per second' (e.g. Reaper of Mayhem's Chaos Bolts → Harvest) are now respected — previously only 'N Maximum <Skill>s per second' was parsed, so these procs ran uncapped and were over-counted
  • extra spread projectiles ('+N Additional/Extra Projectiles', e.g. Frost Claw's Hand of Morditas) now add partial single-target hits (in-game measured ~half of each added projectile lands on a lone target) instead of being ignored; Explosion Tendrils, forks, and chains still add nothing on a single target since they reach outward
  • a skill that 'Automatically Casts on Melee Attack' (e.g. Enchant Weapon) is now capped by its own cooldown instead of firing on every melee hit — a self-cast can't outpace the skill's cooldown
  • Enchant Weapon's Icicle Strike now casts Ice Shard as a melee-hit proc at its real rate (capped by 'Limit per 2 Seconds') with its chance weighted by Enchant Weapon's actual uptime — buff duration plus Active Duration nodes over the cooldown reduced by cooldown recovery — instead of firing at Enchant Weapon's cast rate; also fixes Ice Shard scaling to ignore Enchant Weapon's own tree, matching the node
  • passive/gear 'X% <Skill> Chance On Hit' now casts that skill off all your hits (rate scaled by your total hit rate), and 'X% <Skill> Chance Per Second' fires it periodically — previously only skill-tree proc sources were counted, so passive/gear procs of an equipped skill (e.g. a passive that casts Frost Claw on hit) were ignored
  • Spark Charge apply-chance from passives (e.g. Storm Blade's 'Spark Charge Chance with Lightning Melee Attacks') is now counted for every qualifying skill instead of being ignored — previously only gear/idol and per-skill-tree sources fed the Spark Charge model, so passive appliers were dropped
  • 'X% Res Shred Chance Per Second' modifiers now register as a shred source instead of surfacing a bogus 'Per Second' toggle — the shred still applies (assumed at max stacks), the phantom input is gone
  • 'X per Enemy Hit' self-buffs like Rune Sap now derive their stack count from how fast the granting skill hits (hit rate × the buff's duration) instead of asking — e.g. Mana Strike's 'Global Spell Damage Per Enemy Hit' scales with Mana Strike's hit rate, and the boss/rare doubling is applied
  • 'X% damage per 1% uncapped resistance' modifiers (a common Last Epoch pattern, any resistance type) now scale automatically from your uncapped resistance instead of appearing as a manual toggle
  • 'per Complete Set' scaling (Legends Entwined, etc.) is now derived from your equipped sets instead of being a manual toggle
  • primary-skill detection no longer picks a low-damage utility skill over the skill you actually spam — a candidate carrying under 10% of the top skill's own DPS can't be the detected primary (e.g. detects Mana Strike, not Static Orb)
  • changelog date sections are now collapsible — the newest date stays open, older dates start collapsed
  • modifiers with two conditions now keep BOTH (e.g. Nightbringer's 'hit damage to Blinded Enemies with Multishot') — previously the second condition was dropped; both must now be satisfied and their stack scaling combines
  • added Lethal Concentration logic — 'N% of Player Poison Damage Applies to Skeleton Rogues / your Falcon' now feeds the player's typed added and increased damage onto the named minion
  • added '+X Damage Over Time' logic — flat added damage-over-time now boosts every matching-type DoT ailment the build inflicts (e.g. The Ghost Maker)
  • Omen of Thunder's '+Spell Lightning Damage for all existing totems' is now counted — the 'all existing' wording was previously dropped
  • corrected Crystalwind, Unearthed Memories, and Lament unique text against lastepochtools — added Crystalwind's bow scope, Unearthed's 'against cursed enemies' restriction, and Lament's missing Spell Void Damage line
  • corrected Spark Charge damage — now uses the explosion's base (20 lightning, 100% added-damage effectiveness) and its +4% damage per Intelligence, fixing a large under-count on Spark Charge builds (in-game validated within 3%)
  • changelog now groups changes under a date header instead of repeating the date on every line
  • fixed Hand of Judgement's '+X Melee Damage per Attunement for Judgement' — now scales by Attunement and applies only to Judgement (was a flat bonus applied to every skill)
  • corrected 'while Unarmed' detection — now requires no weapon in either hand (a Shield or Off-Hand Catalyst still counts as unarmed, and an off-hand weapon now correctly counts as armed), fixing Hand of Judgement and similar unarmed-gated mods
  • fixed dropped skill-scoped flat damage on uniques/idols — mods like '+52 Melee Damage for Shield Bash' and '+18 Spell Damage for Storm Bolt' are now counted for that skill instead of being ignored
  • fixed Fragment of the Enigma's Spark Charge modifier — now applied as a multiplicative 'more' scoped to melee appliers (was counted as additive 'increased' and applied to all appliers), matching the in-game tooltip
  • corrected Shield Throw ricochet model (in-game validated): count the return-to-you bounce toward Lava Burst procs, and only count single-target return hits — fixes a ~35% DPS under-prediction on ricochet builds
  • new engraved masthead + typographic refresh
  • replaced emoji icons with custom sigils
  • class-colored build identity + timeline divider
  • added a DPS composition bar
  • fixed dropped damage/ailment conversions on tree nodes that also carry a structured stat (e.g. Upheaval's Glacial Cascade phys->cold)
July 19, 2026
  • added Berserk and Aspect of the Panther buffs
  • transform rotation now honors attack speed
  • fixed Wildfire Embers fire penetration over-count
  • fixed sub-skill damage inheritance (Shatter Totem, Explosive Ground)
July 18, 2026
  • added Bhuldar's Wrath logic
  • added Laup's Path logic
  • added transform skill cards — per-kit-skill breakdowns with cooldown rotation
  • updated logic for detecting primary skill on build
  • fixed shared ailment stack caps across proc'd skills
July 17, 2026
  • idols in refracted slots now detected automatically from the altar layout
  • launched epoch-dps.com