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
15647backpack_untrained_backup25600 60085–60114 ———
15648backpack_untrained_dodge25601 60085–60114 ———
15649backpack_untrained_dodge0125602 60085–60114 ———
15650backpack_untrained_dodge0225603 60085–60114 ———
15651backpack_untrained_idle25604 60085–60114 ———
15652backpack_untrained_ouch25605 60085–60114 ———
15653backpack_untrained_ouch0125606 60085–60114 ———
15654backpack_untrained_parry25607 60085–60114 ———
15655backpack_untrained_recoil25608 60085–60114 ———
15656backpack_untrained_strafe_left25609 60085–60114 ———
15657backpack_untrained_strafe_right25610 60085–60114 ———
15658backpack_untrained_walk25611 60085–60114 ———
15061backpack_walk24835 60085–60114 ———
15659backpack_whirling_attack25612 60085–60114 ———
15660backpack_whistle25613 60085–60114 ———
15661backpack_wild_swing25614 60085–60114 ———
15662backpack_wild_swing_recoilmax25615 60085–60114 ———
15663backpack_woodworking_failure25616 60085–60114 ———
15664backpack_woodworking_idle25617 60085–60114 ———
15665backpack_woodworking_success25618 60085–60114 ———
15666backpack_worship_idle25619 60085–60114 ———
15667backpack_yeah25620 60085–60114 ———
375backup79 1–843 ———
8084backup10823 60085–60114 ———
1923backup_run2305 1–843 ———
8085backup_run10824 60085–60114 ———
12156badger_buff18046 60085–60114 ———
13815badger_dig21593 60085–60114 ———
12436badge_acquired18729 60085–60114 ———
2142bad_outcome012680 1–843 ———
8086bad_outcome0110825 60085–60114 ———
2143bad_outcome01_shuttle2681 1–843 ———
8087bad_outcome01_shuttle10826 60085–60114 ———
2144bad_outcome022682 1–843 ———
8088bad_outcome0210827 60085–60114 ———
2145bad_outcome02_shuttle2683 1–843 ———
8089bad_outcome02_shuttle10828 60085–60114 ———
16895ballista_launch_sound30475 60085–60114 ———
16896ballista_load_sound30476 60085–60114 ———
2039ball_bk2475 1–843 ———
8090ball_bk10829 60085–60114 ———
2040ball_bk_sm2476 1–843 ———
8091ball_bk_sm10830 60085–60114 ———
2041ball_glow2477 1–843 ———
8092ball_glow10831 60085–60114 ———
13608ball_lightning_bolt_p2p21095 60085–60114 ———
2042ball_wht2478 1–843 ———
8093ball_wht10832 60085–60114 ———
2043ball_wht_sm2479 1–843 ———
8094ball_wht_sm10833 60085–60114 ———
16220barbarian_snow_ice_trail27616 60085–60114 ———
14122barrel_blast_snd22269 60085–60114 ———
3043barrel_fire4795 1–843 ———
8095barrel_fire10834 60085–60114 ———
3032barrel_pieces4741 1–843 ———
8096barrel_pieces10835 60085–60114 ———
28904barrel_sit_enter74568 60085–60114 ———
28905barrel_sit_idle74569 60085–60114 ———
2672base3594 1–843 ———
8097base10836 60085–60114 ———
205battlecry80 1–843 shouts a fearsome battlecry.shouts a fearsome battlecry at %t.—
8099battlecry10838 60085–60114 shouts a fearsome battlecry.shouts a fearsome battlecry at %t.—
2729bat_swarm3769 1–843 ———
8098bat_swarm10837 60085–60114 ———
2044bc_caged_snd2480 1–843 ———
8100bc_caged_snd10839 60085–60114 ———
1991bd_cast_lp_snd2415 1–843 ———
8101bd_cast_lp_snd10840 60085–60114 ———
1992bd_fireburst_snd2416 1–843 ———
8102bd_fireburst_snd10841 60085–60114 ———
1924beaker012307 1–843 ———
8103beaker0110842 60085–60114 ———
11168beam0_blue15949 60085–60114 ———
11169beam0_red15950 60085–60114 ———
11170beam0_yellow15951 60085–60114 ———
11171beam1_blue15952 60085–60114 ———
11172beam1_red15953 60085–60114 ———
11173beam1_yellow15954 60085–60114 ———
11174beam2_blue15955 60085–60114 ———
11175beam2_red15956 60085–60114 ———
11176beam2_yellow15957 60085–60114 ———
11177beam3_blue15958 60085–60114 ———
11178beam3_red15959 60085–60114 ———
11179beam3_yellow15960 60085–60114 ———
11180beam_door15961 60085–60114 ———
11184beam_miss_orange15973 60085–60114 ———
11185beam_miss_purple15974 60085–60114 ———
12118bearwalk17957 60085–60114 ———
12057bear_attack_sound17872 60085–60114 ———
11709bear_backup16917 60085–60114 ———
12058bear_battlecry_sound17873 60085–60114 ———
12060bear_deadfall_sound17875 60085–60114 ———
12059bear_dead_sound17874 60085–60114 ———
11710bear_fall16918 60085–60114 ———
12061bear_headshake_sound17876 60085–60114 ———
11711bear_idle16919 60085–60114 ———
12062bear_idle_sound17877 60085–60114 ———
12063bear_idle_sound_omit17878 60085–60114 ———
11712bear_jump16920 60085–60114 ———
11713bear_jump_substitute16921 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.