Which failure do you actually have?
| What you see | What it is | Recoverable |
|---|---|---|
| The game says the demo is incompatible with this game version | The client refused to replay it | Sometimes — see below |
| The download bar stops before the end | Truncated transfer, usually because the file is gone | No, but re-downloadable if it still exists |
| The download never starts | The recording is no longer served | No |
| Playback starts and stops seconds in | Truncated file | No — re-download |
| The file is refused as not a demo | An archive, a rename, or a legacy format | Yes, usually |
What does "demo file is incompatible with this game version" mean?
It means the game client refused to play the recording, not that the file is damaged. The usual causes are a legacy Counter-Strike Global Offensive demo being opened in Counter-Strike 2, or a demo recorded on a build the installed client will not replay. The data inside the file is untouched either way.
That distinction is the whole point of this section. The message reads like corruption and is almost never corruption. A demo is a recorded stream of match state, and playing one back in the game means feeding that stream through a game build that understands it. When the build and the stream disagree, the client declines rather than guessing. Your file is fine; the thing that was going to read it is not the thing that wrote it.
There are two quite different situations behind the one message:
- A generation mismatch. The demo was recorded by Counter-Strike: Global Offensive, which is a different engine generation. This is common with older tournament archives and with anything saved before the CS2 changeover. Nothing will make the CS2 client play it.
- A build mismatch. The demo is a CS2 recording, but from a build your installed client will not replay. Counter-Strike updates change netcode and content, and demo playback is sensitive to that in a way the recorded data itself is not.
The first is permanent. The second is where a demo viewer that is not the game client becomes interesting.
How do I tell a CS2 demo from a legacy CSGO demo?
By the first eight bytes of the file. A Counter-Strike 2 demo begins with PBDEMS2 and a legacy Source 1 demo begins with HL2DEMO. The extension is identical for both, which is exactly why the two get confused.
You do not need a hex editor to check this. Any text editor that will open a binary file shows the marker as readable characters on the very first line, before the noise starts. If it says HL2DEMO, you are holding a Source 1 recording, and every CS2 tool will refuse it — including this one, which returns a specific "this is a legacy CS:GO demo" message rather than calling your file malformed. That is a deliberate choice: telling you the file is broken when it is merely old sends you re-downloading a perfectly good demo forever.
Source 1 support is not a small feature gap that might close next week. It needs a separate parser, legacy map builds and different renderer semantics — effectively a second product.
Can a browser demo viewer open a demo the game refuses?
Sometimes, and it depends entirely on which of the two causes you hit. A server side parser reads the recorded stream rather than running the match through a game build, so a version mismatch is not automatically fatal. A legacy Source 1 recording is a genuinely different wire format and is refused here too.
The reason for the difference is worth understanding, because it tells you when it is worth trying. The game client replays a demo by feeding it into a running instance of the game, so the game's own version compatibility rules apply. A demo viewer decodes the file and reconstructs the match from the data it finds, then draws it. There is no game build in the loop to object.
What that buys you and what it does not:
- A CS2 demo from an older build: generally opens. This is the case worth trying.
- A very early CS2 demo: opens, with a real caveat. Recordings from the launch period in late 2023 return empty attacker and victim fields on game events, so positions and movement rebuild correctly while the kill feed and event list come up short. The playback is honest about what it has rather than inventing the missing attribution.
- A legacy CS:GO demo: refused, for the reasons above.
- A map outside the supported set: refused. Ten maps have the geometry and radar calibration a 3D reconstruction needs, and a demo outside that pool is rejected rather than drawn with holes in it. The map review guide lists them.
- A truncated file: parses as far as the data goes and no further. No tool can recover bytes that were never transferred.
So: if the client says incompatible and the header says PBDEMS2, try it in a browser. That combination is the one the client is refusing on version grounds alone.
Why does my CS2 demo download stop as incomplete?
Almost always because the recording is no longer being served. Valve keeps matchmaking recordings for a limited window rather than forever, so an older share code points at a file that has been removed. A download that starts and stops partway is the same symptom as a download that never starts.
The confusing part is the progress bar. It moves, which feels like the file is there and the connection is at fault, so people retry on a different network and get the same result. What is actually happening is that the request is being answered with something other than the complete recording.
A truncated demo cannot be repaired. There is no redundancy in the format and nothing to reconstruct the missing rounds from — the second half of the match was simply never sent. Delete the partial file before retrying, because a leftover partial is often what makes the retry look like it failed too.
What if the demo will not download at all?
Work down this list in order. It is ordered by how often each one is the answer, not by how sophisticated it sounds.
- Check the age of the match. Expiry is the most common cause by a wide margin. If the match is old, stop here — the code is fine and the file is gone.
- Check you are using the right identifier. A share code identifies a Valve matchmaking match. It is not a FACEIT link and it is not a stats-page URL. A stats page does not host the recording, which surprises people every day.
- Try the other route. If the game will not fetch it, a browser import sometimes will, and the reverse is also true. They resolve the recording by different paths.
- Check the platform, not your connection. If a third-party platform is having a bad day, no amount of retrying from your end changes the answer.
- Give up on that match, not on review. This is the underrated step. One unrecoverable demo is not worth an evening — go review a match you do have.
What if the file is refused as not a demo?
Then check what you are actually holding, in this order.
Is it still inside an archive? This is the most common one by far. A demo that arrives inside a general-purpose archive has to be unpacked before there is a demo to read. Compressed demo streams are different and go in untouched: .dem, .dem.gz, .dem.zst and .dem.bz2 are all read directly, because those are the forms the demo pipeline itself hands out. An archive with a demo inside it is a container, not a stream.
Did something rename it? An extension is a label, not a format. A file called match.dem that is really an archive fails at the header check and gives no hint that it was mislabelled.
Is the size plausible? A full competitive match is a substantial file. A demo of a few kilobytes is an error page that got saved with the wrong name — open it in a text editor and you will usually find HTML.
Is it a Source 1 recording? Back to the header check above.
FAQ
What does demo file is incompatible with this game version mean?
It means the game client refused to play the recording, not that the file is damaged. The usual causes are a legacy Counter-Strike Global Offensive demo being opened in Counter-Strike 2, or a demo recorded on a build the installed client will not replay. The data inside the file is untouched either way.
Can a browser demo viewer open a demo the game client refuses?
Sometimes, and it depends entirely on which of the two causes you hit. A server side parser reads the recorded stream rather than running the match through a game build, so a version mismatch is not automatically fatal. A legacy Source 1 recording is a genuinely different wire format and is refused here too.
How do I tell a CS2 demo from a legacy CSGO demo?
By the first eight bytes of the file. A Counter-Strike 2 demo begins with PBDEMS2 and a legacy Source 1 demo begins with HL2DEMO. The extension is identical for both, which is exactly why the two get confused.
Why does my CS2 demo download stop as incomplete?
Almost always because the recording is no longer being served. Valve keeps matchmaking recordings for a limited window rather than forever, so an older share code points at a file that has been removed. A download that starts and stops partway is the same symptom as a download that never starts.
Can an incomplete demo download be repaired?
No. A truncated demo is missing the rest of the match and nothing can reconstruct the part that was never transferred. Delete the partial file and download it again from the original source, because a partial file left in place is often what makes the retry appear to fail.