Memorin
Reference

CS2 demo commands and replay controls

Counter-Strike 2 exposes eighteen console commands for playing, seeking and recording demos, plus the eight playback settings it does not persist to your config. Every entry below is transcribed from the game's own command list, including Valve's help text and the shipped default for each setting — nothing here is inferred from behaviour, and the two settings the game does persist are left out rather than published with a value that might be somebody's preference.

Before anything else: the console

None of this works without the developer console enabled. It is a checkbox in the game settings, and once it is on the default key opens a text box where these commands are typed. Everything below is typed there, not bound to a key, unless you decide to bind it yourself.

Two conventions in the tables below. Entries marked as a command do something when you run them and hold no value. Entries in the settings table hold a value you can read and change, and the value shown is the game's shipped default.

Playback and seeking commands

These are the ones you will actually use while reviewing a match. The description column is the game's own help text.

CommandWhat the game says it does
playdemoPlay a recorded demo file (.dem)
demouiShow/hide demo playback ui
demo_pausePauses demo playback
demo_resumeResumes demo playback
demo_togglepauseToggles demo playback
demo_gotoSkips to location in demo
demo_gototickSkips to a tick in demo
demo_marktickMarks the current demo playback tick for later use
demo_gotomarkSkips the current demo playback to the marked tick
demo_pauseatservertickPauses when the render time reaches the specified tick
demo_step_tickPlay for N ticks (default 1) and then pause
demo_timescaleSets demo replay speed
demo_infoPrint information about currently playing demo
demolistPrint demo sequence list
stopdemosStop looping demos (current demo will complete)

The three that repay learning properly are demo_gototick, the mark pair, and demo_timescale.

Seeking by tick is how you review a match without dragging a scrub bar past the moment forty times. Ticks are the demo's own unit of time, so a tick number is an exact, repeatable address for a moment — write it down and you can return to it next week.

The mark pair is the same idea with less arithmetic: run demo_marktick at the moment you care about, then demo_gotomark to come back to it. Useful when you are stepping around one fight repeatedly.

Timescale is the difference between watching a duel and understanding it. A value below 1 is slower than real time, above 1 is faster. For the last half-second before a death, demo_step_tick is better still — it advances a fixed number of ticks and stops, so you can walk into the moment one step at a time.

Recording commands

CommandWhat the game says it does
recordRecord a demo
stopFinish recording demo
_recordRecord a demo incrementally

Run record with a filename while you are in a match, and stop when you are done. Two things about this are worth knowing before you rely on it.

First, a client-side recording only holds what your client received. It is your point of view of the match, not the server's complete record, which is a different thing from the GOTV recordings that matchmaking and third-party platforms hand out. Second, it starts when you type it — there is no way to record a round that has already happened. For matches you did not think to record, the download route is the only route, and where CS2 demo files come from covers it.

Playback settings and their defaults

These hold values rather than doing something. The default column is the value the game ships with.

SettingDefaultWhat the game says it does
demo_ui_mode2UI mode for demo playback. 0 = disabled, 1 = minimal, 2 = full
demo_pause_at_endtruePause demo playback when the end of the file is reached, otherwise quit to main menu
demo_quitafterplaybackfalseQuits game after demo playback
demo_recordcommandstrueRecord commands typed at console into .dem files
demo_highlight_seconds_before6How many seconds before the actual highlight event to show when viewing highlights
demo_highlight_seconds_after2How many seconds after the actual highlight event to show when viewing highlights
demo_highlight_fade_duration0.25Duration of the fade in and of the fade out transitions (fade in + fade out is 2x this value)
demo_skip_to_shot_seconds_before2How many seconds before the shot to skip to when skipping to a specific shot ID

The highlight trio is the interesting one, because it quantifies something people argue about. The game's own highlight view gives you six seconds of lead-up and two seconds of follow-through. That six-second window is a reasonable default for reviewing a death by hand too — if you are jumping to the tick you died on, you are already too late to see the decision that killed you.

Camera and spectator commands

Demo playback reuses the spectator system, so the camera commands are the spec_ set rather than demo_.

CommandWhat the game says it does
spec_modeSet spectator mode
spec_playerSpectate a player by name or slot
spec_nextSpectate next player
spec_prevSpectate previous player
spec_gotoMove the spectator camera to a specific location, given as x y z pitch yaw
spec_show_xrayIf set to 1, you can see player outlines and name IDs through walls
spec_autodirectorAuto-director chooses best view modes while spectating

spec_goto is the one worth remembering. It takes a position and a view angle, which makes a camera placement writable down and repeatable — the same property that makes tick numbers useful, applied to where you are standing rather than when.

Where are CS2 demos stored?

Demos the game writes go into your Counter-Strike 2 installation, normally under the csgo folder inside the game directory, unless you gave record a path of your own. Demos you download from a third-party service land wherever your browser saves downloads, and they do not need to be moved into the game folder unless you intend to play them with playdemo.

That last clause is the practical part. The folder only matters because playdemo resolves filenames relative to the game. If you are watching demos in a browser instead, the file can stay in your downloads folder and never move at all.

Third-party desktop demo managers exist and largely automate this filing — moving downloads into place, keeping names tidy, and launching playback. They are a separate category of tool from a demo viewer, and this is not one; it is mentioned here only because "where did my demo go" and "what manages my demos" are the same question for most people.

Where does this list come from?

Every command name, help string and default above was transcribed from a dump of the game's own registered command list, produced with CS2's cvarlist console command. That means the descriptions are Valve's wording rather than a summary of observed behaviour, and the defaults are the values the engine registers rather than whatever happens to be in a config file.

Two honest caveats. Counter-Strike updates add, rename and remove commands, so a reference like this is accurate as of its date and no longer — you can regenerate it at any time by running cvarlist yourself and reading the log. And settings that are stored in your config can report your value rather than the shipped default in such a dump; the eight settings published above were checked to be ones the engine does not persist, so the defaults shown are the engine's own.

That check-the-provenance habit is the same one behind the CS2 Mechanics Reference, which publishes measured CS2 constants with the derivation and confidence tier attached to each one — for instance how the jump-throw latch actually works or what sv_airaccelerate does with the wish-speed cap. If you are the kind of person who came here for a command list, that reference is likely to be the more interesting page.

The alternative: no console at all

Every command above exists because the in-game player is a console-driven tool. A browser demo viewer replaces the whole list with a timeline: you scrub, you click an event in the round list, you switch camera with a button. There is no console, no tick arithmetic and no game launch, and the demo does not need to be anywhere in particular on disk.

The two are genuinely for different jobs, and the split is not subtle. The in-game client is the reference for exact fidelity and it is the only place these commands work. A browser viewer wins on speed of access and on the cameras — free camera, x-ray, overhead radar and a review panel — and it can do the one thing the console cannot: hand you the situation as something playable rather than something to watch. The four-category comparison covers the trade properly, and the browser control reference is the equivalent of this page for the viewer.

FAQ

How do I open the CS2 demo playback UI?

Type demoui in the console while a demo is playing. The game describes it as show or hide demo playback ui, and it is the panel with the scrub bar and the speed control. The related setting demo_ui_mode chooses which panel appears, where 0 is disabled, 1 is minimal and 2 is full.

How do I jump to a specific tick in a CS2 demo?

Use demo_gototick followed by the tick number, which the game describes as skips to a tick in demo. To come back to the same place later, run demo_marktick at the moment you care about and then demo_gotomark to return to it.

How do I record a demo in CS2?

Run record followed by a filename while you are in a match, and run stop when you are finished. The game describes those two as record a demo and finish recording demo. Recording is a client side capture, so it only holds what your own client received.

How do I slow down or speed up CS2 demo playback?

demo_timescale sets demo replay speed, where a value below 1 is slower than real time and a value above 1 is faster. For frame by frame inspection, demo_step_tick plays for a number of ticks and then pauses, defaulting to a single tick.

Where does CS2 save demos that you record?

Into your Counter-Strike 2 installation, normally under the csgo folder inside the game directory, unless you gave the record command a path of your own. Demos downloaded from a third party service instead land wherever your browser saves downloads.