Many UI elements that display text on the screen support a special escape sequences starting with the | pipe character.

Warning Warning: If you are using the chat window or an in-game text editor, then "|" will most likely be replaced with "||". Try using "\124" instead of "|". 124 is the ASCII code escape for the pipe character, and will work regardless of what the editor is trying to do.

Escape Sequences


  • Each pair of digits represents a color value (plus the alpha value, however the alpha value is currently ignored and should always be FF) as a hexadecimal number. The |r escape sequence pops nested color sequences in-order[1].
/run print("this is \124cFFFF0000red and \124cFF00FF00this is green\124r back to red\124r back to white")
> this is red and this is green back to red back to white


WoW Icon update.png Patch 1.13.2 / API (2019-08-26): The |r escape sequence resets the text to the default color instead of popping nested colors in-order.

/run print("this is \124cFFFF0000red and \124cFF00FF00this is green\124r back to white")
> this is red and this is green back to white


Will insert a texture into a font string. Parameter width is optional (see below). The offsets are optional and will shift the texture from where it would normally be placed. TextHeight is based on size of the font used - this is used to automatically scale icons based on the size of the text.
  • height == 0; width omitted: Width = Height = TextHeight (always square!)
  • height > 0;  width omitted: Width = Height = height (always square!)
  • height == 0; width == 0   : Width = Height = TextHeight (always square!)
  • height > 0;  width == 0   : Width = TextHeight; Height = height (height is height!!!)
  • height == 0; width > 0    : Width = width * TextHeight; Height = TextHeight (width is an aspect ratio and defines width!!!)
  • height > 0;  width > 0    : Width = width; Height = height
  • offsetX offsetY: Offset for the rendered image, in pixels
  • textureWidth textureHeight: Size of the source image, in pixels
  • leftTexel rightTexel topTexel bottomTexel: (x1 x2 y1 y2) Coordinates that identify the left/right/top/bottom edges, in pixels (see Texture:SetTexCoord() but non-normalized)
  • rVertexColor gVertexColor bVertexColor: RGB color values in the range 0-255 that are used to tint the texture
  • When you need to display a square icon in the string (spell/item icon), use only |Tpath:0|t
  • When you need to display a rectangular image in the string (Blizzard logo), use aspect ratio version: |Tpath:0:aspectRatio|t

Texture atlas

Main article: AtlasID

Atlases allow for easily getting part of a texture without having to use tex coords.



"|cFFFF0000This is red text|r this is normal color"
WrapTextInColorCode("This is red text", "FFFF0000").." this is normal color"
This is red text this is normal color
The file path or FileDataID can be used. Both slash / or escaped backslashes \\ are valid file separators.
"|T133784:16|t Coins"
"|TInterface\\Icons\\INV_Misc_Coin_01:16|t Coins"
CreateTextureMarkup("Interface/Icons/INV_Misc_Coin_01", 64, 64, 16, 16, 0, 1, 0, 1)
Inv misc coin 01.png Coins[1]
"|TInterface\\Icons\\INV_Misc_Coin_01:16:16:0:0:64:64:4:60:4:60|t Coins (cropped)"
INV Misc Coin 01 crop.png Coins (cropped)
Sets the vertex color of the texture to green (73:177:73).
"|TInterface\\ChatFrame\\UI-ChatIcon-ArmoryChat:14:14:0:0:16:16:0:16:0:16:73:177:73|t Reckful"
RemoteChat Icon.png Reckful[2]
Texture atlas
The Atlas name or ID can be used.[3] Parameters can be omitted in between colon characters.
"|A:4259:19:19|a Tank"
"|A:groupfinder-icon-role-large-tank:19:19|a Tank"
"|Tinterface\\lfgframe\\groupfinder:19:19:::1024:1024:915:944:785:814|t Tank"
CreateAtlasMarkup("groupfinder-icon-role-large-tank", 16, 16)
Atlas groupfinder-icon-role-large-tank.png Tank[4]
Utility functions:

Protected strings

Also known as Kstrings, they prevent strings from being parsed in addons.

The q variant e.g. |Kq1|k is used for the confidentiality of account names. The number represents the friend ID.
Known sources: C_BattleNet.GetAccountInfoByID()
  • Group Finder
The r variant e.g. |Kr14|k is used for the name and comment in group finder listings to prevent addons like World Quest Group Finder.
Known sources: C_LFGList.GetSearchResultInfo() and C_LFGList.GetActiveEntryInfo()
  • Communities
The v variant e.g. |Kv1|k is used for Community Channels to prevent addons from using it as a shared, persistent data storage. The number represents a chat message line ID.


number |1singular;plural;
Will choose a word depending on whether the digit preceding it is 0/1 or not (i.e. 1,11,21 return the first string, as will 0,10,40). Note that unlike |4 singular and plural forms are separated by semi-colon.
Before vowels outputs d' (with apostrophe) and removes any leading spaces from text, otherwise outputs de (with trailing space)
Displays text declined to the specified form (index ranges from 1 to GetNumDeclensionSets()). Processed by C code, data used for parsing isn't available to UI, all events fire with the data already processed.
number |4singular:plural; -or- number |4singular:plural1:plural2;
Will choose a form based on the number preceding it. Client locale dependant. More than two forms (separated by colons) may be required by some locales (i.e. Russian requires 3 forms), if too many forms provided they are ignored, if needed form isn't provided empty string will be used instead. Note that unlike |1 singular and plural forms are separated by colon. (added with 2.4.2)


Newline, if the widget supports it. Similar behavior as \n
Escapes the "|" character.
"|" followed by something that is not a valid escape sequence will be displayed as-is or is otherwise undefined behavior.


See also: GameTooltip:SetHyperlink() and ExtractHyperlinkString().
Implemented in FrameXML/ItemRef.lua

Hyperlinks are clickable (chat) links. Since patch 7.0.3 unused delimited segments will be empty rather than 0, e.g. ":::" instead of ":0:0:0"


Each kind of hyperlink has the following format:

Text Description
|cffxxxxxx The color code
|H Begins the hyperlink
linkType:info The link type and any colon-delimited params
|h Marks the end of the payload
[text] Localized display text
|h Ends the hyperlink
|r Stops coloring

The server may expect certain combinations of color, payload and text as SendChatMessage() can reject invalid entries.

HOWTO: Inspecting a hyperlink  

From the in-game chat window.

/dump "[Flash Heal]"
> "|cff71d5ff|Hspell:2061:0|h[Flash Heal]|h|r"

From an addon, when clicking a hyperlink in-game.

hooksecurefunc("SetItemRef", function(link, text)
	print(link, text:gsub("|", "||"))
> "spell:139:0", "|cff71d5ff|Hspell:139:0|h[Renew]|h|r"


See also: AchievementLink
achievement : achievementID : guid : completed : month : day : year : criteria1 : criteria2 : criteria3 : criteria4
  • guid The player's GUID.
  • completed 1 for earned, 0 for unearned achievements.
  • month:day:year Date the achievement was earned or 0:0:-1 if not earned.
  • criteria1-4 32-bit bitmask fields for completed criteria, or 0:0:0:0 if not completed.
"|cffffff00|Hachievement:10671:Player-1096-06DF65C1:1:2:16:17:4294967295:4294967295:4294967295:4294967295|h[Level 110]|h|r"
"|cffffff00|Hachievement:12544:Player-1096-06DF65C1:0:0:0:-1:0:0:0:0|h[Level 120]|h|r"


See also: APILink

Shows API Documentation from the /api command.

api : type : name : [parentName]


Azerite Essence link

azessence : essenceID : rank
Example: "|cffa335ee|Hazessence:12:3|h[The Crucible of Flame]|h|r"
See also: C_AzeriteEssence.GetEssenceInfo()


battlepet : speciesID : level : breedQuality : maxHealth : [power] : [speed] : [battlePetID] : [displayID]
Example: "|cff0070dd|Hbattlepet:202:25:3:1546:289:260:BattlePet-0-00000338F951:16189|h[Baby Blizzard Bear]|h|r"
Barebone example: /run SendChatMessage("\124cff1eff00\124Hbattlepet:202:1:2:1:::BattlePet--:\124h[Baby Blizzard Bear]\124h\124r")
See also: BattlePetSpeciesID


battlePetAbil : abilityID : maxHealth : power : speed
Example: "|cff4e96f7|HbattlePetAbil:348:1435:267:240|hBash|h|r"


calendarEvent : monthOffset : monthDay : index
Example: "|HcalendarEvent:0:12:1|hSpring Balloon Festival|h"
See also: C_Calendar.GetDayEvent()


Opens the chat window to a specific /channel.

channel : channelType : [channelID]
"|Hchannel:channel:2|h[2. Trade - City]|h"


Guild Finder (8.2.5) invite link.

clubFinder : clubFinderId
Example: "|cffffd100|HclubFinder:ClubFinder-1-19160-1598-53720920|h[Guild: Happy Leveling]|h|r"
See also: GetClubFinderLink()


WoW communities & Blizzard Groups invite link.

clubTicket : ticketId
Example: "|cffffd100|HclubTicket:oxPbMfv2R|h[Join: test]|h|r"
See also: GetClubTicketLink()


Community link in Quick Join requests.

community : clubId


Conduit link

conduit : id : [rank]
Example: "|cff71d5ff|Hconduit:5:1|h[Stalwart Guardian]|h|r"
See also: C_Soulbinds.GetConduitHyperlink()


currency : id : [amount]
Example: "|cffffffff|Hcurrency:1744|h[Corrupted Memento]|h|r"
See also: C_CurrencyInfo.GetCurrencyLink()


Opens the Death recap overview.

death : recapID
Example: "|Hdeath:1|h[You died.]|h"


Opens the Tradeskill window for a recipe.

enchant : spellID
Example: "|cffffd000|Henchant:162206|h[Draenor Engineering: World Shrinker]|h|r"


garrfollower : followerID : quality : level : itemLevel : ability1 : ability2 : ability3 : ability4 : trait1 : trait2 : trait3 : trait4 : spec1
Example: "|cffa335ee|Hgarrfollower:856:4:110:900:457:777:0:0:684:758:0:0:354|h[Calia Menethil]|h|r"


garrfollowerability : abilityID
"|cff4e96f7|Hgarrfollowerability:457|h[Holy Nova]|h|r"


garrmission : missionID : missionDBID
Example: "|cffffff00|Hgarrmission:1610:000000000238f82d|h[Withered Straining]|h|r"
Note: This link type can also be used for securely implementing custom links by posthooking SetItemRef() since it silently fails on non-numbers, whereas custom link types would error out. It does not work on actual chat messages through SendChatMessage() as the server won't show the message.
hooksecurefunc("SetItemRef", function(link)
	local linkType, addon, param1 = strsplit(":", link)
	if linkType == "garrmission" and addon == "SomeAddon" then
		if param1 == "foo" then
print("|cFFFFFF00|Hgarrmission:SomeAddon:foo|h[Some Clickable Message]|h|r")


Opens the /raidinfo list.

instancelock : guid : instanceID : difficulty : defeatedEncounters
  • guid The player's GUID.
  • instanceID The instance's InstanceID
  • difficulty The instance's DifficultyID
  • defeatedEncounters Bitfield indicating the encounters that have been defeated. e.g. 7 means that the first 3 encounters have been cleared.
Example: "|cffff8000|Hinstancelock:Player-3296-000957C8:543:2:4|h[Hellfire Citadel: Ramparts]|h|r"


Main article: ItemLink
item : itemString
Example: "|cffffffff|Hitem:2592:::::::::::::::::|h[Wool Cloth]|h|r"


Opens the Adventure Guide.

journal : journalType : journalID : difficulty
"|cff66bbff|Hjournal:2:18068:14|h[Titan Spark]|h|r"
See also: EJ_HandleLinkPath()


Used for  [Mythic Keystone].

keystone : itemID : challengeModeID : level : affix1 : affix2 : affix3 : affix4
"|cffa335ee|Hkeystone:180653:381:2:10:0:0:0|h[Keystone: Spires of Ascension (2)]|h|r"
"|cffa335ee|Hkeystone:180653:375:15:10:8:12:121|h[Keystone: Mists of Tirna Scithe (15)]|h|r"
"|cffa335ee|Hkeystone:180653:379:18:10:8:12:121|h[Keystone: Plaguefall (18)]|h|r"
See also: MapChallengeMode.db2, KeystoneAffix.db2


levelup : level : levelUpType : [petName]
"|cffFF4E00|Hlevelup:2:LEVEL_UP_TYPE_CHARACTER|h[Level 2]|h|r"
"|cffFF4E00|Hlevelup:2:LEVEL_UP_TYPE_PET:Bear|h[Level 2]|h|r"


Opens the /loot window.

lootHistory : rollID


Left-click: starts a whisper message
Right-click: opens the player context menu
Shift-click: sends a /who query
player : name : [lineID] : [chatType] : [chatTarget]
  • lineID Message ID for reporting.
See also: GetPlayerLink()


playerCommunity : name : communityClubID : communityStreamID : communityEpoch : communityPosition
Example: "|HplayerCommunity:Ketho-Anasterian:333281:1:1557794365297000:5886997898769|h[|cfffefefeKetho|r]|h"

BNplayer friend links.

BNplayer : name : bnetIDAccount : lineID : chatType : chatTarget


BNplayerCommunity : name : bnetIDAccount : communityClubID : communityStreamID : communityEpoch : communityPosition


quest : questID : questLevel : unknown1 : unknown2 : unknown3
"|cffffff00|Hquest:53370:-1:110:120:3|h[Hour of Reckoning]|h|r"
"|cffff8040|Hquest:40746:113:110:255:0|h[One of the People]|h|r"
See also: QuestLink


Opens the Twitter /share window for an achievement.

shareachieve : achievementID : earned
Example: "|cffffd200|Hshareachieve:964:1|h|TInterface\ChatFrame\UI-ChatIcon-Share:18:18|t|h|r"


Twitter item link.

shareitem : itemLink : earned
Example: "|cffffd200|Hshareitem:151428::::::::20:257:512:1:1:4068:20::::1|h|TInterface\ChatFrame\UI-ChatIcon-Share:18:18|t|h|r"


Twitter screenshot link.

sharess : screenshotIndex
  • screenshotIndex: index of the screenshot to autofill the Tweet with, counted from last login.
Example: "|cffffd200|Hsharess:1|h|TInterface\ChatFrame\UI-ChatIcon-Share:18:18|t|h|r"


spell : spellId : glyphId : [event]
"|cff71d5ff|Hspell:2096:0|h[Mind Vision]|h|r"
"|Hspell:589:0:SPELL_DAMAGE|hShadow Word: Pain|h"
See also: GetSpellLink()


Opens the In-Game Store.

storecategory : category
Example: "|cffffd000|Hstorecategory:games|h[Click To Upgrade]|h|r"


talent : talentID
Example: "|cff71d5ff|Htalent:21754|h[Circle of Healing]|h|r"
See also: GetTalentInfoByID()


Shows the tradeskill window (from another player).

trade : guid : spellID : skillLineID
Example: "|cffffd000|Htrade:Player-3296-000957C8:195128:185|h[Cooking]|h|r"
See also: TradeSkillLink


transmogappearance : sourceID


Previews a weapon enchant in the Dressing room.

transmogillusion : sourceID
Example: "|cffff80ff|Htransmogillusion:5862|h[Titanguard]|h|r"
See also: C_TransmogCollection.GetIllusionSourceInfo()


transmogset : setID

See also: C_TransmogSets.GetSetInfo()


Shows the unit tooltip. Opens the combat log context menu on right-click.

unit : guid : [name]
Example: "|Hunit:Creature-0-2083-0-7-299-00005A0F91:Young Wolf|hYoung Wolf|h"

Implemented in Blizzard_CombatLog.lua


Opens a URL in the default web browser.

urlIndex : index
Example: "|HurlIndex:25|h|cff006995Frequently Asked Questions|r|h"


Opens the World Map to display a pinned waypoint.

 worldmap : uiMapID : x : y
  • uiMapID The UiMapID for the waypoint.
  • x The X coordinate of the waypoint, multiplied by 10000.
  • y The Y coordinate of the waypoint, multiplied by 10000.
Example: "|cffffff00|Hworldmap:84:7222:2550|h[|A:Waypoint-MapPin-ChatIcon:13:13:0:0|a Map Pin Location]|h|r"
enUS globalstring: MAP_PIN_HYPERLINK = "|A:Waypoint-MapPin-ChatIcon:13:13:0:0|a Map Pin Location"
See also: C_Map.SetUserWaypoint()