Attack Speed in Diablo 3 is a stat that determines how fast you can use different skills. It only affects skills that have a casting animation. You can check if particular skill has a casting animation by attempting to use it while moving. Skills with animation will make your character stop moving and wave their weapon around, while those without casting animation will just go off. You can see your current Attack Speed in Offense section of Details sheet accessible through your inventory, under "Attacks Per Second" (APS).
Your APS is calculated based on your weapon and your Increased Attack Speed (IAS) stat, that you can get from gear, skills, passives and various buffs.
Weapon Attack Speed depends on weapon's type and ranges from 1.0 on Two-Handed Maces to 1.6 on Hand Crossbows. "Increases Attack Speed by X%" affix on the Weapon itself is not added to your total IAS but calculated into that weapon's Attack Speed instead. Effectively that means that IAS roll on Weapon is multiplicative, while all other sources of IAS provide additive bonus. There are 3 sources of attack speed that break this rule:
- Skeletal Mage Skeleton Archer and Bone Spear Crystallization: instead of providing +3% IAS per stack as the tooltip claims, these skills directly increase your Weapon APS by 0.03 per stack.
- Flying Dragon: this item directly doubles your Weapon APS for 7 seconds when its effect procs.
- Stone Gauntlets: reduce your total IAS (100% + sheet IAS) multiplicatively by 20% per stack. The magnitude of this effect is affected by your Crowd Control Reduction.
Calculating your total APS is best done in two steps. First we calculate Weapon APS:
And then we calculate the total IAS shown in your character sheet to get APS:
When dual wielding you get a separate APS for each weapon calculated the same way.
There's two caps related to Attack Speed:
- Your APS cannot exceed 5.0
- Your IAS cannot go below -90%
Skill Attack Speed
Apart from general IAS bonuses, there's items and passives that give attack speed bonuses only to specific skills (Yang's Recurve, Johanna's Argument) or groups of skills (Alacrity, Oathkeeper). These bonuses are all multiplicative and you simply need to multiply your sheet APS by all such bonuses to get the APS for the particular skill.
On top of that some skills have a hidden Attack Speed Coefficient that acts exactly like one of these bonuses - as a separate multiplier to your skill's APS. Most skills have this value set to 1.0, that is no bonus at all, but for some (mostly channeling skills) it can be very significant (3.0 for Disintegrate, 4.0 for Strafe, 5.0 for Corpse Lance). Skill's APS and Attack Speed Coefficient are not displayed anywhere in-game, so you need to calculate them manually.
Server Ticks and Animation Length
Now that we have a skill's APS value how do we calculate from it our actual attack speed? The name "Attacks Per Second" implies that when we have APS of 2.0 we can use a skill 2 time per second. That's is roughly correct but, as usual, the devil is in the details. What APS does is it determines how long the casting animation of our skill will be. But it can not be just any arbitrary number.
The game engine recalculates the state of the game 60 times per second. That gives us shortest possible unit of time in Diablo III: 1/60th of a second or 16.7ms. This is commonly referred to as "Tick" or "Frame". Time can only be measured in Frames, which means that when we want to determine how long something takes (be it cooldown, duration of a buff, or a certain animation), we can only get a number of Frames as an answer. It can be 1 Frame or it can be 10000, but it must always be an integer.
So when we want to know how fast we can attack with a certain skill we need to know its animation length in Frames, commonly referred to as FPA (Frames Per Animation). Once we know the FPA we can calculate our true attack speed for this particular skill i.e. the number of times we can use this skill within 1 second. It's simply equal to the number of Frames in 1 second (60) divided by FPA.
Attack Speed Breakpoints
The general formula to get FPA out of skill's APS is very simple and straightforward.
This formula changes a bit for some skills that have a different base animation length, but then it becomes too complicated. To get the exact FPA values and Attack Speed brackets for each skill you can visit the D3planner (without Adblock) and mouse over the "Breakpoint" under skill's description.
Important part of that formula is that the answer is rounded down. This is where Attack Speed Breakpoints come from. It's easiest to demonstrate this on very high attack speed values.
Let's say we're playing a Demon Hunter with Strafe and we have a ton of IAS from somewhere (for example Pain Enhancer) so that our APS is 3.2. Since Strafe has an Attack Speed Coefficient of 4.0 it's APS is . Putting that into FPA formula we get and that gets rounded down to 4. Meaning our Strafe fires a shot 15 times a second! However, we don't need to get so much APS to get this FPA. We got 4.68 but any value greater or equal to 4 but smaller than 5 will yield the same result after rounding.
Starting from this range we can go backwards through our formulas and calculate APS values that let us reach 4 FPA.
This gives us an Attack Speed Breakpoint: 3.0 APS. Going just a tiny bit above it will give us 4 FPA, while staying exactly at 3.0 APS or dipping below will only get you 5 FPA. The difference between the two is 15 vs 12 shots per second, so in a right situation just a tiny bit of Attack Speed can give you 20% DPS. Of course, there's also a downside to this system: if you go from 3.001 APS all the way to 3.75 you get absolutely nothing! That's why you always want to make sure your APS is just above one of the breakpoints and none of the IAS rolls are wasted.
Attack Speed can be fairly complicated and in-game tooltips provide basically no information to help you. The best way to deal with that problem is to use the D3planner (without Adblock) and check the Breakpoints on your particular build. On most builds, that attack 2-4 times per second, this is not terribly important, but wasting stats is never good and getting some 5% DPS for free can also be very helpful. However the Breakpoints become a lot more important for fast attacking builds such as Corpse Lance Necro, Frenzy Barb or Invoker Crusader.
Written by Northwar.
Reviewed by Raxxanterax.
Updated for Season 26 / Patch 2.7.3