{"id":44218,"date":"2026-10-31T14:49:44","date_gmt":"2026-10-31T14:49:44","guid":{"rendered":"https:\/\/epiccarry.com\/blogs\/?p=44218"},"modified":"2026-10-31T14:49:44","modified_gmt":"2026-10-31T14:49:44","slug":"wow-macros-guide","status":"publish","type":"post","link":"https:\/\/epiccarry.com\/blogs\/wow-macros-guide\/","title":{"rendered":"How to Make Macros in WoW Midnight: Step-by-Step Guide"},"content":{"rendered":"<p><em>Updated October 31, 2026 for Midnight.<\/em><\/p>\n<p>To make macros in WoW Midnight, open <code>\/macro<\/code>, create a named macro, enter its commands, save it, and drag its icon onto an action bar. You can use macros for spell targeting, item use, chat messages, and profession progress checks.<\/p>\n<h2 id=\"create-your-first-macro\">Create your first macro<\/h2>\n<p>Follow these steps to learn how to make macros in WoW with a button that opens the macro window.<\/p>\n<ol>\n<li>Type <code>\/macro<\/code> in chat and press Enter, or press Esc and select <strong>Macros<\/strong> from the game menu.<\/li>\n<li>Choose <strong>General Macros<\/strong> for a button shared across your characters, or the character-specific tab for a personal macro.<\/li>\n<li>Click <strong>New<\/strong>, enter a name, choose an icon, and click <strong>Okay<\/strong>.<\/li>\n<li>Enter <code>\/macro<\/code> in the command box.<\/li>\n<li>Click <strong>Save<\/strong>, then drag the macro icon onto an action bar.<\/li>\n<li>Activate that action button to reopen the macro window.<\/li>\n<\/ol>\n<p>For spell macros, select the question mark icon so the button can use an icon associated with its contents. Avoid duplicate names to reduce confusion when a command or addon refers to a macro by name.<\/p>\n<h2 id=\"account-character-and-text-limits\">Account, character, and text limits<\/h2>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Macro storage<\/strong><\/td><td><strong>Available slots<\/strong><\/td><\/tr><tr><td><strong>General, shared across your account<\/strong><\/td><td>120<\/td><\/tr><tr><td><strong>Personal, available to one character<\/strong><\/td><td>18 per character<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p>Each native macro has a maximum length of <strong>255 characters<\/strong>. Keep separate slash commands on separate lines, but keep each <code>\/run<\/code> script on a single line.<\/p>\n<h2 id=\"make-a-spell-macro\">Make a spell macro<\/h2>\n<p>Use <code>\/cast<\/code> followed by the spell&#39;s exact name; this example casts <a href=\"#\" data-wowhead=\"spell=20271\">Judgment<\/a>.<\/p>\n<pre><code class=\"language-text\">#showtooltip Judgment\n\/cast Judgment<\/code><\/pre>\n<p><code>#showtooltip Judgment<\/code> sets the spell information shown when you hover over the button. Write <code>#showtooltip<\/code> in lowercase; you can omit its spell name when the automatically selected spell is the one you want displayed.<\/p>\n<p>Place your text cursor after <code>\/cast <\/code> and Shift-click the desired spell in your spellbook to insert its exact spelling and punctuation.<\/p>\n<p>A macro executes its lines immediately when activated; it does not wait between them. Most spells trigger the <strong>global cooldown<\/strong>, so adding several <code>\/cast<\/code> lines does not make a single press perform a complete rotation. An instant spell that does not trigger that cooldown can precede another cast in the same macro.<\/p>\n<h2 id=\"commands-you-can-put-in-a-macro\">Commands you can put in a macro<\/h2>\n<h3 id=\"cast-equip-and-use-items\">Cast, equip, and use items<\/h3>\n<p><code>\/cast<\/code> activates a named spell, <code>\/equip<\/code> equips a named item in its default slot, <code>\/equipslot<\/code> specifies an equipment slot, and <code>\/equipset<\/code> loads a saved equipment set.<\/p>\n<p>Use <code>\/use<\/code> with an item name or an equipment slot number to activate an item. These slot numbers are useful when building your own buttons:<\/p>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Equipment position<\/strong><\/td><td><strong>Slot number<\/strong><\/td><\/tr><tr><td><strong>Upper trinket<\/strong><\/td><td>13<\/td><\/tr><tr><td><strong>Lower trinket<\/strong><\/td><td>14<\/td><\/tr><tr><td><strong>Main hand<\/strong><\/td><td>16<\/td><\/tr><tr><td><strong>Off hand<\/strong><\/td><td>17<\/td><\/tr><tr><td><strong>Belt<\/strong><\/td><td>6<\/td><\/tr><tr><td><strong>Wrists<\/strong><\/td><td>9<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p>For example, this command uses the item in your lower trinket slot.<\/p>\n<pre><code class=\"language-text\">\/use 14<\/code><\/pre>\n<p><code>\/use 0 1<\/code> instead addresses the first slot in your backpack. For class-specific button ideas, continue with the macro section of the <a href=\"https:\/\/epiccarry.com\/blogs\/wow-arcane-mage-guide\/\" target=\"_blank\" rel=\"noopener noreferrer\">WoW Arcane Mage guide<\/a>.<\/p>\n<h3 id=\"stop-a-cast-attack-or-buff\">Stop a cast, attack, or buff<\/h3>\n<p>Use the command that matches what you want to interrupt or remove:<\/p>\n<ul>\n<li><code>\/stopcasting<\/code>: interrupts your current spellcast.<\/li>\n<li><code>\/stopattack<\/code>: ends your auto-attack.<\/li>\n<li><code>\/cancelaura Buff Name<\/code>: removes the named buff; replace the placeholder with its actual name.<\/li>\n<li><code>\/stopmacro<\/code>: stops processing the remaining macro lines, optionally under specified conditions.<\/li>\n<li><code>\/stop<\/code>: ends an action such as dancing.<\/li>\n<\/ul>\n<p>Place <code>\/stopcasting<\/code> before a spell command when you want the button to abandon your current cast before attempting that spell. Use the <a href=\"https:\/\/epiccarry.com\/blogs\/fire-mage-dps-guide\/\" target=\"_blank\" rel=\"noopener noreferrer\">Fire Mage guide<\/a> for further class-specific macro examples.<\/p>\n<h3 id=\"select-targets-and-send-a-pet\">Select targets and send a pet<\/h3>\n<p><code>\/target Name<\/code> selects a unit using a name match, while <code>\/targetexact Name<\/code> requires the exact name. <code>\/assist<\/code> switches to your current target&#39;s target, and <code>\/assist Name<\/code> assists the named unit.<\/p>\n<p><code>\/startattack<\/code> begins auto-attacking, and <code>\/petattack<\/code> orders your pet to attack your target. <code>\/petfollow<\/code> recalls your pet to follow you, <code>\/petstay<\/code> holds its position, and <code>\/petmoveto<\/code> lets you choose a destination on the ground.<\/p>\n<h3 id=\"run-a-script\">Run a script<\/h3>\n<p><code>\/run<\/code> and <code>\/script<\/code> execute Lua code; this example prints a message.<\/p>\n<pre><code class=\"language-text\">\/run print(&quot;Ready to go&quot;)<\/code><\/pre>\n<p>Scripts cannot replace secure commands for casting spells, using items, changing action-bar pages, or controlling your target. Avoid long-running loops: a macro runs before control returns to the game, so an expensive script can <strong>freeze play<\/strong> while it finishes.<\/p>\n\n\n<div class=\"blog-info\"><div class=\"blog-info-media\"><img decoding=\"async\" width=\"130\" height=\"130\" src=\"https:\/\/epiccarry.com\/wp-content\/uploads\/2026\/07\/venomous-abyss-heroic-boost-6.webp\" alt=\"WoW Boosts\"><\/div><div class=\"blog-info-text\"><p class=\"main-text\" style=\"font-size:24px\"><strong>Buy WoW Boosts<\/strong><\/p><p class=\"subtext\" style=\"font-size:18px\">Leave the grind to us!<\/p><a href=\"https:\/\/epiccarry.com\/wow\/\" class=\"white-button\">Buy now!<\/a><\/div><\/div>\n\n\n<h2 id=\"choose-a-target-without-switching-manually\">Choose a target without switching manually<\/h2>\n<p>An <code>[@unit]<\/code> option on <code>\/cast<\/code> directs the spell to that unit without changing your selected target. Choose the token that matches the relationship you need:<\/p>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Target option<\/strong><\/td><td><strong>Unit it addresses<\/strong><\/td><\/tr><tr><td><strong><code>@player<\/code><\/strong><\/td><td>Yourself<\/td><\/tr><tr><td><strong><code>@target<\/code><\/strong><\/td><td>Your selected target<\/td><\/tr><tr><td><strong><code>@mouseover<\/code><\/strong><\/td><td>The unit under your mouse<\/td><\/tr><tr><td><strong><code>@focus<\/code><\/strong><\/td><td>Your saved focus<\/td><\/tr><tr><td><strong><code>@targettarget<\/code><\/strong><\/td><td>Your target&#39;s target<\/td><\/tr><tr><td><strong><code>@pet<\/code><\/strong><\/td><td>Your pet<\/td><\/tr><tr><td><strong><code>@boss1<\/code><\/strong><\/td><td>The first boss unit; other bosses use numbered tokens<\/td><\/tr><tr><td><strong><code>@arena1<\/code><\/strong><\/td><td>The first opposing arena unit; other opponents use numbered tokens<\/td><\/tr><tr><td><strong><code>@party1<\/code><\/strong><\/td><td>The first party member other than yourself<\/td><\/tr><tr><td><strong><code>@cursor<\/code><\/strong><\/td><td>The cursor location for spells that support this placement<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p>Select a unit and use <code>\/focus<\/code> to save it for later casts; <code>\/clearfocus<\/code> removes that saved focus. A Mage can then cast <a href=\"#\" data-wowhead=\"spell=118\">Polymorph<\/a> at the focus while keeping another unit selected.<\/p>\n<pre><code class=\"language-text\">\/cast [@focus] Polymorph<\/code><\/pre>\n<h2 id=\"add-conditions-and-modifier-keys\">Add conditions and modifier keys<\/h2>\n<p>Conditions sit inside square brackets, and commas require every condition in that bracket to be true. Multiple bracket groups offer alternatives, while semicolons separate branches with different spell or item parameters; evaluation proceeds from left to right.<\/p>\n<p>Use these checks to narrow when a command runs:<\/p>\n<ul>\n<li><code>help<\/code> and <code>harm<\/code>: require a friendly or hostile unit respectively.<\/li>\n<li><code>dead<\/code> and <code>nodead<\/code>: check whether the unit is dead or alive.<\/li>\n<li><code>exists<\/code> and <code>noexists<\/code>: check whether the unit exists or is absent.<\/li>\n<li><code>combat<\/code>: requires you to be in combat.<\/li>\n<li><code>channeling<\/code>: checks whether you are channeling.<\/li>\n<li><code>group:party<\/code> and <code>group:raid<\/code>: check the corresponding group type.<\/li>\n<li><code>indoors<\/code> and <code>outdoors<\/code>: restrict use by your surroundings.<\/li>\n<li><code>mounted<\/code> and <code>swimming<\/code>: check those movement states.<\/li>\n<li><code>mod:shift<\/code>, <code>mod:alt<\/code>, and <code>mod:ctrl<\/code>: require the corresponding modifier key to be held when you activate the macro.<\/li>\n<\/ul>\n<p>An empty bracket group, <code>[]<\/code>, always matches and provides normal casting behavior as a fallback. Conditions are <strong>case-sensitive<\/strong>, and adding <code>no<\/code> reverses a condition; <code>nohelp<\/code> is broader than <code>harm<\/code>, since some units satisfy neither friendly nor hostile checks.<\/p>\n<h2 id=\"mouseover-and-modifier-macro-examples\">Mouseover and modifier macro examples<\/h2>\n<h3 id=\"heal-a-mouseover-target-or-yourself\">Heal a mouseover, target, or yourself<\/h3>\n<p>This <a href=\"#\" data-wowhead=\"spell=19750\">Flash of Light<\/a> macro prioritizes a living friendly mouseover, then a living friendly selected target, and finally yourself.<\/p>\n<pre><code class=\"language-text\">#showtooltip Flash of Light\n\/cast [@mouseover,help,nodead][@target,help,nodead][@player] Flash of Light<\/code><\/pre>\n<p>You can mouse over a friendly character or its unit frame for the first branch.<\/p>\n<h3 id=\"interrupt-a-mouseover-enemy\">Interrupt a mouseover enemy<\/h3>\n<p>This <a href=\"#\" data-wowhead=\"spell=96231\">Rebuke<\/a> macro first checks for a living hostile mouseover, then falls back to your selected target.<\/p>\n<pre><code class=\"language-text\">#showtooltip Rebuke\n\/cast [@mouseover,harm,nodead][@target] Rebuke<\/code><\/pre>\n<p>The fallback does not include the first branch&#39;s hostility and alive checks. Keep the distinction in mind when adapting the example.<\/p>\n<h3 id=\"use-shift-for-your-previous-target\">Use Shift for your previous target<\/h3>\n<p>Use <code>\/targetlasttarget<\/code> to select your previous target; the command accepts conditions such as a held modifier. The following button changes targets when Shift is held, then attempts Judgment only if the resulting selected target is alive and hostile.<\/p>\n<pre><code class=\"language-text\">#showtooltip Judgment\n\/targetlasttarget [mod:shift]\n\/cast [harm,nodead] Judgment<\/code><\/pre>\n<p>Without Shift, the target-selection line <strong>does nothing<\/strong> and the cast checks your current target. This version changes your selection rather than directing a spell through an <code>[@unit]<\/code> option.<\/p>\n<h2 id=\"cast-spells-in-a-sequence\">Cast spells in a sequence<\/h2>\n<p><code>\/castsequence<\/code> works through a comma-separated list of spells or items, using one entry per activation. It advances after a successful use, stays on the current entry if that use fails, and returns to the beginning after the last entry.<\/p>\n<p>This example places <a href=\"#\" data-wowhead=\"spell=133\">Fireball<\/a> before <a href=\"#\" data-wowhead=\"spell=30455\">Ice Lance<\/a>.<\/p>\n<pre><code class=\"language-text\">\/castsequence Fireball, Ice Lance<\/code><\/pre>\n<p>A reset condition belongs before the spell list, after any bracketed conditions. For example, this version restarts when you change targets:<\/p>\n<pre><code class=\"language-text\">\/castsequence reset=target Fireball, Ice Lance<\/code><\/pre>\n<p>Available reset conditions include leaving combat, changing targets, holding Shift, Alt, or Ctrl, and a specified period of inactivity; combine them with slashes. A numeric reset measures the time since the macro was last activated, so repeated presses restart that inactivity timer rather than tracking a spell&#39;s cooldown.<\/p>\n<h2 id=\"midnight-profession-progress-macros\">Midnight profession progress macros<\/h2>\n<p>Profession scripts can print completion flags and calculate catch-up remaining as <code>maxQuantity - totalEarned<\/code> for the relevant currency. Activate them when you want a progress readout; the completion checks return true or false rather than a remaining-item count.<\/p>\n<h3 id=\"mining-progress-check\">Mining progress check<\/h3>\n<p>Use this shortened check for weekly sample completion, treatise completion, and the catch-up value.<\/p>\n<pre><code class=\"language-text\">\/run local f=C_QuestLog.IsQuestFlaggedCompleted local g=C_CurrencyInfo.GetCurrencyInfo(3192) print(&quot;Samples&quot;,f(88678),&quot;Treatise&quot;,f(95135),&quot;Catch-up&quot;,g.maxQuantity-g.totalEarned)<\/code><\/pre>\n<p>The weekly gathering items are five <a href=\"#\" data-wowhead=\"item=237496\">Igneous Rock Specimens<\/a> worth one Knowledge Point each, followed by a chance to gather a <a href=\"#\" data-wowhead=\"item=237506\">Septarian Nodule<\/a> worth three; the weekly total from those items is <strong>eight Knowledge Points<\/strong>. Their collection progress resets weekly, and the <a href=\"#\" data-wowhead=\"item=245762\">Thalassian Treatise on Mining<\/a> supplies another Knowledge Point.<\/p>\n<p>Check your trainer quest separately: <a href=\"#\" data-wowhead=\"npc=241455\">Belil<\/a> offers a rotating weekly quest in <a href=\"#\" data-wowhead=\"zone=15969\">Silvermoon<\/a> at coordinates 42.6, 52.8, with access requiring <a href=\"https:\/\/epiccarry.com\/blogs\/wow-midnight-mining-guide\/\" target=\"_blank\" rel=\"noopener noreferrer\">Midnight Mining<\/a> 25 and a <strong>level 90<\/strong> character on your account. Its material request can be one of the following:<\/p>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Weekly request<\/strong><\/td><td><strong>Materials<\/strong><\/td><\/tr><tr><td><strong>Umbral Tin<\/strong><\/td><td>10 <a href=\"#\" data-wowhead=\"item=237362\">Umbral Tin Ore<\/a><\/td><\/tr><tr><td><strong>Mixed Tin and Silver<\/strong><\/td><td>5 Umbral Tin Ore and 5 <a href=\"#\" data-wowhead=\"item=237364\">Brilliant Silver Ore<\/a><\/td><\/tr><tr><td><strong>Refulgent Copper<\/strong><\/td><td>20 <a href=\"#\" data-wowhead=\"item=237359\">Refulgent Copper Ore<\/a><\/td><\/tr><tr><td><strong>Mixed Copper and Thorium<\/strong><\/td><td>10 Refulgent Copper Ore and 2 Dazzling Thorium Ore<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<h3 id=\"jewelcrafting-progress-check\">Jewelcrafting progress check<\/h3>\n<p>Create separate buttons for these two checks to keep each within the native macro text limit.<\/p>\n<p>The first checks the Diamond Fragment and Stone Sample weekly treasure flags separately, using quest IDs 93538 and 93539.<\/p>\n<pre><code class=\"language-text\">\/run local f=C_QuestLog.IsQuestFlaggedCompleted print(&quot;Diamond fragment&quot;,f(93538),&quot;Stone sample&quot;,f(93539))<\/code><\/pre>\n<p>The second checks crafting quest 93694, treatise 95133, and the catch-up value from currency 3194.<\/p>\n<pre><code class=\"language-text\">\/run local f=C_QuestLog.IsQuestFlaggedCompleted local g=C_CurrencyInfo.GetCurrencyInfo(3194) print(&quot;Craft quest&quot;,f(93694),&quot;Treatise&quot;,f(95133),&quot;Catch-up&quot;,g.maxQuantity-g.totalEarned)<\/code><\/pre>\n<h2 id=\"chat-and-emote-macros\">Chat and emote macros<\/h2>\n<p><code>\/s<\/code> sends a Say message, <code>\/p<\/code> sends party chat, and <code>\/w<\/code> sends a whisper; emotes such as <code>\/wave<\/code>, <code>\/ready<\/code>, and <code>\/golfclap<\/code> can be placed on macro buttons too. This example combines a short Say message with a wave.<\/p>\n<pre><code class=\"language-text\">\/s Ready when you are!\n\/wave<\/code><\/pre>\n<p>A chat line paired with a spell command runs when you press the button, even if the spell cannot cast because of its target or cooldown. Keep messages brief and avoid wording that promises the spell succeeded.<\/p>","protected":false},"excerpt":{"rendered":"<p>Learn how to make macros in WoW Midnight with creation steps, spell and mouseover examples, modifier keys, sequences, and profession progress checks.<\/p>\n","protected":false},"author":33680,"featured_media":44219,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4,3],"tags":[45],"post_kind":[117,97],"ppma_author":[127],"class_list":["post-44218","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wow","category-all","tag-wow","author-dina"],"acf":{"faq_header":"","faq_items":null,"wpwp_short_description":"Learn how to make macros in WoW Midnight with creation steps, spell and mouseover examples, modifier keys, sequences, and profession progress checks.","wpwp_plus_for_views":""},"authors":[{"term_id":127,"user_id":33680,"is_guest":0,"slug":"dina","display_name":"Dina","avatar_url":{"url":"https:\/\/epiccarry.com\/blogs\/wp-content\/uploads\/2025\/07\/Dina-avatar.webp","url2x":"https:\/\/epiccarry.com\/blogs\/wp-content\/uploads\/2025\/07\/Dina-avatar.webp"},"0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/epiccarry.com\/blogs\/wp-json\/wp\/v2\/posts\/44218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/epiccarry.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/epiccarry.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/epiccarry.com\/blogs\/wp-json\/wp\/v2\/users\/33680"}],"replies":[{"embeddable":true,"href":"https:\/\/epiccarry.com\/blogs\/wp-json\/wp\/v2\/comments?post=44218"}],"version-history":[{"count":1,"href":"https:\/\/epiccarry.com\/blogs\/wp-json\/wp\/v2\/posts\/44218\/revisions"}],"predecessor-version":[{"id":44220,"href":"https:\/\/epiccarry.com\/blogs\/wp-json\/wp\/v2\/posts\/44218\/revisions\/44220"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/epiccarry.com\/blogs\/wp-json\/wp\/v2\/media\/44219"}],"wp:attachment":[{"href":"https:\/\/epiccarry.com\/blogs\/wp-json\/wp\/v2\/media?parent=44218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/epiccarry.com\/blogs\/wp-json\/wp\/v2\/categories?post=44218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/epiccarry.com\/blogs\/wp-json\/wp\/v2\/tags?post=44218"},{"taxonomy":"post_kind","embeddable":true,"href":"https:\/\/epiccarry.com\/blogs\/wp-json\/wp\/v2\/post_kind?post=44218"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/epiccarry.com\/blogs\/wp-json\/wp\/v2\/ppma_author?post=44218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}