Every unit has a base attack time (BAT), which refers to the default interval between attacks for an unbuffed unit with 0 agility and no attack speed bonus. For example, a melee lane creep has a BAT of 1.00 seconds, and thus attacks once every second by default. Similarly, if a hero with 1.7 BAT had 0 agility and no bonus attack speed, they would attack once every 1.70 seconds. While nearly every unit can have their attack speed modified, only a few heroes can actively change their BAT.
Every hero has a BAT of 1.7 except for the following:
The reciprocal of base attack time is base attack speed. For most heroes, this is 1 / 1.7 = 0.588 attacks per second. Attack speed is expressed in percent of base attack speed. The base is therefore expressed as 100. Each point of increased attack speed (IAS) adds 1 to that, giving 1% of base attack speed. Each point of agility increases IAS by 1. IAS is also modifiable by items, abilities, talents, buffs, and debuffs. Attack speed works together with BAT to determine how often a unit can attack. Attack speed has a minimum cap of 20 and a maximum cap of 700.
Note: When mousing over attack damage in the HUD, the first field shows the attack speed and the time per attack in parenthesis. The attack speed field is defaulted to 100 and adds the IAS afterward, leading to a lower boundary of 20 and an upper boundary of 700. Even though the display may show a unit to "exceed" these boundaries, the actual attack speed used for calculations will still obey the caps of 20 and 700. This can be easily verified by observing that the "time between attacks" display does not change even when pushing well past "700 attack speed".
Note2: Units that do not have 1.7 BAT will display their attack speed in the in-game HUD as if they had 1.7 BAT. For example, a unit with 0.85 BAT and no bonus attack speed (100 attack speed) will display itself as having 200 attack speed, because 0.85 seconds is how long a unit with 1.70 BAT and 200 attack speed would take in between attacks. This strange quirk makes it harder to figure out if a hero without 1.7 BAT is nearing the attack speed cap, but it does allow players to compare this uniform "attack speed metric" across all heroes more easily (only their base attack time though, as any bonuses are not expressed in this "attack speed metric", but just added on top).
Attack speed formula
The formulas below denote the relationship between BAT, IAS, the initial attack speed, attacks per second, and time between attacks.
Attacks per second = [(Initial Attack Speed + IAS) × 0.01] / BAT
Attack time = BAT / [(Initial Attack Speed + IAS) × 0.01] = 1 / (attacks per second)
For example, a level 1 Axe with no items has 1.7 BAT, 100 Initial Attack Speed and 20 agility, which is converted to (0.20).
Attacks per second = [(100 + IAS) × 0.01] / BAT
Attacks per second = [(100 + 20) × 0.01] / 1.7
Attacks per second = 1.2 / 1.7
Attacks per second = ~0.706
>> Axe attacks about 0.706 times per second.
Attack time = 1 / 0.706
Attack time = ~1.417
>> Axe takes about 1.417 seconds between attacks.
Here are some attack speed benchmarks and their effect on attacks per second:
-80 attack speed, a unit with 20 AS will take 5 times their BAT to attack (1/5x normal speed) (lower cap)
-75 attack speed, a unit with 25 AS will take 4 times their BAT to attack (1/4x normal speed)
-66 attack speed, a unit with 33 AS will take 3 times their BAT to attack (1/3x normal speed)
-50 attack speed, a unit with 50 AS will take 2 times their BAT to attack (1/2x normal speed)
+00 attack speed, a unit with 100 AS will take 1 time their BAT to attack (1x normal speed)
+100 attack speed, a unit with 200 AS will take 1/2 times their BAT to attack (2x normal speed)
+200 attack speed, a unit with 300 AS will take 1/3 times their BAT to attack (3x normal speed)
+300 attack speed, a unit with 400 AS will take 1/4 times their BAT to attack (4x normal speed)
+400 attack speed, a unit with 500 AS will take 1/5 times their BAT to attack (5x normal speed)
+500 attack speed, a unit with 600 AS will take 1/6 times their BAT to attack (6x normal speed)
+600 attack speed, a unit with 700 AS will take 1/7 times their BAT to attack (7x normal speed) (upper cap)
Attack speed granting talents
The following heroes have a talent that grants them bonus attack speed.
Bonus
Level 10
Level 15
Level 20
Level 25
Left
Right
Left
Right
Left
Right
Left
Right
Attack speed
+15
+20
+20
+25
+25
+25
+30
+80
+30
+35
+90
+225
+100
Attack speed granting items
Error: No field named "bonus_attack_speed" found for any of the specified database tables.
Attack Speed Bonus: 100 Duration: 5 When it is cast on an enemy. Affects self. Only grants attack speed against the targeted enemy. Bonus is lost after 4 attacks or within 5 seconds, whichever is shorter.
Attack Speed Bonus per Stack: 40/55/70/85 ( 75/90/105/120) Max Stacks: 3 Duration: 10 Affects self. Gains a stack on each spell cast. 3 stacks grant 120/165/210/255 ( 225/270/315/360) attack speed.
Attack Speed Bonus per Stack: 15/20/25/30 Max Stacks: 12 ( 15) Affects self. Gains a stack on each attack on the same target. All stacks are lost upon changing target. 12 stacks grant 180/240/300/360 ( (assuming 15 stacks) 225/300/375/450) attack speed.
Attack Speed Bonus: 475 Duration: 20 Affects self. Only grants attack speed against the targeted enemy. The buff is not lost upon switching target, so it continues to give attack speed upon switching back to it.