Enums
What the codes in the data mean. The values and labels below were read from the 1,752 matches published from 2026-10-01 to 2026-10-08, unless a section says otherwise.
Teams
team_code, every *_team_code column, winner_team_code, and
team_change.old_team_code and new_team_code.
| Code | Team |
|---|---|
| 0 | Unassigned, seen as old_team_code when a player joins a team |
| 1 | Spectator (the game's code; not seen in these matches) |
| 2 | Terrorists |
| 3 | Counter-Terrorists |
Round end
round_end.win_reason_code, with the game's message for it in
win_reason_message.
| Code | Message | Winner | Meaning |
|---|---|---|---|
| 1 | #SFUI_Notice_Target_Bombed | Terrorists | The bomb exploded. |
| 7 | #SFUI_Notice_Bomb_Defused | Counter-Terrorists | The bomb was defused. |
| 8 | #SFUI_Notice_CTs_Win | Counter-Terrorists | The Terrorists were eliminated. |
| 9 | #SFUI_Notice_Terrorists_Win | Terrorists | The Counter-Terrorists were eliminated. |
| 11 | #SFUI_Notice_All_Hostages_Rescued | Counter-Terrorists | Hostages rescued (hostage maps). |
| 12 | #SFUI_Notice_Target_Saved | Counter-Terrorists | Time ran out with no bomb planted. |
| 13 | #SFUI_Notice_Hostages_Not_Rescued | Terrorists | Time ran out on a hostage map. |
| 17 | #SFUI_Notice_Terrorists_Surrender | Counter-Terrorists | The Terrorists surrendered. |
| 18 | #SFUI_Notice_CTs_Surrender | Terrorists | The Counter-Terrorists surrendered. |
No other code appears. A drawn round would be code 10, but drawn rounds are removed before publication.
Hit groups
player_hurt.hit_box_code: where the damage landed. The names are the game's
hit groups; the data holds the codes 0 to 8.
| Code | Hit group |
|---|---|
| 0 | Generic (no hit group) |
| 1 | Head |
| 2 | Chest |
| 3 | Stomach |
| 4 | Left arm |
| 5 | Right arm |
| 6 | Left leg |
| 7 | Right leg |
| 8 | Neck |
Weapon types
item_equip.weapon_type_code.
| Code | Type | Examples |
|---|---|---|
| 0 | Knife | |
| 1 | Pistol | P2000, Glock-18, Desert Eagle |
| 2 | SMG | MAC-10, MP9, MP7 |
| 3 | Rifle | AK-47, M4A4, Galil AR |
| 4 | Shotgun | XM1014, MAG-7, Nova |
| 5 | Sniper rifle | AWP, SSG 08, SCAR-20 |
| 6 | Machine gun | Negev, M249 |
| 7 | C4 | |
| 8 | Taser | Zeus x27 |
| 9 | Grenade | Flashbang, HE Grenade, Smoke Grenade |
Weapons and items
player_vector.weapon_code, every *_weapon_code column,
grenade_vector.grenade_weapon_code, and def_index in item_pickup,
item_dropped, item_refund and world_item_vector are all
Valve's item definition index. weapon_codes.csv
lists every code seen in the data except 0, with the game's name for it and its type.
| Code | Item | Code | Item | Code | Item |
|---|---|---|---|---|---|
| 1 | Desert Eagle | 24 | UMP-45 | 42 | Knife (CT default) |
| 2 | Dual Berettas | 25 | XM1014 | 43 | Flashbang |
| 3 | Five-SeveN | 26 | PP-Bizon | 44 | HE Grenade |
| 4 | Glock-18 | 27 | MAG-7 | 45 | Smoke Grenade |
| 7 | AK-47 | 28 | Negev | 46 | Molotov |
| 8 | AUG | 29 | Sawed-Off | 47 | Decoy Grenade |
| 9 | AWP | 30 | Tec-9 | 48 | Incendiary Grenade |
| 10 | FAMAS | 31 | Zeus x27 | 49 | C4 |
| 11 | G3SG1 | 32 | P2000 | 50 | Kevlar Vest |
| 13 | Galil AR | 33 | MP7 | 51 | Kevlar + Helmet |
| 14 | M249 | 34 | MP9 | 55 | Defuse Kit |
| 16 | M4A4 | 35 | Nova | 59 | Knife (T default) |
| 17 | MAC-10 | 36 | P250 | 60 | M4A1-S |
| 19 | P90 | 38 | SCAR-20 | 61 | USP-S |
| 23 | MP5-SD | 39 | SG 553 | 63 | CZ75-Auto |
| 40 | SSG 08 | 64 | R8 Revolver |
Codes 500 and up are knife skins, such as 507 for the Karambit; the data names
all of them knife, and the CSV gives Valve's name for each.
Prefer the code to the item name. The short names in item_equip and
item_pickup are shared between weapons that use the same slot: hkp2000 is
both the P2000 and the USP-S, m4a1 both the M4A4 and the M4A1-S, mp7 both
the MP7 and the MP5-SD, and deagle both the Desert Eagle and the R8 Revolver.
item_dropped and world_item_vector use display names such as AK-47
instead. item_equip has no item code: CS2's equip event doesn't carry one,
and its def_index column, always 0, was removed on 2026-10-05.
Ranks
player_info.rank_type says which ladder player_info.rank is on.
rank_type | Ladder | rank |
|---|---|---|
| 11 | Premier | The CS Rating, from 0 up; the highest seen is 28,467. |
| 12 | Competitive | The skill group on that map, 0 to 18 (below). |
| 7 | Wingman | The Wingman skill group, 0 to 18 (below). |
| -1 | Not a Valve ladder | 0. FACEIT matches and most manual uploads. |
| 0 | Unknown | Older matches use 0 instead of -1; none in October. |
Skill groups, for Competitive and Wingman: 0 unranked, 1 Silver I, 2 Silver II, 3 Silver III, 4 Silver IV, 5 Silver Elite, 6 Silver Elite Master, 7 Gold Nova I, 8 Gold Nova II, 9 Gold Nova III, 10 Gold Nova Master, 11 Master Guardian I, 12 Master Guardian II, 13 Master Guardian Elite, 14 Distinguished Master Guardian, 15 Legendary Eagle, 16 Legendary Eagle Master, 17 Supreme Master First Class, 18 The Global Elite. The names are the game's; the data holds the numbers.
Round phases
round_state.phase: first and second for the halves, halftime between
them, and postgame after the last round.
Event types
event_type in each multi-event channel takes these values:
| Channel | event_type values |
|---|---|
bomb_action | bomb_begin_plant, bomb_pickup, bomb_dropped |
bomb_defuse | bomb_begin_defuse |
bomb_state | bomb_planted, bomb_defused, bomb_exploded |
grenade_state | flashbang_detonate, hegrenade_detonate, smokegrenade_detonate, smokegrenade_expired, decoy_started, decoy_detonate |
molotov_state | inferno_startburn, inferno_expire |
weapon_action | reload, zoom, fire_on_empty |
round_state | begin_new_match, round_announce_match_start, round_prestart, round_start, round_poststart, cs_round_start_beep, cs_round_final_beep, round_freeze_end, freezetime_ended_inferred, buytime_ended, bomb_planted, bomb_defused, bomb_exploded, round_end, round_officially_ended, cs_pre_restart, announce_phase_end, round_announce_last_round_half, round_announce_match_point, round_announce_final, cs_win_panel_match |
world_object | spawned, opening, open, closing, closed, moving, broken, cleanup |
hostage_state | being_untied, getting_picked_up, being_carried, getting_dropped, idle, rescued, hurt |
The spec lists a few more event types for some channels, such as
bomb_abort_plant, inferno_extinguish, and following_player and dead on
hostage_state; none appeared in these matches.
Bombsites
Use site in bomb_action and bomb_state for the bombsite: it is A or
B, and null when site_code is null. A map with one bombsite (wingman)
calls it A.
site_code beside it is not A or B. It is the game's id for the bombsite's
trigger, and it differs from match to match: Mirage alone had 325 different
values in these matches. Matches parsed before site was added have only
site_code; tell their sites apart by position, or by the callout in
player_status.place_name.
Radar colours
player_info.radar_color_code: 0 to 4 are the five teammate colours on the
radar, and -1 means none. The data doesn't say which colour each number is.
Game constants
The game's fixed numbers: timers, sizes and speeds. They are not codes, but they come up whenever you work with the data. Each value below was measured on 50 production matches from September and October 2026 (Premier, Competitive, Wingman and FACEIT, hostage maps included); a row says when a value is the game's rather than measured. Distances are in game units; a unit is about an inch, so a standing player is about 6 feet tall.
Match and round
| Premier, FACEIT | Competitive | Wingman | Where to see it | |
|---|---|---|---|---|
| Tick rate | 64 | 64 | 64 | header.tick_rate |
| Rounds in regulation | 24 | 24 | 16 | header.max_rounds |
| Rounds to win | 13 | 13 | 9 | |
| Freeze time | 20 s | 15 s | 10 s | header.freeze_time |
| Buy time after freeze | 20 s | 20 s | 20 s | round_freeze_end to buytime_ended |
| Round time | 1:55 (115 s) | 1:55 (115 s) | 1:30 (90 s) | header.round_time, in seconds (115, 90; parser 6.2.0 and later). header.round_time_defuse holds the same in minutes (1.92, 1.50), but on FACEIT and league servers it can hold the warmup value (2) |
| Starting money | $800 | $800 | $800 | player_status.money in round 1 |
| Most money a player holds | $16,000 | $16,000 | $8,000 | player_status.money |
| Health, armour at most | 100 | 100 | 100 | player_status.health, armor |
Round time runs from the end of freeze time. Hostage maps use the same 1:55. A few rounds have a longer freeze time than the setting.
At 12–12, Premier and FACEIT play overtime: six more rounds, first to 16. Premier ends a 15–15 overtime as a draw; two matches here did. Competitive and Wingman have no overtime and can end level, 12–12 or 8–8.
Bomb and utility
| Timer | Value | Measured as |
|---|---|---|
| Planting the bomb | 3.125 s | bomb_begin_plant to bomb_planted: 200 ticks |
| Bomb timer | 41 s | bomb_planted to bomb_exploded; see below |
| Defusing, no kit | 10 s | bomb_begin_defuse to bomb_defused, has_kit false |
| Defusing with a kit | 5 s | the same, has_kit true |
| Smoke | 22.06 s | smokegrenade_detonate to smokegrenade_expired |
| Molotov fire | 7.03 s | inferno_startburn to inferno_expire, not put out by smoke |
| Incendiary fire | 5.5 s | the same |
| Flash blindness | up to 5.3 s | player_status.flash_duration |
The bomb can be defused for 40 s after it is planted. The last second is the
explosion itself: defusing stops, and bomb_exploded comes at 41 s.
Player size and jumps
| Measure | Units | Measured as |
|---|---|---|
| Height, standing | 72 | a player standing on a standing teammate is 72 units higher |
| Height, crouched | 54 | on a crouched teammate, 54 units higher |
| Width | 32 | two players side by side are never closer than 32 units in x or y |
| Jump height | 55.83 | rise of z_pos from take-off to the top of a jump on flat ground |
| Crouch-jump height | 64.83 | the same, crouching in the air |
| Eye height, standing | 64 | the game's value; the data holds the feet, not the eyes |
| Eye height, crouched | 46 | the game's value |
A player is a box 32 units wide and deep, which doesn't turn with the
player. Its position (x_pos, y_pos, z_pos) is the middle of the bottom
of the box: the feet.
Movement speed
Top speed on the ground, in units per second, as player_vector.speed_2d
reaches it. speed_2d is a derived column that newer matches don't store:
compute it on load with add_player_vector_derived_columns, as the
spec explains. Top speed depends on the weapon in hand:
| Speed | Weapon in hand |
|---|---|
| 250 | Every knife, C4 |
| 245 | Every grenade |
| 240 | Glock-18, USP-S, P2000, P250, Five-SeveN, Tec-9, CZ75-Auto, Dual Berettas, MAC-10, MP9, PP-Bizon |
| 235 | MP5-SD |
| 230 | Desert Eagle, Zeus x27, UMP-45, P90, SSG 08 |
| 225 | M4A4, M4A1-S, MAG-7 |
| 220 | R8 Revolver, MP7, FAMAS, AUG, Nova |
| 215 | AK-47, Galil AR, XM1014, G3SG1, SCAR-20 |
| 210 | SG 553, Sawed-Off |
| 200 | AWP |
| 195 | M249 |
| 150 | Negev |
Other ways of moving change that:
| Moving | Top speed | Where to see it |
|---|---|---|
| Walking (shift) | 52% of the weapon's speed: 130 with a knife, 112 with an AK-47 | player_status.is_walking |
| Crouched | 34% of the weapon's speed: 85 with a knife, 73 with an AK-47 | player_vector.is_ducked |
| Scoped, AWP | 100 | player_status.is_scoped |
| Scoped, G3SG1, SCAR-20 | 120 | |
| Scoped, AUG, SG 553 | 150 | |
| Scoped, SSG 08 | 230: scoping doesn't slow it | |
| Carrying a hostage | 200, whatever the weapon: even a knife is held to 200 | player_vector.is_rescuing |
These are speeds on the ground. Players can go faster in the air.