Skip to main content



CS Demo Manager is a free and open-source software not backed by any corporate entity.
You can support the project by contributing or donating.

  • feat(demos): allow to sort demos by status #867
  • feat(matches): add 5K/4K/3K and HLTV 2.0 columns #866
  • fix: database error on fresh installation since v3.6.2 #873


  • feat(heatmap): filter event points on Z coordinate based on current map radar level #868
  • fix: support for the 31/05/2024 CS2 update (affecting playback, highlights, video...)
  • fix: support voice extraction for demos after the 31/05/2024 CS2 update


  • fix(analyze): support for the 29/05/2024 CS2 update


  • feat: add teams page #832
  • feat: add team's page similar to player's page #832
    It allows to see stats and generate heatmaps for a given team identified by its name.
  • feat(matches): add team names edition from the right-click context menu #832
  • feat(video): wait before recording to make sure the loading screen is not visible #834
  • feat(search): add tazer in select option label #841
  • feat(2d): speed and selected player are now persisted between navigation
  • feat(playback): add option to listen player voices during playback (doesn't work with MM demos) #800
  • feat(playback): automatically hide the CS2 demo playback UI (happens since the 23/05/2024 update)
  • feat(json): add grenades destroyed events #850
  • feat(video): remove -pix_fmt FFmpeg flag
  • feat(analyze): demos from the PGL major CS2 are now detected as coming from ChallengerMode (needs to clear demos cache from the settings)
  • fix(video): generation not working with FFmpeg since 23/05/2024 CS2 update #849
  • fix: incorrect taskbar title after navigation #831
  • fix(analyze): possible negative values in player hurt events
  • fix(analyze): missing hostage picked up events #839
  • fix(2d): invert speed slider direction
  • fix(match): full width labels
  • fix(video): correct output container extension when concatenating sequences
  • fix(table): moving columns not working when some are hidden #832
  • fix(settings): allow to set 0 seconds before kill delay


  • feat(playback): allow focusing camera on other players after initial focus #813
  • feat(2d): add elapsed timer next to remaining timer #830
  • feat(match): add no scope kills in scoreboard + add icon in kills feed #819
  • feat(match): added neck damages #824
  • feat: add through smoke kill icon in kills feed
  • feat: add airborne kill icon in kills feed
  • fix: CS2 crash on game launch since the 01/05/2024 update #818
  • fix(demo): previous/next buttons not working when using the context menu to see demo's details
  • fix(analyze): demos network protocol not updated in database


  • feat(match): add dropdown to hide/show scoreboard columns
  • fix(playback): camera not focusing on player since the 25/04/2024 CS2 update #812
  • fix: support voice extraction for demos after the 25/04/2024 CS2 update
  • fix: demos possibly ignored when importing from a V2 backup file


  • fix(analyze): 25/04/2024 CS2 update support
  • fix: error relation "tags" does not exist on fresh installation #811


  • feat(match): add players duels matrix accessible from the Duels tab #803
  • feat(settings): add playback option to start CS through HLAE #746
  • feat: import CS:DM V2 data (comment/status) from a V2 JSON backup file (accessible from the database settings) #804
  • feat(video): add -afxDisableSteamStorage launch option to HLAE added in v2.157.0
  • feat(download): update FACEIT warning message #793
  • feat(playback): notification when trying to watch highlights/lowlights of a player that didn't have kills/deaths
  • feat(playback): detect and warn about unsupported Steam installation through Flatpak on Linux #798
  • feat(video): do not try to concatenate sequences when there is a single sequence
  • feat(video): set all cl_hud_telemetry_x_show commands to 0 when recording
  • fix(player): wrong win percentage calculation per side #799
  • fix(2d): use CS2 map images instead of CSGO ones #801
  • fix(playback): camera may not focus on player with non Valve demos #808


  • feat: tags can now be added to rounds
  • feat(analyze): demos with an incomplete last round are now analyzable. The data of the last round are not available. #786
  • feat(players): add date range filter #764
  • feat(search): add team kill search event #779
  • feat(search): pressing CTRL (CMD on macOS)+Enter now triggers the search
  • feat(video): you can now generate player's sequences from kills and rounds #788.
  • feat(xlsx): add score/mvp in players sheet #790
  • feat(xlsx): add weapons and players flashbang matrix sheet #790
  • feat(xlsx): add clutches sheet #790
  • feat(video): add input to select video container (avi, mp4, mkv) #783
  • feat(video): sort players by nickname in focus camera input
  • feat(playback): add options to control the timing before and after rounds delay in seconds when watching player's rounds #776
  • fix(video): option to not delete raw files not working
  • fix(match): show message when trying to access a non existing round #786
  • fix(match): weapons tables not properly filtering stats #791
  • fix(xlsx): use single match export when only 1 match is selected


  • feat: an AppImage package is now available for Linux users #640
  • feat(2d): remove sounds #669
  • fix(analyze): possible error #774
  • fix: players' voice extraction not working with players that have non ASCII characters in their name #777


  • feat: player's voice extraction is now possible for demos created after the Arms Race update
  • feat(ban): add option to ignore bans that happened before players were first seen in a match (enabled by default) #760
  • feat(ban): add a context menu item on the scoreboard to add/remove a player from ignored Steam accounts #760
  • feat: detect and warn about possible anti-cheat software that prevent starting the game #684
  • feat(match): add context menu item on scoreboard to generate player rounds video #759
  • fix(analyze): support for recent Esportal demos
  • fix(analyze): force UTF8 encoding when inserting demos into the database #765
  • fix(download): tied game shown as victory or defeat in sidebar #768
  • fix(download): possible reversed teams scores and players teams in scoreboard


  • feat(analyze): add support for Esportal demos
  • feat: the camera focus will now always be on the correct player when watching highlights/lowlights or generating a video.
    It internally uses the spec_lock_to_accountid command added in the 14/02/2024 CS2 update.

    It also means the camera focus will not work when using an old CS2 branch with CS:DM v3.3.0 or later.

  • fix: reduce possible risk of game crash when demo playback starts


  • feat(analyze): demos from Blast events are now detected as FACEIT demos
  • feat(cli): add a json command to export demos to a JSON file
  • fix(cli): --force-analyze not working with the xlsx command
  • fix: crash when launching CS2 since the 13/02/2024 update


  • feat(analyze): support for demos created after the last CS2 major update
  • fix(cli): re-enable the download command


  • feat: Analyzing demos created after the last CS2 major update is temporarily turned off until the demo parser supports the demo format changes

    The current status of the support is tracked on this GitHub issue.
    Please understand that it's not an easy task and it may take time.

  • fix(dl): the last CS2 major update broke the MM demo download feature, it's now fixed
  • fix: CS2 executable may not be found on Linux since the last CS2 major update
  • feat: the configuration folder location now follows the XDG Base Directory Specification on Linux

    There is no backward compatibility, you will have to reconfigure your settings.
    You can also safely remove the old configuration folder at ~/csdm.

  • fix(analyze): possible missing players
  • fix(settings): database connection window ignoring mouse/keyboard inputs after disconnection
  • feat(ui): more Portuguese (Brazil) translations


  • feat: add support for 5EPlay demos #727
  • feat: allow to change players' spectate keyboard key, see this documentation for details. #685
  • feat(video): add an option to show/hide X-Ray per sequence #715
  • feat(db): deleting positions from the database now forces the database to free up disk space
  • feat(match): hide chat tab for CS2 demos as chat messages are currently not present in CS2 demos
  • feat: show message when trying to play a demo that contains chars unsupported by CS in its path #728
  • feat: add partial Portuguese (Brazil) translation. Thanks to @tiagotriques.
    You can help translating the application too!
  • fix: auto start not working on Windows when username contains spaces #726
  • fix(video): wrong sequence's ticks comparison resulting in a "End tick must be greater than start tick" error #730
  • fix(ui): error codes documentation link not opening in the browser
  • fix(analyze): possible error when analyzing demos that contain bots
  • fix(analyze): possible incorrect weapon in kill events due to a weird CS2 string encoding issue
  • fix(analyze): handle possible invalid UTF8 hex byte sequences in strings #735 and maybe #657

If you encountered the issue #735 with some of your demos, you will have to clear the demos cache from the settings before analyzing affected demos again!


  • feat(match): add a "Duels" tab with opening duels stats and an interactive map to find out where opening kills happened
  • feat: add support for FASTCUP demos
  • feat: add support for exporting players' voices from CS2 demos (it was possible only for CSGO demos). Thanks to DandrewsDev for his open-source project.

    Valve Matchmaking demos (CS2 and CSGO) do not contain voice audio data hence there is nothing to extract from MM demos.
    You can extract voices only from demos recorded from a server that includes voice data.

  • feat: add "Export players voice" in the matches table context menu (it was possible only from the demos table).
    It requires the .dem file on your filesystem otherwise you will have a "Demo not found" warning.
  • feat: the application should now receive fewer rate limit errors from the Steam API, but using your own Steam API key is still recommended.
  • feat(demos): add a checkbox to include subfolders for the current folder from the demos table
  • feat(demo): avoid doing calls to the Steam API if possible when going to a demo page
  • feat(video): turn off spellcheck in CFG input
  • feat(ui): improve filtering menu layout
  • fix(video): generating more than 9 sequences resulting in a "Raw files not found" error
  • fix(analyze): possible errors with CS2 demos
  • fix(analyze): possible missing bomb defused events with CSGO demos


  • fix(demos): challenger mode demos not recognized as analyzable
  • fix(cli): missing possible demo source values in help output


  • feat: add Perfect World demo source
  • feat: detect more game modes
  • feat: allow to search by server/client name in demos/matches tables
  • feat(demos): improve loading performance when scanning demos in a folder containing many sub directories
  • feat(settings): add clear demos cache option
  • fix(dl): possible crash when loading last FACEIT matches when there is only 1 team
  • fix: stop background tasks on database disconnection
  • fix: missing Chinese translations in date picker


  • feat(analyze): an error code and a link to the error documentation are now displayed when an error occurs during an analysis
  • fix(video): raw files may be deleted too early, resulting in an encoder software error


  • feat(demos): add a link to the documentation when a demo's source is not supported
  • fix(heatmap): drawing not working since last update
  • fix(dl): corrupted demos are now deleted automatically


  • feat(analyze): add support for demos from Challengermode
  • feat: improve Counter-Strike folder installation location detection
  • feat(playback): skip to next round when player died
  • feat(video): do not try to run encoder software if raw files are missing (probably because CS2 crashed)
  • feat(dl): add a "Corrupted demo" warning when a downloaded demo file is incomplete (same as the game)
  • fix(analyze): more accurate suicide detection
  • fix(analyze): possible incorrect round start tick
  • fix(match): wrong wallbang kills column values
  • fix(dl): possible downloading error due to redirection


  • fix: settings removed when updating the application

    The issue is fixed but you will have to reconfigure your settings one last time when updating to this version.

  • feat(match): add watch player rounds
  • feat(playback): show notification with doc link when game crashes
  • feat(ui): add Chinese Simplified. You can help translating the application too!
  • fix(video): error when demo path contains spaces
  • fix(demos): fetch unique demos by file path to avoid duplicates
  • fix(analyze): incorrect team names in first round


  • feat(playback): preserve user CS2 cfg when starting the game
  • feat(match): add teams economy type in round panel
  • feat(match): add bombsite letter in round panel
  • feat(dl): add copy demo link button
  • feat(xlsx): add team_name column in players sheet
  • fix: match insertion error when the db password contains special chars
  • fix: bomb exploded round end reason may not be detected
  • fix(demos): allow refreshing the table on error


See blog post