The fastest free browser-based 2D replay analyzer for Counter-Strike 2
demos. Drop a .dem file and rewatch the match round by round: no install,
no upload, not a single byte leaving your machine.
Existing tools have too much friction: install a database, spin up Docker, wire up config, all before you can watch a single round, and the visual side still feels like an afterthought.
I just needed a simple way to analyze the comms of PUG matches with my friends, so I built the tool I always wished existed: instant to open, good-looking, and fully client-side. It is open source so it can grow with the CS2 community, a game I have played since I was a kid, and a first step toward building in esports.
- 2D replay with round-by-round playback of player movement, duels and timing, a live scoreboard, killfeed and in-game chat, and auto-advance between rounds.
- Heatmaps for deaths, presence and utility, filterable by side, player and round, with multi-floor support for maps like Nuke and Vertigo.
- Grenade trajectories for smokes, molotovs, HEs, flashes and decoys, with the option to jump straight into the replay from a throw, plus in-replay visual effects for grenades and the bomb explosion.
- Utility analysis: flash effectiveness (who blinded whom and for how long) and HE / molotov damage dealt, broken down per player.
- Economy breakdown per round: buy types, equipment value and money flow.
- Drawing tools: a telestrator to draw on the map and break down positions and executes.
- Replay comments: annotate specific moments and revisit them later.
- Export / import: save an analyzed match as a compact
.cs2dvfile and reopen it instantly, without re-parsing the original demo. - Player comms: in-game voice replayed alongside the action.
- Major showcase: rewatch Counter-Strike Major playoff matches in 2D, map by map, with the replays bundled in the project.
- 100% client-side: the demo is read and parsed in a Web Worker; nothing is ever sent to a server.
- Local history of recently analyzed demos, kept in your browser (reopening one does not re-upload it).
- Multi-language UI: 9 languages so far: English, Portuguese, Spanish, French, German, Russian, Polish, Turkish and Ukrainian.
Supported uploads: .dem, .gz, .zip and .zst (CS2 / Source 2).
- Vue 3, Vue Router and Vite
- Tailwind CSS, Reka UI and VueUse
- A custom Rust + WebAssembly demo parser built
on top of
source2-demo @bokuweb/zstd-wasmandfflatefor decompressing uploads- pnpm workspaces with Turborepo
Requirements: Node.js 24+ and pnpm.
pnpm install
pnpm devThe app runs at the URL printed by Vite (default http://localhost:5174).
pnpm build # production build
pnpm preview # preview the production build
pnpm type-check # run vue-tsc across the workspaceapps/app The web app (Vue 3 + Vite)
packages/parser Rust crate compiled to WebAssembly (the .dem parser)
The WASM parser is an out-of-band Rust crate: it is compiled by hand via
packages/parser/build.sh, and the resulting .wasm is committed under
apps/app/src/viewer/parser/. Running or building the app does not require
the Rust toolchain; only contributors working on the parser itself do.
This project stands on the shoulders of great open-source work:
source2-demo: streaming, event-driven Source 2 demo parser (Rust) that powers the.demparser.- cs2-map-icons by MurkyYT: radar overview images for the CS2 maps.
@bokuweb/zstd-wasm: WebAssembly Zstandard decoder for.zstdemos.fflate: fast, tiny gzip/zip inflate used to read compressed demos.
Other great open-source tools for Counter-Strike demos, worth checking out:
- CS Demo Manager by akiver: a full-featured desktop app to manage and analyze Counter-Strike demos.
- csgo-2d-demo-viewer by sparkoo: a browser-based 2D Counter-Strike demo viewer.
This is an open-source side project and contributions are very welcome. Suggestions, ideas and bug reports are all appreciated: feel free to open an issue or a pull request.
