Skip to main content

CLI

CS:DM comes with a CLI (Command Line Interface) with multiple commands, allowing you to do tasks without running the GUI.

Installation

The CLI is automatically installed when you install the application with the installer.

Usage

Open a Windows terminal and type csdm, it will display all available commands.

caution

If you have a message csdm not found, it means that the folder where the CLI executable csdm.exe is located is not in your PATH environment variable.
The default path is C:\Users\Username\AppData\Programs\CS Demo Manager and you can follow this guide to add it to your PATH variable.

Download Valve demos

Download the last MM demos of the current Steam account or from share codes.

csdm dl-valve [shareCodes...] [--output]
warning

You must be connected to your Steam account to use this command.

NameDefaultMandatoryDescription
[shareCodes]NoShare codes to download.
--output1. Folder specified in the CS:DM settings
2. CS folder replays
3. Current directory
NoDirectory where demos will be downloaded.

Examples

To download last MM demos of the current Steam account:

csdm dl-valve

To download demos from share codes:

csdm dl-valve CSGO-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX CSGO-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

To change the directory where demos will be downloaded:

csdm dl-valve --output "C:\Users\username\Downloads"

Download FACEIT demos

danger

This command is currently disabled, see here for details.

Download the last demos of the current FACEIT account set in the application or from its nickname.

csdm dl-faceit [--nickname] [--output]
NameDefaultMandatoryDescription
--nicknameAccount's nickname set in the applicationNoAccount's nickname to download demos.
--output1. Folder specified in the CS:DM settings
2. CS folder replays
3. Current directory
NoDirectory where demos will be downloaded.

Examples

To download last FACEIT demos of the current FACEIT account:

csdm dl-faceit

To download demos of a specific account identified by its nickname:

csdm dl-faceit --nickname "PlayerNickname"

To change the directory where demos will be downloaded:

csdm dl-faceit --output "C:\Users\username\Downloads"

Download Renown demos

Download the last demos of the current Renown account set in the application or from a Steam ID.

csdm dl-renown [--steamid] [--output]
NameDefaultMandatoryDescription
--steamidCurrent account's Steam ID set in the applicationNoAccount's Steam ID to download demos.
--output1. Folder specified in the CS:DM settings
2. CS folder replays
3. Current directory
NoDirectory where demos will be downloaded.

Examples

To download last Renown demos of the current Renown account:

csdm dl-renown

To download demos of a specific account identified by its Steam ID:

csdm dl-renown --steamid "PlayerSteamID64"

To change the directory where demos will be downloaded:

csdm dl-renown --output "C:\Users\username\Downloads"

Download 5EPLAY demos

Download the last demos of the current 5EPLAY account set in the application or from its ID.

csdm dl-5eplay [--id] [--output]
NameDefaultMandatoryDescription
--idCurrent account's 5EPLAY ID set in the applicationNoAccount's 5EPLAY ID to download demos.
--output1. Folder specified in the CS:DM settings
2. CS folder replays
3. Current directory
NoDirectory where demos will be downloaded.
tip

To find your 5EPlay ID:

  1. Log in to your 5EPlay account.
  2. Go to your profile page.
  3. Copy the last segment of the URL. For example, if your profile URL is https://arena.5eplay.com/data/player/1111, your 5EPlay ID is 1111.

Examples

To download last 5EPlay demos of the current 5EPLAY account:

csdm dl-5eplay

To download demos of a specific account identified by its ID:

csdm dl-5eplay --id "Player5EPLAYID"

To change the directory where demos will be downloaded:

csdm dl-5eplay --output "C:\Users\username\Downloads"

Analyze demos

Analyze demos and persist them in the database.

csdm analyze demoPaths... [--source] [--force]
NameDefaultMandatoryDescription
demoPathsYesDemos paths, can be either a .dem files path or a directory. It can be relative or absolute.
--sourceNoForce the analysis logic of the demo analyzer. Available values: challengermode,ebot,esea,esl,esportal,faceit,fastcup,5eplay,perfectworld,popflash,valve
--forcefalseNoForce demo analysis even if they are already in the database.

Examples

Analyze 1 demo:

csdm analyze "C:\Users\username\Desktop\demo.dem"

Analyze multiple demos:

csdm analyze "C:\Users\username\Desktop\demo.dem" "C:\Users\username\Desktop\demo2.dem"

Analyze all demos in a directory using the ESL analyzer and re-analyze demos that have already been analyzed:

csdm analyze "C:\Users\username\Desktop\MyFolder" --source esl --force

Export demos to XLSX

Analyze and export demos to either a single or multiple XLSX files.

csdm xlsx demoPaths... [--output-folder] [--source] [--single] [--sheets] [--force-analyze]
NameDefaultMandatoryDescription
demoPathsYesDemos paths, can be either a .dem files path or a directory. It can be relative or absolute.
--sourceNoForce the analysis logic of the demo analyzer. Available values: challengermode,ebot,esea,esl,esportal,faceit,fastcup,5eplay,perfectworld,popflash,valve
--output-folderCurrent directoryNoDirectory where output files will be saved.
--singlefalseNoGenerates a single XLSX file instead of one per demo.
--sheetsAll sheetsNoIncludes only sheets identified by its name. Available values: [general,players,rounds,kills].
--force-analyzefalseNoForce demo analysis even if they are already in the database.

Examples

Export 1 demo:

csdm xlsx "C:\Users\username\Desktop\demo.dem"

Export multiple demos with only the "Rounds" and "Kills" sheets:

csdm xlsx "C:\Users\username\Desktop\demo.dem" "C:\Users\username\Desktop\demo2.dem" --sheets rounds,kills

Export all demos in a directory using the ESL analyzer and save it in a custom directory:

csdm xlsx "C:\Users\username\Desktop\MyFolder" --output-folder "C:\Users\username\Documents" --source esl

Export demos to JSON

Analyze and export demos into JSON files.

csdm json demoPaths... [--output-folder] [--source] [--minify] [--force-analyze]
NameDefaultMandatoryDescription
demoPathsYesDemos paths, can be either a .dem files path or a directory. It can be relative or absolute.
--sourceNoForce the analysis logic of the demo analyzer. Available values: challengermode,ebot,esea,esl,esportal,faceit,fastcup,5eplay,perfectworld,popflash,valve
--output-folderCurrent directoryNoDirectory where output files will be saved.
--minifyfalseNoMinify the JSON files.
--force-analyzefalseNoForce demo analysis even if they are already in the database.

Examples

Export 1 demo:

csdm json "C:\Users\username\Desktop\demo.dem"

Export multiple demos in a custom directory and minify the JSON files:

csdm json "C:\Users\username\Desktop\demo.dem" "C:\Users\username\Desktop\demo2.dem" --output-folder "C:\Users\username\Documents" --minify

Generate videos

Generate videos from demos.

warning
  • It is recommended to read the video documentation before using this command.
  • Third-party software will be downloaded automatically if not already installed.
  • Demos must have been analyzed and be present in the database.

There are 3 ways to invoke this command:

  1. By specifying a tick range
    csdm video <demoPath> <startTick> <endTick> [options]
  2. By focusing on player events (it will auto-generate sequences)
    csdm video <demoPath> --mode player --steamids <id1,id2> --event <event> [options]
  3. By using a JSON config file
    csdm video --config-file <path> [options]
NameDefaultMandatoryDescription
demoPathYesPath to the .dem file to record from (or provided via --config-file).
startTickYes*Start tick of the sequence to record. Required unless using --mode player or --config-file.
endTickYes*End tick of the sequence to record. Required unless using --mode player or --config-file.
--config-file <path>NoPath to a JSON config file. Supports comments; must include demoPath.
--output <path>Demo folderNoOutput folder path (short -o). Defaults to demo directory.
--framerate <number>CS:DM settingsNoOutput frame rate.
--width <number>CS:DM settingsNoOutput width in pixels (min 800).
--height <number>CS:DM settingsNoOutput height in pixels (min 600).
--close-game-after-recordingCS:DM settingsNoClose the game when recording finishes.
--no-close-game-after-recordingCS:DM settingsNoDo not close the game after recording.
--concatenate-sequencesCS:DM settingsNoConcatenate recorded sequences into a single video.
--no-concatenate-sequencesCS:DM settingsNoExport each recorded sequence separately.
--encoder-software <string>CS:DM settingsNoSoftware encoder. Allowed values: FFmpeg, VirtualDub.
--recording-system <string>CS:DM settingsNoRecording system. Allowed values: HLAE, CS.
--recording-output <string>CS:DM settingsNoOutput type. Allowed values: video, images, images-and-video.
--ffmpeg-executable-path <string>CS:DM settingsNoPath to FFmpeg executable.
--ffmpeg-crf <number>CS:DM settingsNoFFmpeg CRF (quality). Lower = higher quality (0–51).
--ffmpeg-audio-bitrate <number>CS:DM settingsNoFFmpeg audio bitrate in kbps (min 8).
--ffmpeg-video-codec <string>CS:DM settingsNoFFmpeg video codec (e.g., libx264, libx265).
--ffmpeg-audio-codec <string>CS:DM settingsNoFFmpeg audio codec (e.g., aac, libopus).
--ffmpeg-video-container <string>CS:DM settingsNoOutput container. Allowed values: mp4, avi, mkv.
--ffmpeg-input-parameters <string>CS:DM settingsNoExtra FFmpeg input parameters.
--ffmpeg-output-parameters <string>CS:DM settingsNoExtra FFmpeg output parameters.
--show-x-rayCS:DM settingsNoEnable X-Ray during recording.
--no-show-x-rayCS:DM settingsNoDisable X-Ray during recording.
--show-assistsCS:DM settingsNoShow assists in HUD.
--no-show-assistsCS:DM settingsNoHide assists in HUD.
--show-only-death-noticesCS:DM settingsNoShow only death notices HUD.
--no-show-only-death-noticesCS:DM settingsNoShow full HUD (not only death notices).
--record-audioCS:DM settingsNoRecord game audio.
--no-record-audioCS:DM settingsNoDo not record game audio.
--player-voicesCS:DM settingsNoEnable in-game player voices.
--no-player-voicesCS:DM settingsNoDisable in-game player voices.
--death-notices-duration <number>CS:DM settingsNoDuration in seconds of death notices.
--cfg <string>CS:DM settingsNoPlain text config executed before recording.
--focus-player <steamID64>-NoFocus on a specific player by their SteamID64.

Player mode

The --mode player option auto-generates sequences around player events.

NameDefaultMandatoryDescription
--mode playerYesEnable player mode.
--steamids <id1,id2,...>YesComma-separated SteamID64s to build sequences for.
--event <string>YesEvent type. Allowed values: kills, deaths, rounds.
--perspective <string>playerNoCamera's perspective. Allowed values: player, enemy.
--rounds <n,n,...>NoComma-separated round numbers to filter.
--start-seconds-before <n>2NoSeconds before event to start sequence.
--end-seconds-after <n>2NoSeconds after event to end sequence.

Config file

You can use a JSON config file to configure all recording options. The easiest way to generate one and see all possible options is to export one from the application by clicking on the 3-dot menu in the Video view and clicking on Export as JSON.

Export video config as JSON

Example as of version 3.17.0:

{
"demoPath": "C:\\Users\\USERNAME\\demos\\my-demo.dem",
"outputFolderPath": "C:\\Users\\USERNAME\\Desktop",
"recordingSystem": "CS",
"recordingOutput": "video",
"encoderSoftware": "FFmpeg",
"width": 1280,
"height": 720,
"framerate": 30,
"closeGameAfterRecording": true,
"concatenateSequences": false,
"ffmpegSettings": {
"audioBitrate": 256,
"constantRateFactor": 23,
"customLocationEnabled": false,
"customExecutableLocation": "",
"videoContainer": "avi",
"videoCodec": "libx264",
"audioCodec": "libmp3lame",
"inputParameters": "",
"outputParameters": ""
},
"sequences": [
{
"number": 1,
"startTick": 1351,
"endTick": 4675,
"showOnlyDeathNotices": true,
"deathNoticesDuration": 5,
"playersOptions": [
{
"steamId": "STEAM_ID_REDACTED",
"playerName": "Player 1",
"showKill": true,
"highlightKill": false,
"isVoiceEnabled": true
}
],
"playerCameras": [
{
"tick": 2227,
"playerSteamId": "STEAM_ID_REDACTED",
"playerName": "Player 1"
}
],
"cameras": [
{
"tick": 3206,
"id": "cf25dfc2-8d3b-4bf9-9c5f-f6c729579b6c",
"name": "Top mid",
"color": "#FDCB6E"
}
],
"showXRay": true,
"showAssists": true,
"playerVoicesEnabled": true,
"recordAudio": true
}
]
}

Examples

Record a video from tick 1200 to 4000 and use current CS:DM video settings:

csdm video "E:\cs\demo.dem" 1200 4000

Record a 1080p60 MP4 using FFmpeg:

csdm video "E:\cs\demo.dem" 1200 4000 --framerate 60 --width 1920 --height 1080 --encoder-software FFmpeg --ffmpeg-video-container mp4

Use HLAE + FFmpeg, disable X-Ray and focus on a specific player:

csdm video "E:\cs\demo.dem" 1200 4000 --recording-system HLAE --encoder-software FFmpeg --no-show-x-ray --focus-player 76561198000697560

Generate sequences for specific players’ kills in rounds 5–10:

csdm video "E:\cs\demo.dem" --mode player --steamids 76561198000697560,76561198000000000 --event Kills --rounds 5,6,7,8,9,10 --start-seconds-before 3 --end-seconds-after 3

Use a JSON config file (JSONC allowed) to drive recording:

csdm video --config-file "E:\configs\record.jsonc" --encoder-software FFmpeg

Example record.jsonc:

{
// Required demo path
"demoPath": "E:\\cs\\demo.dem",
// Optional overrides (fallback to CS:DM settings)
"framerate": 60,
"width": 1920,
"height": 1080,
"concatenateSequences": true,
"ffmpegSettings": {
"videoCodec": "libx264",
"videoContainer": "mp4",
},
}