Admins ask for "server-side demos" to catch cheaters after the fact, and the first thing to understand is that GoldSrc CS 1.6 has no built-in server-side demo. The engine records demos on the client that runs record. What people mean in practice is one of three things: recording on your own client while spectating, running an HLTV proxy that captures the match, or forcing suspects to record their own client with a plugin. This walks through all three and how to play the files back.
1. The client-side record command
Any player, including you while spectating, records their own view with two console commands:
record mymatch stop
This writes mymatch.dem into the cstrike/ folder of the machine that ran record. It captures only what that client received from the server — you cannot record a player's screen from the server. If you connect as a spectator and follow a suspect, you record what the server sent about them, which is enough to review positioning and obvious wall/aim tells but not their raw inputs.
2. Play a demo back
Put the .dem file in cstrike/ and run either command from the console:
playdemo mymatch viewdemo mymatch
playdemo plays it inline; viewdemo opens the demo player overlay with a timeline, pause, and free-look camera. During viewdemo playback you can detach the camera and orbit the recorded player, which is exactly what you want when reviewing a suspected wallhack — watch whether their aim tracks enemies through geometry before line of sight exists.
3. Use HLTV as a dedicated recorder
HLTV (the standalone hltv proxy that ships with the dedicated server tools) connects to your server as a spectator client and can record the whole match to a demo on the HLTV machine. Started from the HLTV console:
connect 127.0.0.1:27015 record match_2026_07_15
Because HLTV sees every player with a configurable delay, its demo is the closest thing to a true "server" recording: one file, all players, reviewable with viewdemo afterwards. The cost is that HLTV is a second process consuming a player slot and bandwidth, and its delay and maxrate must be tuned so it does not choke. Run it on the same box or a nearby one to keep the feed clean.
4. Force a suspect to record with a plugin
The genuinely "server-driven" option is an AMX Mod X plugin that issues the record command on a target client and later pulls the file up via the upload channel or asks the player to send it. The engine lets the server run client commands through the standard client-command forward, so a plugin can start and stop a recording on a chosen SteamID. This is how anti-cheat admin suites implement "demo a player": they are scripting the client's own record, not capturing frames on the server. If you go this route, a maintained admin suite such as the CSB Admin Menu is safer than a raw one-off plugin, and you still need the player's cooperation to retrieve the resulting .dem.
5. Keep demos small and named sanely
Demos grow fast — a busy 30-minute round can be tens of megabytes. Record only when you have a reason, name files with the date and the suspect (2026-07-15_nova.dem), and delete them once reviewed. Cross-reference the demo with the server logs so you can tie a moment in the demo to a kill line and a SteamID; the log gives you the identity, the demo gives you the evidence.
Common errors
recorddoes nothing / no file appears — you were already in a demo, or the name collided. Runstopfirst, thenrecordwith a fresh name, and checkcstrike/on the recording machine, not the server.- "Can't record during multiplayer games" — on some builds recording is blocked unless you start it before the map fully loads; reconnect and issue
recordright after connect, or use HLTV instead. - Demo plays but the camera is stuck to the recorder — use
viewdemo, notplaydemo, and detach the camera from the overlay to free-look. - HLTV shows nothing / times out —
sv_lanor a password is blocking it, or itsmaxrateis too low. HLTV connects like any client and obeys the same rules; see the essential cvars. - Expecting to record a cheater's raw aim from the server — impossible in GoldSrc. You only ever have what the server sent about them; interpret demos accordingly.
Verification
Record a short clip while spectating, run stop, confirm the .dem exists in cstrike/, then viewdemo it and detach the camera to orbit a player. If that works, your review workflow is sound. For a whole-match capture, stand up HLTV, record one map, and confirm the single demo contains every player — that is the file you keep when you need to justify a ban.









