Reference library

Emotes and animations.

Search the configured world’s emotes table by name, row ID, visual state ID or message. Each row maps a name to an animation for a client version range.

  • 31,574 mappings
  • 25,249 unique names
  • 220 mappings with chat text
  • 31,354 animation-only mappings

Snapshot: October 14, 2026. These are database mappings; a client’s models and assets determine what can actually render. A listed name does not automatically register a player slash command.

Table fields and usage ↓

Build filtering uses the stored inclusive range: minimum ≤ build ≤ maximum. A maximum of 0 means no upper limit. Leave the build blank to compare all mappings for a name.

31,574 matching mappings.

Available mappings from the world database snapshot. Empty message fields are shown as —.
Row IDNameVisual state IDClient build rangeMessageTargeted messageStored self message
6507kill_visemes_u38943 1–843 ———
21260kill_visemes_u45991 60085–60114 ———
6508kill_visemes_w38944 1–843 ———
21261kill_visemes_w45992 60085–60114 ———
4496kill_viseme_a34306 1–843 ———
21205kill_viseme_a45936 60085–60114 ———
3876kill_viseme_aa33535 1–843 ———
21206kill_viseme_aa45937 60085–60114 ———
3877kill_viseme_ae33536 1–843 ———
21207kill_viseme_ae45938 60085–60114 ———
3878kill_viseme_ah33537 1–843 ———
21208kill_viseme_ah45939 60085–60114 ———
3879kill_viseme_ao33538 1–843 ———
21209kill_viseme_ao45940 60085–60114 ———
3880kill_viseme_aw33539 1–843 ———
21210kill_viseme_aw45941 60085–60114 ———
3881kill_viseme_ay33540 1–843 ———
21211kill_viseme_ay45942 60085–60114 ———
3882kill_viseme_b33541 1–843 ———
21212kill_viseme_b45943 60085–60114 ———
4497kill_viseme_c34307 1–843 ———
21213kill_viseme_c45944 60085–60114 ———
3883kill_viseme_ch33542 1–843 ———
21214kill_viseme_ch45945 60085–60114 ———
3884kill_viseme_d33543 1–843 ———
21215kill_viseme_d45946 60085–60114 ———
3885kill_viseme_dh33544 1–843 ———
21216kill_viseme_dh45947 60085–60114 ———
4498kill_viseme_e34308 1–843 ———
21217kill_viseme_e45948 60085–60114 ———
3886kill_viseme_eh33545 1–843 ———
21218kill_viseme_eh45949 60085–60114 ———
3887kill_viseme_er33546 1–843 ———
21219kill_viseme_er45950 60085–60114 ———
3888kill_viseme_ey33547 1–843 ———
21220kill_viseme_ey45951 60085–60114 ———
3889kill_viseme_f33548 1–843 ———
21221kill_viseme_f45952 60085–60114 ———
3890kill_viseme_g33549 1–843 ———
21222kill_viseme_g45953 60085–60114 ———
3891kill_viseme_h33550 1–843 ———
21223kill_viseme_h45954 60085–60114 ———
3892kill_viseme_ih33551 1–843 ———
21224kill_viseme_ih45955 60085–60114 ———
3893kill_viseme_iy33552 1–843 ———
21225kill_viseme_iy45956 60085–60114 ———
3894kill_viseme_j33553 1–843 ———
21226kill_viseme_j45957 60085–60114 ———
3895kill_viseme_k33554 1–843 ———
21227kill_viseme_k45958 60085–60114 ———
3896kill_viseme_l33555 1–843 ———
21228kill_viseme_l45959 60085–60114 ———
3897kill_viseme_m33556 1–843 ———
21229kill_viseme_m45960 60085–60114 ———
3898kill_viseme_n33557 1–843 ———
21230kill_viseme_n45961 60085–60114 ———
3899kill_viseme_ng33558 1–843 ———
21231kill_viseme_ng45962 60085–60114 ———
4499kill_viseme_o34309 1–843 ———
21232kill_viseme_o45963 60085–60114 ———
3900kill_viseme_ow33559 1–843 ———
21233kill_viseme_ow45964 60085–60114 ———
3901kill_viseme_oy33560 1–843 ———
21234kill_viseme_oy45965 60085–60114 ———
3902kill_viseme_p33561 1–843 ———
21235kill_viseme_p45966 60085–60114 ———
3903kill_viseme_r33562 1–843 ———
21236kill_viseme_r45967 60085–60114 ———
4773kill_viseme_reast34646 1–843 ———
21237kill_viseme_reast45968 60085–60114 ———
4500kill_viseme_rest34310 1–843 ———
21238kill_viseme_rest45969 60085–60114 ———
3904kill_viseme_s33563 1–843 ———
21239kill_viseme_s45970 60085–60114 ———
3905kill_viseme_sh33564 1–843 ———
21240kill_viseme_sh45971 60085–60114 ———
3906kill_viseme_t33565 1–843 ———
21241kill_viseme_t45972 60085–60114 ———
3907kill_viseme_th33566 1–843 ———
21242kill_viseme_th45973 60085–60114 ———
4501kill_viseme_u34311 1–843 ———
21243kill_viseme_u45974 60085–60114 ———
3908kill_viseme_uh33567 1–843 ———
21244kill_viseme_uh45975 60085–60114 ———
3909kill_viseme_uw33568 1–843 ———
21245kill_viseme_uw45976 60085–60114 ———
3910kill_viseme_v33569 1–843 ———
21246kill_viseme_v45977 60085–60114 ———
3911kill_viseme_w33570 1–843 ———
21247kill_viseme_w45978 60085–60114 ———
3912kill_viseme_x33571 1–843 ———
21248kill_viseme_x45979 60085–60114 ———
3913kill_viseme_y33572 1–843 ———
21249kill_viseme_y45980 60085–60114 ———
3914kill_viseme_z33573 1–843 ———
21250kill_viseme_z45981 60085–60114 ———
3915kill_viseme_zh33574 1–843 ———
21251kill_viseme_zh45982 60085–60114 ———
6344kill_vision_138149 1–843 ———
21262kill_vision_145993 60085–60114 ———
Table fields and server behavior
Schema from the same database snapshot.
ColumnSQL typeMeaning
idint(10) unsigned Auto-increment primary key for the database row. This is not the animation ID.
namevarchar(128)
Nullable
Exact name used by the server’s animation lookup. The same name can have separate rows for different client builds.
visual_state_idint(10) unsigned Numeric animation ID sent in WS_CannedEmote for the selected mapping. IDs can change between version ranges.
messagevarchar(255)
Nullable
Default chat text, used without a different target or when targeted_message is empty. The server prefixes the originator’s name for player emotes.
targeted_messagevarchar(255)
Nullable
Chat text used when a different target exists. The %t placeholder is replaced with the target’s name.
self_messagevarchar(255)
Nullable
Stored database field. The current WorldDatabase loader does not select it and HandleEmote does not use it.
min_version_rangeint(10) unsigned Inclusive lowest client build for this mapping; 0 allows builds from zero upward.
max_version_rangeint(10) unsigned Inclusive highest client build; 0 means no upper limit.

Using a named animation

For example, wave maps to visual state 883 for builds 1–843 and 13287 for builds 60085–60114 in this snapshot. Search a name with the build left blank to see its variants.

In Lua, PlayAnimationString resolves the name through the emote catalog. This example plays the named animation without using the spawn’s current target:

PlayAnimationString(Spawn, "wave", nil, true)

Player canned emotes use /cannedemote wave. The separate /emote command sends custom chat text. For NPCs, HandleEmote sends the animation with an empty emote message.

Message placeholders: %t is the target’s name; %g1 becomes his/her, %g2 becomes him/her, and %g3 becomes he/she, using the originator’s gender. The current handler replaces the first occurrence of each placeholder.

The “With chat text” filter includes rows with a nonempty message or targeted_message. “Animation only” means both fields are empty. Stored self_message does not affect either filter.

Build filtering shows literal database ranges. FindAnimation also has a narrow verified fallback for bow_knockedtoback in builds 562–935 when no direct mapping exists; it does not make all modern mappings available to those builds.

Source: configured local world emotes table, exported read-only on October 14, 2026. Runtime behavior checked against WorldServer/WorldDatabase.cpp, WorldServer/Spawn/VisualStates.h, WorldServer/Zone/zoneserver.cpp, WorldServer/Commands/Commands.cpp and WorldServer/Lua/LuaFunctions.cpp. Other worlds can have different mappings.