Warlock Affliction Rotation & Opener

Data updated 2026-09-08

Built from the current top-100 Mythic parses on WarcraftLogs — the real opener sequences, casts-per-minute and buff uptimes of the best Affliction players, not theorycraft.

Raid 5 top logs sampled Median kill 6:45
AI coach — raid
How to play: Agony never drops (6.5/min), Unstable Affliction is your high-frequency core (top players: 19.5/min), Haunt on cooldown (3.6/min), Shadow Bolt or Malefic Grasp fills. Dark Harvest and Summon Darkglare align with burst — DoTs fully rolled before opening. Watch: every DoT's remaining time — everything Affliction does stands on full DoT coverage; never cap soul shards, bank them before Darkglare windows.

Real Opener Sequences — Mythic boss M2

Sample kills 2026-08-30 – 2026-09-06

First ~12 casts of actual top-ranked kills. Trinkets and racials vary by setup; the skill order is what to copy.

KwrhimomZul'jin · US kill date 2026-09-04 Talents →
PfwMal'Ganis · US kill date 2026-09-03 Talents →
MaddinoRagnaros · EU kill date 2026-09-06 Hero talentHellcallerTalents →
Burst key — from the top parses above Macro commands →
#showtooltip Agony
/use 13
/use 14
/cast Summon Darkglare
/cast Agony

A macro can fire only one global-cooldown ability per press — that is the game's limit, not ours. So a burst key is exactly: on-use trinkets + the off-GCD cooldowns top players press in their opener + one opener spell. Nothing else fits.

Off-GCD cooldowns pressed within the first 8 casts by at least 1 of the 3 sampled players, defensives and movement removed. Ends with the first on-GCD opener so everything fires in one press.

Slot 13 / 14: the data cannot tell which slot the on-use trinket sits in, so both are listed; the passive one just prints cannot use.

Compare yourself
Paste one of your WarcraftLogs reports and see, ability by ability, how many casts per minute you are behind the players above.
Analyze my log →

Casts Per Minute — Raid Benchmark

Sample kills 2026-08-30 – 2026-09-06
AbilityTop-player CPM
Unstable Affliction 16.5
Agony 11.7
Shadow Bolt 10.1
Haunt 3.2
Malefic Grasp 2.5
Wither 1.3
Dark Harvest 1.3
Malevolence 1.0
Burning Rush 0.9
Dark PactOff-GCD 0.6
Summon DarkglareOff-GCD 0.6
Mortal Coil 0.4
SoulburnOff-GCD 0.3

CPM = median casts per minute across the sampled top kills. If you're far below on a core ability, that's usually the first thing to fix.

Buff Uptimes to Watch

BuffTop-player uptime
Cascading Calamity 87.6%
Unstable Empowerment 82.9%
Soul Leech 65.0%
Malevolence 51.5%
Nightfall 23.4%
Summon Darkglare 21.9%
Shard Instability 18.1%
Mythic+ Differences 8 top key runs sampled Median run 28:23
AI coach — Mythic+
How they play it: the most-pressed button is Seed of Corruption at 11.0 casts per minute, then Shadow Bolt (9.7) and Agony (7.1). Watch: Soul Link at 96.6% uptime, Cascading Calamity 88.7%, Soul Leech 82.3%. If the top one slips, the rhythm broke somewhere.

Real AoE Opener — First Trash Pack

Sample kills 2026-08-29 – 2026-09-06

First ~12 casts after the pull starts, taken from actual top key runs: the AoE opener is the first pack of the run, the single-target opener is the first boss. Trinkets and racials vary by setup; the skill order is what to copy.

SizedotEmerald Dream · US kill date 2026-09-05 pull Primal Juggernaut · 17 enemies Hero talentSoul HarvesterTalents →
SizedotEmerald Dream · US kill date 2026-08-29 pull Defier Draghar · 26 enemies Hero talentSoul HarvesterTalents →
SizedotEmerald Dream · US kill date 2026-09-01 pull Bribed Guard · 27 enemies Hero talentSoul HarvesterTalents →
Burst key — from the top parses above Macro commands →
#showtooltip Curse of Weakness
/use 13
/use 14
/cast Curse of Weakness

A macro can fire only one global-cooldown ability per press — that is the game's limit, not ours. So a burst key is exactly: on-use trinkets + the off-GCD cooldowns top players press in their opener + one opener spell. Nothing else fits.

Off-GCD cooldowns pressed within the first 8 casts by at least 1 of the 3 sampled players, defensives and movement removed. Ends with the first on-GCD opener so everything fires in one press.

Slot 13 / 14: the data cannot tell which slot the on-use trinket sits in, so both are listed; the passive one just prints cannot use.

Real Single-Target Opener — First Boss

Sample kills 2026-08-29 – 2026-09-06
SizedotEmerald Dream · US kill date 2026-09-05 pull Melidrussa Chillworn Hero talentSoul HarvesterTalents →
SizedotEmerald Dream · US kill date 2026-08-29 pull Melidrussa Chillworn Hero talentSoul HarvesterTalents →
SizedotEmerald Dream · US kill date 2026-09-01 pull Kystia Manaheart Hero talentSoul HarvesterTalents →
Burst key — from the top parses above Macro commands →
#showtooltip Agony
/use 13
/use 14
/cast Summon Darkglare
/cast Agony

A macro can fire only one global-cooldown ability per press — that is the game's limit, not ours. So a burst key is exactly: on-use trinkets + the off-GCD cooldowns top players press in their opener + one opener spell. Nothing else fits.

Off-GCD cooldowns pressed within the first 8 casts by at least 1 of the 3 sampled players, defensives and movement removed. Ends with the first on-GCD opener so everything fires in one press.

Slot 13 / 14: the data cannot tell which slot the on-use trinket sits in, so both are listed; the passive one just prints cannot use.

Casts Per Minute — Mythic+ Benchmark

Sample kills 2026-08-29 – 2026-09-06
AbilityTop-player CPM
Seed of Corruption 11.0
Shadow Bolt 9.7
Agony 7.1
Unstable Affliction 5.8
Haunt 3.1
Malefic Grasp 2.1
Dark Harvest 1.2
Dark PactOff-GCD 0.7
Curse of Tongues 0.5
Corruption 0.4
Summon DarkglareOff-GCD 0.4

Mythic+ Buff Uptimes

BuffTop-player uptime
Soul Link 96.6%
Cascading Calamity 88.7%
Soul Leech 82.3%
Unstable Empowerment 80.1%
Demonic Circle 61.8%
Nightfall 37.0%
Succulent Soul 36.3%
Summon Darkglare 17.4%
Manifested Demonic Soul 17.0%
Omnium Folio runes · what top players pick raid 38 players Mythic+ 40 players

The Patch 12.1 Omnium Folio has five rune rows. This is what the sampled top logs actually run in each row, read from the runes' own damage, healing and buff traces. Bold = most picked. Rows 1 and 5 are procs, so their share is inferred from the traces they leave.

The GearInsight addon shows the same table next to your own current runes and can switch every row to the recommended one in one click.

How to unlock the Omnium Folio and fill the rows

At level 80, take The Magisters' Call from the Magister's Missive at the Field Accolade Quartermasters in Silvermoon City, help Grand Magister Rommath and Magister Umbric restore the Sunstrider Omnium in Eversong Woods, and finish The Omnium Reawakens for the Folio and row 1. Then each week the Seeking Knowledge quest at the Sunstrider Omnium pays one Mote of Omnial Inquiry, one row per mote: week 2 Ritualized Arcana ×8 (Ritual Sites), week 3 Dark-Ley Coalescence ×5 (Void Incursions), week 4 Pure Primessence ×1 (delves, dungeons, raid or strongbox), week 5 an alien magic fragment from Showdown world bosses plus 3 world quests. Motes are account-wide once one character has done the quest; since 12.1 alts skip the intro. The Folio UI opens from the map and runes can be swapped freely out of combat.

Spec macros · 12.1 8 macros

Collected from public Patch 12.1 guides and checked for this patch. Spell names follow the language you selected on this site and must match your game client. If a macro does not work on your client, report it with the button on the card.

Spell names below are shown in this site's language — . Your game client must use the same language, or the macro will say unknown spell.
Corruption (mouseover)
#showtooltip Corruption
/use [@mouseover,harm,nodead][harm] Corruption
DoTs the mouseover enemy, otherwise your target
Agony (mouseover)
#showtooltip
/cast [@mouseover,harm,nodead][] Agony
DoTs the mouseover enemy, otherwise your target
Haunt (mouseover)
#showtooltip
/cast [@mouseover,harm,nodead][] Haunt
Casts on the mouseover enemy, otherwise your target
Banish (Shift = focus)
#showtooltip Banish
/use [mod:shift,@focus][] Banish
Hold Shift to banish your focus
Soulstone (mouseover)
#showtooltip Soulstone
/target [@mouseover] Soulstone
/use Soulstone
/targetlasttarget
Works around the dead-mouseover bug, returns to your previous target
Demonic Circle (Shift = place)
#showtooltip
/stopcasting
/use [mod:shift] Demonic Circle(Summon); [nomod] Demonic Circle: Teleport(Teleport)
Shift places the circle, plain press teleports and cancels your cast
Shadowfury (cursor) / Howl of Terror
#showtooltip
/use [known:Shadowfury,@cursor] Shadowfury; [known:Howl of Terror] Howl of Terror
Whichever talent you have; Shadowfury lands at the cursor
Pet attack / follow / move
/petattack
Also bind /petfollow and /petmoveto to control your demon
Keybind suggestion by casts per minute

Keybinds are personal — this is not a layout to copy wholesale. What it does say is which abilities you press most, measured from the same top parses above: the more often an ability is cast, the less effort its key should take. Interrupts, defensives and movement are deliberately left out; they barely register in cast data yet must always be within reach, so choose those yourself.

Rows marked Passive are not pressed at all — they fire on their own (auto-attacks, procs) and get no key, even though they top the casts-per-minute table.

KeyAbilityTop-player CPM
1 Unstable Affliction 16.5
2 Agony 11.7
3 Seed of Corruption 11.0
4 Shadow Bolt 10.1
5 Haunt 3.2
Z Malefic Grasp 2.5
X Wither 1.3
C Dark Harvest 1.3
V Malevolence 1.0
R Burning Rush 0.9
F Dark PactOff-GCD 0.7
T Summon DarkglareOff-GCD 0.6
G Curse of Tongues 0.5
Shift+1 Mortal Coil 0.4
Shift+2 Corruption 0.4
Shift+3 SoulburnOff-GCD 0.3

Compare yourself in-game, live

The GearInsight addon overlays your own CPM and buff uptimes next to these benchmarks during combat.

Get the addon →
CurseForge  ·  Wago.io  ·  Gear Analyzer