World of Warcraft Macros – How to Make Them

Macros are a very useful tools within the World of Warcraft client which have been present since the beginnings. They allow the user to combine multiple actions into a single button in order to easier accomplish a task.

Most often, we create macros to use abilities or items. But we can also use them to send chat messages, equip gear, adjust settings and many other things.

In this guide, we are going to explore the world of macros and we will learn how to create some of our own.


We can access the macros’ user interface via the Game Menu (default shortcut: Esc) and then selecting Macros.

Or if you want to feel like a hacker and speed things up, you can type /m (short for /macro) and hitting enter in chat.

world of warcraft game menu world of warcraft in game chat macro command










All the macros we create are stored on World of Warcraft’s servers and are bound to your account and characters. That means you can access them from different computers and you can also have a set of macros for a specific character.

An account can have up to 120 macros plus 18 for each character that you have.

As you might figured it out, macros commands start with a / (forward slash). There are tens of such commands and these are maybe the most used: /use , /cast , /target /castsequence, / say.

Each patch or expansion usually adds more commands into the game. WoWPedia has a full list of all possible slash commands available to the default game client.

Many World of Warcraft addons also add custom slash commands that usually open up the addon’s configuration panel or perform a specific action. These commands can also be included into a macro or simply typed into chat.

There are also a couple of nifty commands that we can use in our macros. They are called metacommands and can affect the appearance of a button on the Action Bar. They start with a # (hashtag) symbol. Two metacommands are well known:

#show – affects the button’s icon on the Action Bar.
#showtooltip – affects the button’s icon and tooltip on the Action Bar.

In this example, #showtooltip will show Soothing Mist‘s tooltip on macro’s button:

/cast Soothing Mist

This is just a glimpse of what we can do with macro commands. Fortunately or unfortunately macros have limited usability and we cannot use them to:

  • automate the game play. They are not a substitute of a human being, therefore cannot make intelligent decisions on your behalf.
  • write longer than 255 characters in chat. Although there are some addons that can bypass this limit.
  • outfox the global cooldown to use more than one ability or item at a time. There are some exceptions here but it strongly depends on the current game’s class and combat designs.
  • simulate additional keypresses.

Now let’s get our hands dirty and create our own macros.

Creating a Macro

To create a macro button is pretty easy. Open the Macros screen and press the New button.

A new window will pop up and you can enter a name and choose an icon for your macro. You can leave them blank for the moment if you want.

world of warcraft create macro

Macros default user interface.

One of the most basic macros you can write is to cast a spell and announce it in chat so your teammates know what you are casting. Please, also note that spamming such a macro can do more harm than good because your buddies can easily get pissed by it.

/say Cobra Shot incoming, boys!
/cast Cobra Shot

And this is the output:

wow first macro



An interesting note is the order in which the macro executes. Normally we’d expect to see the /say command printed first, then the ability cast and then the /flex command. However, the engine prioritize the most important commands such as /cast and /use then followed by the rest.


They are a way to build up basic logic and strengthen the macro. Conditionals’ logic are similar to IF statements but much more limited and with a different syntax than other scripting and programming languages.

The conditions are enclosed within square brackets [ ] and are separated by a comma if there’s more than one condition.
The comma can be seen as an AND or && (AND operator in most programming languages).
Conditionals groups can be separated by semicolons ; and can be read as ELSE.


/cast [Condition] Spell1; Spell2

We can read the above example as: IF condition is TRUE cast SPELL1, otherwise cast SPELL2.

/cast [Condition][] Spell1

The empty brackets [ ] in the macro above are called blank conditions. It’s the equivalent to /cast Spell and it just cast the spell at the current default target.
We can read it as: If the first condition is TRUE,  cast Spell1 on the currently targeted unit. Otherwise, cast Spell1 on the current targeted unit.

Now let’s take a real world example. We are going to modify it with the [harm] conditional. The macro will do something different.

/cast [harm]Crackling Jade Lightning;Soothing Mist

The macro casts Crackling Jade Lightning when an enemy is targeted. Otherwise, it will cast Soothing Mist.

We can go even further. We can even add  keys to our conditions, as follows:

/cast [harm,mod:ctrl]Spinning Crane Kick;[harm]Crackling Jade Lightning;Soothing Mist

This macro will cast Spinning Crane Kick if you have an enemy targeted and if you press CTRL. If you don’t press CTRL and you still have an enemy target, it will cast Crackling Jade Lightning.
Otherwise, it will cast Soothing Mist.

It is important to remember that a macro will always execute the first condition!

We can take our time and create maybe hundreds of specific macros with the help of conditionals.

Here is a full list of available macro conditionals.


We can use certain scripts into our macros that allow us to use actions like addons do. We cannot use scripts to cast spells, use items, equip gear or any other secured actions. Secured actions are those functions reserved to World of Warcraft’s User Interface. In this way, the WoW team can block almost any ways of automating certain aspects of your character like farming honor, XP or mining veins.

Basically, a macro that has scripts it’s like a mini-addon, but restricted to 255 characters.

Some useful examples of scripts are those that announce your spell’s cooldown or crowd control, calculating variables, checking out what quests you’ve done so far and many more.
We can even freeze the time for certain amount of seconds.

/run local t = time() + 10 while time() < t do end

This script will freeze your World of Warcraft client for 10 seconds. You can adjust the amount of seconds by changing the value of 10 to anything you want. This can be extremely useful in situations like Priority Mail achievement. Freezing the client for ridiculous amount of time such as 5 minutes or higher will result in a disconnect or sometimes even crash.
Also, the world around you is pretty much alive which means that everybody will be able to interact with you.

Tips and Tricks

There are a handful of tips and tricks you can use in your advantage when creating a macro.

1. /cast and /use function the exact same way. This will save you up the staggering amount of … 1 character. But seriously, if you’re going to write complex macros you are going to need that 1 extra character.

You could write our initial example like this:

/use Soothing Mist

2. Use [help] instead of [exists] when you are referring to a friendly target. [exists] means ‘if I have a target’ and [help] means ‘if I have a friendly target’. Thus [help] implies [exists]. So we can write only one condition. It saves up space and the logic of the macro will be clearer.

3. Additional whitespace and punctuation are not needed.

/use [help] Enveloping Mist

is the same as

/use [help]Enveloping Mist

4. Certain abilities can be gathered together to be used at the same time as long as they are not in the global cooldown spectrum.

#showtooltip Fists of Fury
/use Battle Potion of Agility
/use Blood Fury
/use 13
/use Fists of Fury

This macro will make your character use Battle Potion of Agility, then cast Blood Fury (Orc racial), use your first trinket and then cast Fists of Fury. The benefit of this macro is that you pop all your DPS cooldowns in just one single button, maximizing your efficiency.

Please note that this macro is just an example and it’s subject to change.

Mouseover macros

One of the most useful macros for pretty much every player are the mouseover macros. They allow you to cast spells to a target by holding the mouse cursor over it’s body, healthbar or raid frame.

The most important advantage of it is that you are not losing extra seconds to click the target which is detrimental in PvP and raiding.
Another nice thing to add is that you remove clutter from your UI because you no longer need to use an addon for healing (unless you really want to). You can simply use game’s default raid interface and just hover your mouse over the raid frames.

Below there are a couple of macros I am using on my characters in both PvE and PvP. I am going to explain them one by one:

This macro casts Surging Mist on a friendly target via mouseover (and also can be used to heal a selected target). If the target is dead, the ability is cast on yourself.

/use [@mouseover,help,nodead][] Surging Mist

The next one is a bit more complicated but extremely useful.
As Priests we have the ability to dispel Magic and Diseases from friendly targets and Magic spells from enemy targets.
If the target is alive and friendly, cast Purify. If the enemy target is alive, cast Dispel Magic. Otherwise, cast Purify on yourself.

/use [@mouseover,help,nodead] Purify; [@mouseover,harm,nodead] Dispel Magic; [@player] Purify

Final Thoughts

In this guide we’ve covered the basics you need to create your own macro, what can do for you and its limitations.
Social, semi-hardcore or hardcore player alike, macros can make your life easier and the game more enjoyable.

If you’d like to know more about macros, let me know and I will probably do an advanced guide.

Carol Pelu
Follow me

Carol Pelu

Neutron Star at Neutron Dev
Second most tallest chap in the neighbourhood. Sometimes my sense of humor causes abdominal pain. I am not yet famous for something.
Carol Pelu
Follow me