We have moved to Warcraft Wiki. Click here for information and the new URL.


General guides

Macros Beginners Guide
Making a macro
Macro conditionals
Macro commands

Useful macros by class

Useful macros for death knights Useful macros for demon hunters Useful macros for druids Useful macros for hunters Useful macros for mages Useful macros for monks
Useful macros for paladins Useful macros for priests Useful macros for rogues Useful macros for shamans Useful macros for warlocks Useful macros for warriors

Macro Formatting Guidelines[]

Note: With the release of 6.0.2, many spells have been renamed, and much of the scripted command functionality has been modified. In an effort to keep Wowpedia posts relevant, please re-validate and re-post macros that work in the current version.

Re-Creating Old Macros[]

When re-creating a macro in Useful macros please

  • follow the example format posted below (to get the frame around your macro, add a space before you start it)
  • describe what it does
  • note the version of WoW in which you tested it
  • remove it from the Old Macros page

Example Macro[]

/y Hooray, I made a macro!
  • Use: This yells, "Hooray, I made a macro!"
  • Works in 6.x

Useful Macros[]

Switch language[]

/run local s,g,f=select,GetLanguageByIndex,DEFAULT_CHAT_FRAME.editBox;local c,d,dd,r,rr=f.languageID,s(2,g(2)),g(2),s(2,g(1)),g(1);if d then f.languageID=(c==d and r or d);print("Spoken Language is :  \124cff88ff44"..(c==d and rr or dd));end;
  • Credit: Telarrus @ US-MoonGuard. Based on original code by Yza @ EU-Ysondre.
  • Use: Intelligent swicth between default and racial language for races that have one. Does nothing for races with only one language.
  • Works in 7.3.5

Cycle language[]

/run local f,g,s=DEFAULT_CHAT_FRAME.editBox,GetLanguageByIndex,select;local h=f.languageID;for i=1,GetNumLanguages(),1 do if s(2,g(i))==h then f.languageID=(s(2,g(i+1)) or s(2,g(1))) print("Speaking: \124cff88ff44"..(g(i+1) or g(1))) break end end;
  • Credit: Kiingy @ US-Frostmourne. Based off the above switch language macro.
  • Use: For those with only 2 languages it will toggle between them. For those with 3+ it will cycle through each of them, moving to the next language on click.
  • Works in 8.0.1, for both factions and all races/classes.

Swapping Talents, Equipment and Stances[]

Swap Current Dual-Spec Talent[]

/run if( GetActiveTalentGroup() == 1 ) then DEFAULT_CHAT_FRAME:AddMessage("Spec1...");SetActiveTalentGroup(2) else DEFAULT_CHAT_FRAME:AddMessage("Spec2...");SetActiveTalentGroup(1) end
/in 6 /equipset [spec:2]Eq1;Eq2
  • Credit: Earthsoul of Thunderhorn, many thanks to Desiday of Antonidas for inspiration
  • Use: "Quickly" swaps your Primary/Secondary talent specs.
  • Also changes your equipped item set, only need to change the name of Eq1 and Eq2
  • Works in 3.1.1

Here is one that switches the set before the spec (may avoid some errors):

/equipset [spec:1] PSS ; SSS
/usetalents [spec:1] 2; [spec:2] 1

Just have to replace PSS with the name of your primary spec set, and SSS with the name of your secondary spec set.

Swap Talents, Equipment, and Stance[]

This macro will switch your talent spec and put you into the respective gear and stance.

/equipset [spec:1] <Secondary Set Name>; <Primary Set Name> 
/cast [spec:1] <Secondary Stance>; <Primary Stance> 
/usetalents [spec:1] 2; 1

Here is an alternate version for fury warriors that cannot use the above macro due to Titan's Grip. Left click swaps the talent spec, right click swaps gear and stance.

#show [spec:1] <Secondary Stance>; [spec:2] <Primary Stance> 
/usetalents [button:1,spec:1] 2; [button:1,spec:2] 1 
/equipset [button:2,spec:1] <Primary Set Name>; [button:2,spec:2] <Secondary Set Name> 
/cast [spec:1] <Primary Stance>; [spec:2] <Secondary Stance>

A one button spec, stance and equipment interchanger, caters for Furry Warriors Titan's Grip

/cast [stance:3] Defensive Stance; [Stance:1] Berserker Stance
/usetalents [spec:1] 2; [spec:2] 1
/in 5.30 /equipset [spec:1] Tank ; DPS

Offhand weapon switching[]

You might find yourself in a situation where you have two offhand weapons with the same name but different poisons on them and you want to switch between them quickly. Or perhaps you just want to alternate between two offhand weapons with just one hotkey.

#showtooltip [mod] 0 16; 17
/equipslot 17 0 16
  • Keep your alternate dagger in the sixteenth slot (lower right corner) of your main (rightmost) backpack.
  • The number 17 refers to your offhand weapon slot.
  • #showtooltip makes the macro's icon and tooltip display the icon of the equipped weapon, or hold down a modifier key (say Alt) and it will display the icon of the weapon that's ready to be switched in.
  • Works in 3.2.2

Suppressing Sound and Error Messages[]

Sound and Message Error Cleaner[]

When you spam a spell you get sounds and error messages that can be annoying. Using the macro below you will avoid all that. This example is a macro which you can use to spam Arcane Missiles. It will not cut an already channeling Arcane Missile cast, nor will it make the error sound or spam your screen with error messages.

/console Sound_EnableSFX 0
/run UIErrorsFrame:UnregisterEvent("UI_ERROR_MESSAGE")
/cast [nochanneling:Arcane Missiles] Arcane Missiles
/run UIErrorsFrame:RegisterEvent("UI_ERROR_MESSAGE") 
/console Sound_EnableSFX 1
  • Credit: Vermin of Talnivarr.
  • Use: Change the third line to the spell you want to spam.
  • Works in 3.3 but at least one or two errors will not be cleaned with this macro

No Error Text or Sound (Improved)[]

For people that macro cd's into normal spells, such as petattacks, trinkets, everlasting potions, etc. it gets annoying being spammed with "This ability is not ready" and that fun error sound. I've seen a common solution online (similar to the macro above) that fixes this problem with a single issue that's almost as bad as the problem it's fixing.

For people who play without sound to begin with, these macro will -enable your sound- every time you use them. So here is my solution:

/run sfx=GetCVar("Sound_EnableSFX");
/console Sound_EnableSFX 0
/cast ExampleTrinket1
/cast ExampleSpell2
/run UIErrorsFrame:Clear() 
/run SetCVar("Sound_EnableSFX",sfx);

The overall effect is the same, but my macro checks to see what you sound currently is set to (enabled or disabled), disables it for the error, and then sets it back where you had it. (ex: if your sound was already off, it will prevent the text error without turning your sound on at the end)

  • Credit: Xaeros of Shadowmoon
  • Use: Replace "ExampleTrinket1" and "ExampleSpell2" with your cd(s) and abilities, then drag to your bar like a normal macro.
  • Works in 3.3.3a

No Error Text or Sound (Improved Again)[]

This is just like the one above but with an added tooltip that matches the original skill, and doesn't disable sound for the skill's error messages. Sound and error messages for the trinket use are still suppressed though. If you set the name of the macro to a blank space, you can't even tell it's a macro. This one is designed more for trinket use than anything else, but it's here for when you only want to silence one of the two skills this macro uses.

#showtooltip ExampleSpell1
/run sfx=GetCVar("Sound_EnableSFX");
/console Sound_EnableSFX 0
/use ExampleTrinket2
/run UIErrorsFrame:Clear() 
/run SetCVar("Sound_EnableSFX",sfx);
/cast ExampleSpell1

If you're running low on characters and you're using this for a trinket, you can replace the use command with "use 13" (for upper trinket) or "use 14" (for lower trinket).

  • Credit: Vandalite of Feathermoon, and Xaeros of Shadowmoon for the macro this was based on.
  • Use: Replace "ExampleTrinket2" and "ExampleSpell1" With your cooldowns and abilities, then drag to your bar like a normal macro.
  • Works in 3.3.2

Suppress Error Text and Sound (Shadowlands)[]

#showtooltip Fishing
/equipset Fishing
/console Sound_EnableErrorSpeech "0"
/use Darkmoon Fishing Cap
/run UIErrorsFrame:Hide() C_Timer.After(0, function() UIErrorsFrame:Clear() UIErrorsFrame:Show() end)
/console Sound_EnableErrorSpeech "1"
/use Fishing

Suppresses error text and sound to make trinket spamming less painful.

  • Credit: Zosoled-Dalaran
  • Created for fishing hat, but can be modified for any trinket.
  • Mainly a "bugfix" change to previous macros, so to speak.
  • Quotes around the console command arguments are required.
  • Shadowlands introduced a bug that prevents the error text from clearing easily. Workaround is courtesy Sebàstian-Frostmourne.
  • Works in 9.0.2

Training and Levelling[]

Learn all Spells from a Trainer[]

/run LoadAddOn"Blizzard_TrainerUI" f=ClassTrainerTrainButton f.e = 0 if f:GetScript"OnUpdate" then f:SetScript("OnUpdate", nil)else f:SetScript("OnUpdate", function(f,e) f.e=f.e+e if f.e>.01 then f.e=0 f:Click() end end)end
  • Click a second time to stop learning

Tanks: Check unhittability and avoidance (+ how far away hard-defcap)[]

/run local b,d,p,r,a=GetBlockChance(),GetDodgeChance(),GetParryChance(),GetCombatRating(CR_DEFENSE_SKILL) a=1/(.0625+.956/(r/122.9625)) ChatFrame1:AddMessage(format("Unhittable: %.2f%%  Avoidance: %.2f%%  Defense %+.0f rating",b+d+p+5+a,d+p+5+a,r-689))

Gear By iLevel[]

/run t={}; for i=1,18 do if i~=4 then l=GetInventoryItemLink('player',i); if l then _,_,_,v=GetItemInfo(l); table.insert(t,{l=l,v=v}); end end end sort(t, function(a,b) return a.v>b.v end ) for i,v in pairs(t) do print(v.v..' '..v.l); end
  • Lists all of your equipped gear sorted by iLevel

Trading, Bags and Money[]

Print Money and Currencies to Chat Frame[]

/script local cu = GetMoney(); print(GetCoinTextureString(cu,"12"))
/stopmacro [btn:1]
/script yy = GetNumWatchedTokens(); for xx = 1, yy,1 do aa, bb, cc, dd, ee = GetBackpackCurrencyInfo(xx); print(bb, aa) end 
  • Left click to display your total money in the chat window.
  • Click any other way to display your money and all your watched currencies.
  • Works in 3.3.2

Sell all grey items[]

/script for bag = 0, 4 do for slot = 1, GetContainerNumSlots(bag) do local name = GetContainerItemLink(bag,slot) if name and string.find(name,"ff9d9d9d") then DEFAULT_CHAT_FRAME:AddMessage("Selling " UseContainerItem(bag,slot) end end end
  • Use: sells all grey quality items
  • Works in 4.0.3
  • May get you in trouble since the selling is so fast that sometimes the server thinks it's spam.

Sell all grey items[]

/run local p,N,c,n=0 for b=0,4 do for s=1,GetContainerNumSlots(b) do n=GetContainerItemLink(b,s) if n and string.find(n,"9d9d9d") then N={GetItemInfo(n)} c=GetItemCount(n) p=p+(N[11]*c)UseContainerItem(b,s) print(n) end end end print(GetCoinText(p))
  • Use: sells all grey items, shows what was sold and how much money was made from selling
  • Works in 4.0.3

Item Link[]

/run local s={"10000"} for i=1,#s do DEFAULT_CHAT_FRAME:AddMessage("\124c00ffffff\Item Link: \124c00FF0033\124Hitem:"..s[i]..":0:0:0:0:0:0:0:0\124h[ID: "..s[i].."]\124h\124r\124c00ffffff - Click ID for item info.")end
  • Use: Displays an item link in the default chat frame.
  • Replace "10000" with the desired item ID #.
  • Works in 4.0.3

Spell Link[]

/run local s={"10000"} for i=1,#s do DEFAULT_CHAT_FRAME:AddMessage("\124c00ffffff\Spell Link: \124c00ff0033\[ID: "..s[i].."] \124c00ffffff\- "..GetSpellLink(""..s[i])..".")end
  • Use: Displays a spell link in the default chat frame.
  • Replace "10000" with the desired spell ID #.
  • Works in 4.0.3


Link your professions in the trade channel[]

Link a single profession[]

/script CastSpellByName(#prof#);SendChatMessage("I'll create items against mats, look out: "..GetTradeSkillListLink(),"CHANNEL",nil,GetChannelName("Trade - City"));CloseTradeSkill();

This macro sends a link with your Profession recipes to a Channel.

Replace #prof# with your profession. If your Profession is Engineering, then write:

/script CastSpellByName("Engineering");SendChatMessage("I'll create items against mats, look out: "..GetTradeSkillListLink(),"CHANNEL",nil,GetChannelName("Trade - City"));CloseTradeSkill();

Link two professions[]

One button to link both of your professions to trade chat and guild chat. Just replace "Inscription" and "Enchanting" with your two professions. Also, trade chat is not necessarily always your number 2 channel. Make sure you check it and adjust accordingly. Replace channel with guild to link it to your guild, or raid to link to raid chat.

/cast Inscription
/run SendChatMessage("Free with your mats "..GetTradeSkillListLink(), "channel", nil, "2")
/cast Enchanting
/run SendChatMessage(GetTradeSkillListLink().." I'll even give you 5g if I skill up!", "channel", nil, "2") CloseTradeSkill()

One-Button Disenchant/Milling/Prospecting[]

/use [nomod] Disenchant; [mod:alt] Milling;

You can of course change the order, skill and modifier to suite your needs

AIO Profession Button[]

/use [nomod] Enchanting; [mod:alt] Inscription; [mod:ctrl] Cooking; [mod:shift] First Aid;

You can of course change the order, skill and modifier to suite your needs


Fishing with your Weather-Beaten Fishing Hat[]

#showtooltip fishing
/equip Weather-Beaten Fishing Hat;
/equip Mastercraft Kalu'ak Fishing Pole;
/use Weather-Beaten Fishing Hat
/run UIErrorsFrame:Clear()
/cast fishing
  • This macro will equip your fishing pole and Inv helmet 31 [Weather-Beaten Fishing Hat], attach lure and start fishing just by repeatedly clicking the button. One-button fishing never was easier.
    • Change the name of your fishing pole if you are not exalted with the Tuskar yet.
  • Works 4.3.4

Modifier Swap[]

/cast [nomod] Fishing
/equip [noequipped:Fishing Pole, mod] Nat Pagle's Extreme Angler FC-5000
/equip [equipped:Fishing Pole, mod] Titansteel Guardian
/equip [equipped:Fishing Pole, mod] Matriarch's Spawn
  • Credit: Xaeros of Shadowmoon
  • Use:(Make sure to replace the fishing pole/weapons with your own)
    • On click, you will attempt to cast fishing.
    • On mod+click you will switch between your fishing pole and your weapon(s).
  • Works in 3.3.3a

Set Swap[]

/equipset [noequipped:Fishing Pole, mod] Fishing; [noequipped:Fishing Pole, nomod, spec:1] [mod, spec:1] Set1; [noequipped:Fishing Pole, nomod, spec:2] [mod, spec:2] Set2
/use [equipped:Fishing Pole, nomod] Fishing
  • Uses the Blizzard Equipment Manager
    • Requires one set called Fishing that contains your fishing pole and any equipment you want to wear while fishing (fishing hat, gloves or similar) and two sets that fit your specs (replace Set1 and Set2 with your names)

If your fishing set is equipped, click will cast Fishing, mod-click will equip the set fitting your current spec. Otherwise, mod-click will equip your fishing set, normal click will equip the spec-relevant set.

Alternate version for toons with just one spec or equipment set:

/equipset [noequipped:Fishing Pole, mod] Fishing;  [noequipped:Fishing Pole, nomod] [mod] Set1
/use [equipped:Fishing Pole, nomod] Fishing

Automated Equipment Manager Fishing & Lure Macro[]

/equipset [noequipped:Fishing Poles, nomod] Fishing
/cast [equipped:Fishing Poles, nomod] Fishing
/use [mod:shift] Bright Baubles
/use [mod:shift] 16
/equipset [mod:alt] Normal
/equipset [mod:ctrl] DPS
  • Credit: Taurolyon of Sargeras-US --Taurolyon (talk) 15:53, October 14, 2009 (UTC)
  • To use:
  1. Create a Fishing outfit in your equipment manager (or if you use the Outfitter Addon, save the outfit to server)
    • Outfit must be named Fishing
  1. Create a Normal outfit for your primary spec
  2. Create a DPS outfit for your secondary spec (or remove the last line in the macro if you only have one set of gear/spec)
  • If you don't have your fishing pole equipped, it will automatically equip your "Fishing" outfit from your equipment manager
  • Clicking on this macro after your fishing pole is equipped, will automatically cast your line and start fishing.
  • Shift-Clicking on this macro will apply a lure to your equipped fishing pole (Change Bright Baubles to any lure you'd like. I.E. Inv helmet 31 [Weather-Beaten Fishing Hat])
  • Alt-Clicking on this macro will equip your Normal set of gear.
  • Ctrl-Clicking on this macro will equip your DPS set of gear.

Binding this macro to a button on your mouse will allow for easy one handed casting and reeling. --Taurolyon (talk) 15:53, October 14, 2009 (UTC)

Multi Gathering Macro[]

/cast [nomodifier] <Mount of your choice>
/cast [modifier:ctrl] Find Minerals
/cast [modifier:shift] Find Herbs
/cast [modifier:alt] Smelting

Can of course be modified to your liking and professions

  • Not holding down a button: Will summon a mount of your choice (Note:<Mount of your choice> has to be swapped with a mount in your possession).
  • Holding down ctrl: Will make mining nodes appear on your minimap.
  • Holding down shift: Will make herb nodes appear on your minimap.
  • Holding down alt: Will show the Smelting pane, where you can smelt your ore bars.

Craft a single item[]

/run CloseTradeSkill()
/cast First Aid
/run local s for i=1,GetNumTradeSkills() do s=GetTradeSkillInfo(i) if (s=="Linen Bandage") then DoTradeSkill(i) end end
/run CloseTradeSkill()

(replace "First Aid" and "Linen Bandage" with the craft and item you want)

Craft many items of a single type[]

/run CloseTradeSkill()
/cast First Aid
/run local s for i=1,GetNumTradeSkills() do s=GetTradeSkillInfo(i) if (s=="Linen Bandage") then DoTradeSkill(i, 100) end end

(replace "First Aid" and "Linen Bandage" with the craft and item you want, and 100 with the number you want; use a large number for "as many as possible")

Raiding and Parties[]

Reload UI and notify group[]

Reload your UI, send a message to your party/raid telling them you're doing so and set an appropriate /afk message.

/afk reloading UI
/run SendChatMessage("reloading my UI - afk for a sec", ((UnitInRaid("player")and "RAID")or(GetNumPartyMembers()>0 and "PARTY")or "AFK")); 
  • Credit: Ashel of Antonidas
  • Works in 3.2.0a

Autoassist tank if the tank's target can be attacked[]

/target [target=focustarget, harm, nodead]
  • Use /focus to set focus on the main tank (or right click on the tank and select focus).
  • Your target will be set to the main tank's target, but only if the tank is targeting an enemy which is alive.
  • Works in 3.3
#show Attack
/target [target=focustarget, harm, nodead]
  • The melee dps version also starts attacking, and sets the icon to your attack ability.

Parties and Raiding[]

Announce Discord in Party or Raid[]

/rw Discord Details Posted
/i My Guild Discord |
  • Use: Announces your Discord details to your party or raid.
  • Works in 7.3.5

List raid members without a food buff[]

Use this version to list members without a food buff to yourself:

/run nfb="[Eat!]: ";for i=1,GetNumGroupMembers()do for b=1,40 do ua=UnitAura('raid'..i,b);if ua=="Well Fed"or ua=="Food"then break;elseif b==40 and ua~="Well Fed"then nfb=nfb..UnitName('raid'..i).." ";end;end;end;print(nfb);

Use this version to send the list to raid chat:

/run nfb="[Eat!]: ";for i=1,GetNumGroupMembers()do for b=1,40 do ua=UnitAura('raid'..i,b);if ua=="Well Fed"or ua=="Food"then break;elseif b==40 and ua~="Well Fed"then nfb=nfb..UnitName('raid'..i).." ";end;end;end;SendChatMessage(nfb,"raid");
  • Credit: Xaeros of Shadowmoon
  • Use: Click the macro to report members in raid that are neither food buffed nor eating.
  • Works in 7.1

List raid members without a flask active[]

Use this version to list members without an active flask to yourself:

/run nf="[Flask!]: ";for i=1,GetNumGroupMembers()do for b=1,41 do ufl=UnitAura('raid'..i,b);if ufl then if strfind(ufl,"Flask")or strfind(ufl,"Distilled")then break;end;elseif b==41 then nf=nf..UnitName('raid'..i).." ";end;end;end;print(nf);

Use this version to send the list to raid chat:

/run nf="[Flask!]: ";for i=1,GetNumGroupMembers()do for b=1,41 do ufl=UnitAura('raid'..i,b);if ufl then if strfind(ufl,"Flask")or strfind(ufl,"Distilled")then break;end;elseif b==41 then nf=nf..UnitName('raid'..i).." ";end;end;end;SendChatMessage(nf,"raid");
  • Credit: Xaeros of Shadowmoon
  • Use: Click the macro to report members in raid that are neither food buffed nor eating.
  • Works in 7.1
  • Will not report people using the Inv alchemy endlessflask 05 [Flask of the North].

Just For Fun[]

Below are macros that serve no real purpose in-game beyond amusement.


There's a whole page dedicated to Mount Macros.

Vanity Pets[]

Wheel O' Pets[]

/run q=C_PetJournal;v={q.GetNumPets()}r=random(v[2])p={q.GetPetInfoByIndex(r)}q.SummonPetByGUID(p[1])SendChatMessage("spins the Wheel O' Pets! The wheel stops on ["..r.."/"..v[2].."]: "..p[8].."!","emote");
  • Credit Xaeros of Shadowmoon
  • Use: Click to summon a random vanity pet. This macro has 49 free characters, so feel free to change your message. By default it says: "[player] spins the Wheel O' Pets! The wheel stops on [[random pet number]/[total pet number]]: [random pet's name]!
  • Works in 5.4.7

Random Pet with Announce[]

/run q=C_PetJournal;v={q.GetNumPets()}r=random(v[2])g={"their","his","her"}x=UnitSex("player")p={q.GetPetInfoByIndex(r)}q.SummonPetByGUID(p[1])SendChatMessage("gasps as "..p[8] .." hops out of "..g[x] .." pocket!","emote")
  • Credit Xaeros of Shadowmoon
  • Use: Click to summon a random vanity pet. This macro has 33 free characters, so feel free to change your message. By default it says: "[player] gasps as [pet] hops out of [his/her] pocket! (The [his/her] is based on the character's gender)
  • Works in 5.4.7

Out of Date Vanity Pet Macros[]

/run DismissCompanion("CRITTER"); CallCompanion("CRITTER", random(GetNumCompanions("CRITTER")));
  • Use: This will first attempt to dismiss any vanity pet you have summoned, and then attempt to randomly summon a new one.
  • Works in 3.1.2
/run local z;for i=GetNumCompanions("CRITTER"),1,-1 do local _,_,_,_,s = GetCompanionInfo("CRITTER",i); if s==1 then z=1;end end if (z==nil) then CallCompanion("CRITTER", random(GetNumCompanions("CRITTER"))) else DismissCompanion("CRITTER") end
  • Use: This is a more advanced version of the above macro, as it first attempts to determine whether or not you already have a pet summoned. If not, it summons one, else it dismisses it. (Note: There's no IsMounted() equivalent for pets, hence the for loop)
  • Works in 3.1.2

Summon Random Pet with salutation[]

/run local z;t="CRITTER"u=GetNumCompanions(t)v=random(u)for i=u,1,-1 do local _,_,_,_,s=GetCompanionInfo(t,i);if s==1 then z=1;end end if(z==nil)then c,n=GetCompanionInfo(t,v)SendChatMessage("Wow, it's a "..n)CallCompanion(t,v) else DismissCompanion(t)end
  • Credit: Strunge 12:55, December 23, 2009 (UTC) (Talk)
  • Use: This is a compact version of the above macro that also sends a chat message stating what pet, you have summoned. All 255 characters are used, so you can only change the text in the SendChatMessage-part to a statement with the same amount of characters.
  • Works in 3.3

Random Pet with Announce (Dismiss First)[]

/run DismissCompanion("critter");g={"","his","her"}; x=UnitSex("player");i=random(GetNumCompanions("critter"));id,name=GetCompanionInfo("critter",i);SendChatMessage("calls for "..g[x].." faithful friend, " ..".","emote");CallCompanion("critter",i);
  • Credit Totemfellow of Silvermoon
    • Based on the above macro by Xaeros of Silvermoon
  • Use: Click to summon a random companion. You will first dismiss any companion you already have out. The default message is "[player] calls for [his/her] faithful friend, [pet name]." This uses all 255 characters, so any altered message will need to be equal or shorter in length.
  • Works in 4.3.4

Target's Gender[]

Have you ever wondered, "Is Razorscale a boy or a girl?", when directing a raid to attack "him" or "her"? Well now you can pronoun with confidence!

Maybe not the most "useful" macro, but a fun one :) Use this to discover your target's gender. You may be surprised, every once in a while Blizz slips up and flags Male NPCs as Female and vice-versa.

/run local x=UnitSex("target");local g={"n unknown!", " boy!", " girl!"} n=GetUnitName("target");if IsShiftKeyDown()then SendChatMessage(n .." is a" ..g[x],"SAY");else print(n .." is a" ..g[x]);end
  • Credit: Xaeros of Shadowmoon
  • Use: Click the macro to print the target's gender. Shift+Click to announce in /SAY.
  • Will not help in the N [20-30] Tails Up (Cats are flagged as unknown, Bears are all flagged male.)
  • Works in 7.1

Raid Blame (now with Guild Blame!)[]

Have you ever been in a raid that had an unfortunate wipe? Has your raid ever been left wondering, "What just happened? Who should we blame this on?"? Well, wonder no more! With this macro blame can always be placed upon those who most deserve it with 100% accuracy! [NEW!] Too much blame to go around, and not enough raiders? Well now you can blame the whole guild!

/run x=GetNumGuildMembers(1)g=x>0 and GetGuildRosterInfo(random(1,x))or 0;y=GetNumRaidMembers()r=y>0 and GetUnitName('raid'..random(1,y))or 0;if IsShiftKeyDown()then c,b="Raid",r else c,b="guild",g end;SendChatMessage("[iBlame]: "..b..".",c);

  • Credit: Xaeros of Shadowmoon
  • Use: Click the macro to blame any member of your guild in /guild ! (ex: [iBlame]: RandomGuildie)
  • Use: Shift+Click the macro to blame any member of your raid in /raid ! (ex: [iBlame]: RandomRaider)
  • Extra: This macro currently pulls a random guild member from the entire guild, if you'd rather only blame ONLINE members, change "x=GetNumGuildMembers(1)" to "x=GetNumGuildMembers(0)"
  • Works in 3.3.3a

Target Wealth[]

By selecting a (player) target and clicking this macro, you can see the most amount of gold that player has ever owned! This doesn't show the total amount of money they've ever had, just the single largest sum of money they've ever possessed at once.

/run if not zb then zb=CreateFrame("Frame")zb:RegisterEvent("INSPECT_ACHIEVEMENT_READY")zb:SetScript("OnEvent",function()print(UnitName("target").." ("..UnitLevel("target")..") "..GetComparisonStatistic(334))end)end SetAchievementComparisonUnit("target")
  • Works in 4.2.2

Gold Counter[]

This macro allows you to track how much gold you've made or lost in a specified span of time. Shift/Ctrl/Alt click to set the starting point. Then just click it to show how much gold you've made/lost since the last starting point. Clicking it does not reset the starting point, you have to Shift/Ctrl/Alt click again to reset it.

/run if IsModifierKeyDown()then cG=GetMoney() print("Setting start point")else if (GetMoney()<cG)then print("Total money lost: "..GetCoinText(cG-GetMoney(),", ")) else print("Total money made: "..GetCoinText(GetMoney()-cG,", ")) end end


  • Shift, Ctrl, or Alt click to set the starting point
  • Click to show the total amount of money made/lost since the last starting point
  • Works in 4.2.2

Experience Announcer[]

Clicking this macro will output a message similar to the following: "I am 16.2 bars into 64 (3.8 bars left)" into party chat.

/script local e=UnitXP("player"); local m=UnitXPMax("player"); local b=m/20; local rba=floor((e/b)*10+0.5)/10; local rbb=floor((20-(e/b))*10+0.5)/10; SendChatMessage("I am "..rba.." bars into "..UnitLevel("player").." ("..rbb.." bars left)","PARTY",nil);
  • Works in 4.2.2

Food & Water[]

Eating and drinking[]

/use [btn:1] <name of water>
/use [btn:1] <name of food>
  • Use: Let you eat an drink at the press of one button
  • Works in 3.3.5

Eating and drinking with dynamic food & water[]

#showtooltip [nomod:alt] 1 20; 1 16
/use [mod:shift][btn:3] 1 20
/use [mod:alt][btn:2] 1 16
/stopmacro [mod][nobtn:1]
/use [nomod][btn:1] 1 20
/use [nomod][btn:1] 1 16
  • Use:This macro uses Items from a fixed Bag slot so you can easily exchange the food (B1 Slot 20)/water (B1 Slot 16) you want to be consumed.
    • Default: this macro will use the item in slot 20 and 16 of the first bag (to the left of the bavkpack which is zero) so you immediately start eating an drinking.
    • Modifiers: You can use the modifiers [alt] and [shift] if you only want to drink or eat. The Modifier alt also views a count of water currently in bag.
    • Buttons: btn1 is default; btn3 is similar to the shift modifier; btn2 is similar to the alt modifier.

Old macros[]

Macros written before the current patch that have not been re-validated in newer patches can be found on the Old Macros page.