Commands
Cast
Cast Sequence
Cast Random
Use item
Equip item
Equip slot
Target
Focus
Start attack
Stop casting
Stop macro
Cancel aura
Dismount
100%
My Macros
Saved locally in this browser. Export a string to share one, or a whole batch, with someone else.
Save Current
Saved Macros
Import
How to Wield This Canvas
Getting Around
ScrollZoom in / out, centered on your cursor
Shift + dragPan the canvas
Middle-dragPan the canvas (alternative)
Building Your Macro
Drag from paletteAdd a command, condition, spell, or item node
Drag a dotConnect to another node's dot
Ctrl/Cmd + click a dotDisconnect whatever's wired to that dot
Selecting Nodes
Drag empty canvasBox-select multiple nodes
Shift + click a nodeAdd / remove one node from the selection
Drag a selected nodeMove the whole selection together
Delete / BackspaceRemove all selected nodes (Start is protected)
The Macro-Wright's Codex
What each command and condition actually does, so you're not guessing. Blizzard has never published an official exhaustive list of either - see MACRO_REFERENCE.md in the repo for sources.
Commands
#showtooltipShows an icon on your action bar and replaces the macro's tooltip with the real spell/item tooltip. Bare, WoW picks it based on what fires; named (or conditioned), it's pinned to that spell/item.
/castCasts a spell by name or ID.
/castsequenceCycles through a list, one step per press, instead of re-evaluating conditions from the top each time. Use this instead of /cast when you want "next thing in the list," not "first matching condition."
/castrandomPicks one spell from the list at random each time the macro fires.
/useTriggers an item's use effect (a trinket proc, a potion) without changing what you're wearing. Can target by name or by equip slot, slot survives gear swaps, name doesn't.
/equipPuts a named item on. If the slot's ambiguous (two rings, two trinkets), WoW picks which one.
/equipslotPuts a named item on into a slot you choose yourself, no ambiguity. Mainly for weapon swaps or picking Trinket 2 specifically.
/targetSelects a unit by name (or a keyword like target, focus, player).
/focusSets your focus target - a second, sticky target independent of your regular one, usable via @focus in any other action's conditions.
/startattackBegins auto-attacking your current target.
/stopcastingInterrupts your own current cast, e.g. to weave in an instant.
/stopmacroHalts the macro right there, nothing after it runs. Almost always paired with a condition.
/cancelauraRemoves a buff/aura from yourself by name, handy for shapeshift forms or stances that block another action.
/dismountDismounts you if you're currently on a mount.
Conditions · Combat & Target
In / out of combatOnly fires depending on whether you're currently fighting.
Target is enemy / friendlyChecks your current target's disposition.
Target exists / no targetWhether you actually have something selected at all.
Target is dead / aliveChecks whether your current target is dead.
Conditions · Modifiers & Clicks
Shift / Ctrl / Alt heldOnly fires while that modifier key is held down, the classic trick for one button doing two or three things.
Left / right-clickedWhich mouse button actually triggered the macro.
Conditions · Targeting Keyword
@target / @focus / @mouseover / @player / @petAims just that one action at a specific unit, without changing your actual target.
Conditions · Player State
Stance/Form NOnly fires while you're in that numbered stance/form/shapeshift slot - which number is which depends on your class.
Mounted / Stealthed / RestingChecks that player state directly.
Indoors / outdoors / swimmingChecks your current environment.
Channeling a spellWhether you're mid-channel on something right now (optionally a specific spell).
Conditions · Group
In / not in a groupWhether you're grouped with anyone at all.
Specifically a party / raidWhich type of group you're in.
Conditions · Spec & Talents
Active spec is #
spec:n - checks your currently active specialization by its index (1st, 2nd spec, etc.), not by name.Knows spell
known:spellID - checks whether you currently know a given spell, regardless of where it came from (talent, baseline kit, hero talent). This is what makes a passive talent usable inside a macro at all: passives can never be /cast, but they can gate which active spell a /cast line picks. Type a spell name in the value field to search your spec's known spells and passives.Not
talent:row/colIf you've seen the old fixed-grid [talent:row/col] conditional in an ancient guide: it was removed in Dragonflight (patch 10.0.0) when the talent grid became the node-based tree system live today. known:, added in patch 10.0.2, is the actual replacement.Worth Knowing
Multiple conditionsWiring several condition nodes into one command combines them, all must be true for that line to run.
Chained commands = if/elseConnecting two commands of the same type in sequence (e.g. a conditional /cast into a fallback /cast) compiles as one semicolon-joined line, WoW's real if/else syntax, instead of two separate lines. Separate lines don't behave as if/else in-game; the game runs every line on each press. Unconditional same-type commands in a row still compile as separate lines, since that's how a macro fires multiple actions on purpose (two trinkets back to back).
255 charactersWoW's hard limit per macro, including #showtooltip. The counter at the bottom turns red if you go over.
No buffs/debuffs/combat-log conditionsThere is no conditional for "does the target have this debuff" or "did this event just happen." That needs a real addon reading Blizzard's combat-log API (WeakAuras, etc.) - macros fundamentally can't do it.
No delaysEvery line runs instantly in one client tick, and most offensive spells share a global cooldown, so stacking several /cast lines still won't fire more than one per press in practice.