Unless stated otherwise, everything here is Diablo II: Resurrected build 3.3.93847, Reign of the Warlock.
Unless stated otherwise, everything here is Diablo II: Resurrected build 3.3.93847, Reign of the Warlock.

An attack takes a whole number of frames at 25 frames a second, and speed bonuses only matter when they cross the line into one frame fewer: that is a breakpoint. Between the number on your gear and the frames there are three steps, and the first one is a curve that makes every point worth less than the one before.
EIAS = ⌊120 × IAS ÷ (120 + IAS)⌋ − WSM + skill speed, held between −85 and 75
IAS is every Increased Attack Speed on your gear added together; the curve turns 20% into 17, 60% into 40, 120% into 60, and 200% into 75. WSM is the weapon's own speed modifier from weapons.txt (a Phase Blade's −30 makes it faster, a Thunder Maul's +20 slower; negative is faster, so it is subtracted). skill speed is Fanaticism, Burst of Speed or Frenzy, added after the curve at their full value, which is why an aura is worth far more than the same number on an item.
| Gear IAS | Effective |
|---|---|
| 20% | 17 |
| 40% | 30 |
| 60% | 40 |
| 90% | 51 |
| 120% | 60 |
| 200% | 75 (the ceiling) |
frames = ⌈256 × animation frames ÷ ⌊animation speed × (100 + EIAS) ÷ 100⌋⌉ − 1
The animation's frame count and base speed come from the game's animation data and differ by class, weapon class and skill; the Breakpoints tool holds all of them and reproduces the published tables. The same curve, without the weapon term, is Faster Cast Rate (ceiling 75), Faster Hit Recovery and Faster Block Rate.
Past the next breakpoint, extra IAS does nothing until the one after. The tool lists the exact gear value each frame count needs for your class and weapon; buy that number, not "more".
Attack speed does not change damage, chance to hit or the skill's own effect; it only changes how many attacks fit in a second. Sequence skills (Zeal, Fury, Strafe, Whirlwind) have their own timing rules the plain-attack tables do not cover.
Written from the game's tables (build 3.3.93847) and the cited pages; a per-level table is computed from skills.txt and skilldesc.txt by the same evaluator the skill pages use. A “legacy rule” is a published engine rule no table proves; a “game table” is read from the table named. · Report incorrect data