Macro examples & FAQ
Ready-made WoW Forever macros — how to combine spells around the global cooldown, target macros, sequences — and fixes for common mistakes.
How [conditions], ; and @unit work — and every condition — in Macro syntax →The global cooldown (GCD) in one minute
- Most spells start a global cooldown (GCD) of 1.5 seconds (1 second for many rogue and cat-form abilities). Until it ends, no other spell with a GCD can be used.
- So one press of a macro casts at most one spell with a GCD. The /cast lines after it run but fail with “Spell is not ready yet.”
- What you can add to the same press: abilities without a GCD (Presence of Mind, Nature's Swiftness, Heroic Strike, Auto Shot, most on-use trinkets…) and commands that are not spells (/startattack, /petattack, /stopcasting, /target, chat).
- Put those first and the spell with the GCD last. To use several GCD spells, press several times with /castsequence, or pick one with [mod] branches.
- In the builder's “Try it” tab, abilities without a GCD are marked “no GCD”, and you get a warning when two spells with a GCD would run.
Whether a spell has a GCD comes from the game data. Some behavior has not been checked in WoW Forever itself.
Combining spells around the GCD
Abilities without a GCD go first; the one spell with a GCD goes last.
Instant Healing Wave (Nature's Swiftness)
Shaman#showtooltip Healing Wave /cast Nature's Swiftness /cast Healing Wave
- Nature's Swiftness has no GCD, so Healing Wave goes off in the same press — instantly.
- If Nature's Swiftness is on cooldown, you only get an error and Healing Wave is cast normally.
- #showtooltip with a name shows Healing Wave on the button, not the first line.
Trinket + Presence of Mind + Pyroblast
#showtooltip Pyroblast /use 13 /cast Presence of Mind /cast Pyroblast
- /use 13 is the upper trinket slot (14 is the lower one). Most on-use trinkets have no GCD.
- Presence of Mind has no GCD, so the Pyroblast right after it becomes instant.
- Order matters: Presence of Mind must come before the spell it speeds up.
Heroic Strike with every Mortal Strike
Warrior#showtooltip Mortal Strike /startattack /cast Heroic Strike /cast Mortal Strike
- Heroic Strike replaces your next melee swing and has no GCD, so Mortal Strike still goes off.
- /startattack makes sure auto attack is on (it never turns it off).
- It uses rage on every press. Leave Heroic Strike out when rage is short.
Pet attack + Auto Shot + Arcane Shot
Hunter#showtooltip Arcane Shot /petattack /cast !Auto Shot /cast Arcane Shot
- /petattack and Auto Shot have no GCD, so Arcane Shot goes off in the same press.
- The “!” in front of Auto Shot only turns it on. Without it, pressing again would stop Auto Shot.
Interrupt even while casting
#showtooltip Counterspell /stopcasting /cast Counterspell
- /stopcasting cancels your own Frostbolt or Fireball first, so Counterspell goes off right away.
- Counterspell has no GCD, so it works even right after another spell.
Choosing the target
[@unit] picks who the spell goes to. The first branch whose conditions match is used.
Heal the mouse-over, Alt for yourself
Priest#showtooltip /cast [@player,mod:alt][@mouseover,help,nodead][] Flash Heal
- Holding Alt heals yourself. Otherwise a living friend under the mouse (unit frames too).
- The empty [] at the end means “otherwise, the usual target”. Remove it if the macro should do nothing without a mouse-over.
Polymorph the focus without losing your target
#showtooltip /cast [@focus,harm,nodead][] Polymorph
- Set a focus with /focus first. With no living enemy focus, it falls back to your target.
Several spells on one button
When every spell has a GCD, use one press per spell: a sequence, or branches.
DoTs, then Shadow Bolt
Warlock#showtooltip /castsequence reset=target/combat Corruption, Immolate, Shadow Bolt, Shadow Bolt
- Each press casts the next spell. It moves on only when the spell is actually cast.
- reset=target/combat starts over on a new target or after combat.
- Don't put spells with a long cooldown in a sequence — it gets stuck on them (see the FAQ).
Three spells by modifier key
#showtooltip /cast [mod:shift] Frost Nova; [mod:ctrl] Blink; Frostbolt
- Shift: Frost Nova, Ctrl: Blink, otherwise Frostbolt. #showtooltip follows the key you hold.
- Branches are checked from the left. Put the branch without conditions last.
Opener from stealth, otherwise the usual attack
Rogue#showtooltip /cast [stealth] Cheap Shot; Sinister Strike
- While stealthed it opens with Cheap Shot; after that the same button is Sinister Strike.
/castsequence and reset=
reset= decides when the sequence goes back to the first spell. Write it right before the spells; join several with “/”.
| Write | Starts over |
|---|---|
| reset=5 | Seconds after your last press. The timer restarts on every press, so it never resets while you keep pressing. Whole seconds only — 2.5 is read as 2. |
| reset=target | When your target changes (including clearing it). |
| reset=combat | When you leave combat. |
| reset=shift | When you press the macro while holding Shift. The first spell is cast on that same press. ctrl and alt work the same way. |
#showtooltip /castsequence reset=10/target/shift Corruption, Immolate, Shadow Bolt
- It moves to the next spell only when the current one is cast successfully. Presses while that spell is still being cast do nothing.
- After the last spell it goes back to the first one.
- Every sequence starts over when you die.
- Without reset=, it only starts over after the last spell or when you die.
- Each branch has its own reset=: /castsequence [mod] reset=target A, B; reset=combat C, D
- Two macros with exactly the same text share the same progress.
- Items work too (name, item:ID or slot). An item you can equip but haven't equipped is equipped instead of used.
FAQ: when a macro doesn't work
Only the first /cast works. The next line does nothing.
That's the global cooldown. After one spell with a GCD, the next /cast fails with “Spell is not ready yet.” Combine only abilities without a GCD (see above), or use /castsequence and press several times.
Example
#showtooltip /castsequence Fireball, Frostbolt
My /castsequence gets stuck on one spell.
A sequence moves on only when the spell is really cast. If it's on cooldown, out of range, or you lack mana, it stays on that spell. Pressing during the GCD doesn't skip anything either.
Keep spells with long cooldowns out of sequences, and add reset= (seconds, target, combat) so it starts over. See “/castsequence and reset=” above.
My mouse-over macro casts on my target (or myself) when nobody is under the mouse.
That's the empty [] at the end: “otherwise, the usual target”. A healing spell with an enemy targeted then goes to you. Remove the [] if you want nothing to happen.
Example
#showtooltip /cast [@mouseover,help,nodead] Flash Heal
Nothing happens and there's no error.
No branch matched. Branches are checked from the left and the first match wins; a branch without conditions in the middle hides everything after it. Check the conditions in the builder's “Try it” tab.
The macro works for a friend but not for me.
Spell names must be in your client's language. The Korean client needs Korean names; English names do nothing there (and the other way round). Spaces and punctuation must match exactly.
The builder checks spell names for the language of the page you use.
The button shows a question mark or the wrong icon.
#showtooltip without a name shows the first spell the macro would cast, and a question mark when there is none. Write the spell you want after it.
Example
#showtooltip Healing Wave /cast Nature's Swiftness /cast Healing Wave
/say runs even when the spell fails.
Chat commands don't know whether the spell worked, and they don't take [conditions]. If an announcement on a failed cast is a problem, leave it out.
How do I cast a lower rank?
Add the rank in parentheses, in your client's format. Without it you get the highest rank you know.
Example
#showtooltip /cast [@mouseover,help,nodead][] Flash Heal(Rank 3)
My macro is longer than 255 characters.
Line breaks count too. Drop lines you don't need, combine lines with [mod] branches, or split it into two macros.