Chat link format
Chat link is a text code that can be entered in the chat panel to create a link referencing an in-game element; mouse-hovering over the link displays a tooltip information about that entity. Chat links are displayed in the currently selected language localization of the game. They are used to share information with other players or, sometimes, to learn extra details about the linked object. Many elements in the game can be linked to in chat: map objects like waypoints or points of interest, items, build templates, individual traits, skills, and effects, and other mechanics. Some chat links can be clicked for extra interaction: for example, a location link will open a map centered on that point, while a build template link will display a pop-up allowing to apply the build to a character of the same profession.
Chat links are automatically created when clicking an element while holdingor . The former will immediately send a link into the current chat channel, while the latter will append it to the current chat line, allowing for further changes. Chat link can also be typed in manually or copied from elsewhere. For most in-game elements, chat link information is listed on this wiki in the respective articles, and can be copy-pasted in the chat panel.
The creation of chat links requires knowledge about the internal identifiers and involves a complex system of codes. For those purposes, most game API identifiers are discovered by the players from chat links.
Following the skill template format from the original Guild Wars, the links make use of Base64 to encode their information. A link is enclosed within single square brackets and preceded by an ampersand, for example
[&AgEAWgAA] will render a link for the Basic Salvage Kit.
The first byte of a link contains the header. It describes the type of the link:
0x01– Coin link[note 1]
0x02– Item link
0x03– NPC text string[note 1]
0x04– Map link for waypoints and points of interest
0x05– PvP Game[note 2]
0x06– Skill link
0x07– Trait link
0x08– User[note 1]
0x09– Recipe link
0x0A– Wardrobe link
0x0B– Outfit link
0x0C– WvW objective link
0x0D– Build template link
0x0E– Achievement link[note 1]
For most link types, the header is followed by the ID as a (likely unsigned) 3-byte (24bit) little-endian integer, then by a byte of all zeroes. It appears that the game currently ignores the value of this last byte, even if it is not zero. It is presumably present to allow for extensions. (If that is truly the case then the byte should be kept all zeroes to avoid unexpected behavior should the game decide to make use of it in the future.)
Link type details
The quantity of items is encoded as a single byte immediately following the header byte, before the three byte item ID.
[&AgH1WQAA]– Copper Harvesting Sickle (Id: 23029)
[&AgH2WQAA]– Copper Logging Axe (Id: 23030)
[&AgH3WQAA]– Copper Mining Pick (Id: 23031)
[&AgEAWgAA]– Basic Salvage Kit (Id: 23040)
Wardrobe skins and upgrades
Additional data, such as the item ID of an attached upgrade component or wardrobe skin ID can be added by adding flags to the byte after the base item id.
1 << 7) binary:
1 << 6) binary:
0100 0000first upgrade slot in use
1 << 5) binary:
0010 0000second upgrade slot in use
See Bit field for an explanation.
When there's only one upgrade, regardless of which upgrade slot's flag is used, the game will always show the first slot in use.
If a skin or upgrade is absent the relevant field is omitted from the code, not zeroed out. This causes the item code to have a variable length and the location of each part to shift. The examples below demonstrate this.
- Items used
- Weapon - Zojja's Claymore (Id: 46762 — 24bit little-endian hex:
AA B6 00)
- Wardrobe Skin - Dreamthistle Greatsword Skin (Wardrobe Id. 3709 — 24bit little-endian hex:
7D 0E 00)
- Sigil 1 - Superior Sigil of Bloodlust (Id: 24575 — 24bit little-endian hex:
FF 5F 00)
- Sigil 2 - Superior Sigil of Force (Id: 24615 — 24bit little-endian hex:
27 60 00)
- flags in binary, HEX Values and Chat Codes
- Weapon only
0000 0000 == 0x00
02 01 AA B6 00 00
- Weapon with Sigil 1
0100 0000 == 0x40
02 01 AA B6 00 40 FF 5F 00 00
- Weapon with Sigil 1 and Sigil 2
0110 0000 == 0x60
02 01 AA B6 00 60 FF 5F 00 00 27 60 00 00
- Weapon with Wardrobe Skin
1000 0000 == 0x80
02 01 AA B6 00 80 7D 0E 00 00
- Weapon with Wardrobe Skin and Sigil 1
1100 0000 == 0xc0
02 01 AA B6 00 C0 7D 0E 00 00 FF 5F 00 00
- Weapon with Wardrobe Skin, Sigil 1 and Sigil 2
1110 0000 == 0xe0
02 01 AA B6 00 E0 7D 0E 00 00 FF 5F 00 00 27 60 00 00
NPC text string
Currently disabled. Specifies the three byte internal string identifier and displays the corresponding text in the chat window (sometimes just a chat bubble), highlighted in a color that matches the chat channel. (e.g. gold for guild chat, blue for party chat, etc.)
[&AxcnAAA=]– Fight what cannot be fought. (Id: 10007)
[&AxgnAAA=]– Any secrets you want to share? (Id: 10008)
[&AxknAAA=]– Any news? (Id: 10009)
[&AyAnAAA=]– Do you need assistance? (Id: 10016)
See Chat link format/0x03 codes for a list of the documented codes.
Specifies the three byte point of interest (internally landmarks, waypoints, and vistas are deemed as points of interest) identifier.
– Dr. Bleent's Encampment (Id: 56)
– Desider Atum Waypoint (Id: 72)
– Caudecus' Estate Waypoint (Id: 825)
See Chat link format/0x04 codes for a list of the documented codes.
Specifies the three byte skill (including effects, buffs, and abilities) identifier.
Specifies the three byte trait identifier.
– Opening Strike (Id: 1010)
See Chat link format/0x07 codes for a list of the documented codes.
Currently disabled. Specifies the account's GUID and character name. The first 16 bytes contain the GUID, the rest is the character name in UTF-16LE followed by two null bytes as terminator.
08 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 45 00 61 00 73 00 74 00 65 00 72 00 00 00
To convert between the GUID exposed by the API and the one used in the game, consider the following structure (after 0x08):
Which the API represents as
04030201-0605-0807-090A-0B0C0D0E0F10. The character name can simply be read and is
Easter in this example.
Specifies the three byte recipe identifier.
– Recipe: Soft Wood Plank (Id: 1)
– Recipe: Ancient Wood Plank (Id: 2)
– Recipe: Bolt of Cotton (Id: 7)
Specifies the three byte wardrobe skin identifier.
– Apprentice Coat (Id: 4)
0x0A codes are documented using the skin infobox on the wiki.
Specifies the three byte outfit identifier.
– Witch's Outfit (Id: 4)
See Chat link format/0x0B codes for a list of the documented codes.
Specifies a three byte WvW objective identifier, followed by one byte of all zeroes, followed by a three byte WvW map identifier (ties in with API:2/maps), followed by one byte of all zeroes.
Note that the identifiers specified in API:2/wvw/objectives are of the form
[&DAYAAAAmAAAA]– Speldan Clearcut (Objective Id: 6 and Map Id: 38 (Eternal Battlegrounds) → Id: 38-6)
See Chat link format/0x0C codes for a list of the documented codes.
The first byte after 0x0D specifies the character's profession, as per /v2/professions's
Following that are 3 pairs of 2 bytes describing the character's specializations.
The first byte gives a specialization ID, resolvable against /v2/specializations. The second byte encodes the major trait choices as 2-bit values from 0 to 3, in reverse order. The first two bits of this byte are unused. Example:
- Specialization ID
- Third Trait Choice
- Second Trait Choice
- First Trait Choice
The choice values represent which of the three traits were chosen, where
1 is the top,
2 is the middle, and
3 is the bottom choice. A value of
0 means no trait is yet chosen.
After that, there are 10 sets of 2 bytes containing skill information. The IDs here are provided in little-endian format and refer to internal skill palette IDs. These palette IDs may be resolved to the APIs skill IDs via /v2/professions's
skills_by_palette field (which is available by specifying
v=latest within the request URL). A wiki generated list of palette IDs may be found on this subpage.
In order, each 16-bit value represents the following skills:
- Terrestrial Heal Skill
- Aquatic Heal Skill
- Terrestrial Utility Skill 1
- Aquatic Utility Skill 1
- Terrestrial Utility Skill 2
- Aquatic Utility Skill 2
- Terrestrial Utility Skill 3
- Aquatic Utility Skill 3
- Terrestrial Elite Skill
- Aquatic Elite Skill
It is not possible to place the same skill in multiple terrestrial or aquatic slots. The game will not translate such a code into a link. For example, the code
[&DQg1OSc5AjkAAAAAmQEAAJkBAAAAAJkBAAAAAAAAAAAAAAAAAAAAAAAAAAA=] represents a build template with 3 Epidemic utility skills, 2 terrestrial and 1 aquatic, but when pasted into the chat the game echoes back the code verbatim. Removing either terrestrial Epidemic skill makes the game recognize the code.
The next 16 bytes of the chat link are used to encode profession-specific information, with the context changing depending on whether the profession is Ranger or Revenant. For other classes those 16 bytes are unused.
Ranger build links will additionally include 4 more bytes, each describing the pets they have equipped. Each byte represents a pet ID resolvable against /v2/pets in the following order:
- Terrestrial Pet 1
- Terrestrial Pet 2
- Aquatic Pet 1
- Aquatic Pet 2
The other 12 profession-specific bytes are unused.
Revenant build links will additionally include 16 more bytes.
The first 4 bytes are each describing the legends they have equipped. Legends are encoded in the following order:
- Terrestrial Legend 1 (the active legend, above weapon skill 2)
- Terrestrial Legend 2 (the inactive legend, above weapon skill 1)
- Aquatic Legend 1
- Aquatic Legend 2
Each legend is encoded as one of the following values, as per /v2/legends's
1- Legendary Dragon Stance
2- Legendary Assassin Stance
3- Legendary Dwarf Stance
4- Legendary Demon Stance
5- Legendary Renegade Stance
6- Legendary Centaur Stance
Then 12 more bytes are included to save the order of the inactive legend utility skills. They are saved with 2 bytes per skill, in the following order:
- Inactive Terrestrial Legend skill 1
- Inactive Terrestrial Legend skill 2
- Inactive Terrestrial Legend skill 3
- Inactive Aquatic Legend skill 1
- Inactive Aquatic Legend skill 2
- Inactive Aquatic Legend skill 3
With Secrets of the Obscure and the update on the 27th of June, the serialization for build codes changed. At the end of every chat code, beyond the profession-specific information, are now two dynamically sized arrays that contain information about selected weapons and skill variants.
The first byte indicates the number of unique weapons selected.
Each weapon is encoded in two bytes.
0x01 with a following
0x59 0x00 means the build is using one weapon, which is a Staff.
Known weapon type IDs are:
03 5a 00 35 00 05 00 refers to 3 weapons, Axe/Axe + Sword/Mace.
On the other hand
02 5a 00 05 00 refers to 2 unique weapons. It could mean Axe/Axe + Sword/Sword, Axe/Sword + Axe/Sword, or Sword/Sword + Axe/Axe.
With the introduction of Weaponmaster Training, it became possible to select skill variants for weapon skills in some cases. The next byte, following the weapon array, indicates the number of skill overrides stored in the build template. For each selected skill, a four-byte skill ID resolvable against /v2/skills is stored. 
Currently disabled. Shows a specific achievement.
[&DrYAAAA=]– Bar Brawl Combos (Id: 182)
[&DpEGAAA=]– Birthday—Year 1 (Id: 1681)
[&DoQZAAA=]– Voidwalker (Id: 6532)
[&DuMbAAA=]– Shattered Weapon Collector (Id: 7139)
See Chat link format/0x0E codes for a list of the documented codes.
For many templates found on the wiki, the game ID rather than the full chat link is required. This can be obtained by typing
/wiki, then holding + clicking on the item in question. Pressing enter will then bring up your browser and return the wiki's enhanced search page which will decode the chat link into an ID at the top of the page. If the ID has been set in an infobox on any page, then the search page will redirect you to the item with the matching ID, pressing the "back" button in your browser will return you to the results prior to being redirected.
- Some item chat links will appear to not work correctly. Often this is because in order for the chat code to work, the item must actually be in the player's inventory.