Protocol 47 vs 48 Explained

December 18, 2025 Daemon666 8 min read

If some players connect fine and others bounce off your server with "This server is using a different protocol", you are looking at a protocol-version mismatch — almost always the classic 47-versus-48 split. Understanding what those numbers are makes the fix obvious. Here is the whole picture.

1. What the protocol number is

The GoldSrc network protocol version is a single integer the client and server exchange when connecting. It identifies the wire format they use to talk — how connect packets, messages, and the handshake are structured. If the client's protocol number does not match what the server accepts, the connection is refused before the player ever loads the map. It is a compatibility handshake, nothing more.

2. 48 is current Steam; 47 is the older era

  • Protocol 48 is the current protocol spoken by the modern Steam Counter-Strike 1.6 client. A stock, updated Steam server and a stock Steam client both use 48 and connect without any special configuration.
  • Protocol 47 is the older protocol from the pre-Steam / early Half-Life era (the 1.1.0.4-generation engine). A number of non-Steam clients — older CS 1.6 distributions people still run — speak 47.

So the mismatch is structural: a non-Steam client built around protocol 47 tries to join a server that only accepts 48, the numbers disagree, and the client is told the server uses a different protocol. The same happens in reverse for a 48-only client hitting a 47-only server.

3. The fix: make the server answer both

You do not pick 47 or 48 — you make the server accept both, so 47 and 48 clients can all connect. Two tools do this depending on your engine:

  • Reunion — the non-Steam support module for ReHLDS. It handles clients across protocol versions and steam/non-steam auth, letting a modern ReHLDS server accept legacy protocol-47 clients alongside protocol-48 ones. See installing Reunion. Note Reunion needs a SteamIdHashSalt of at least 16 characters or it refuses to load.
  • dproto — the equivalent for original HLDS. Same idea: it lets a stock-engine server answer both protocols and admit non-Steam clients.

With one of these installed and configured, a single server serves the whole audience — Steam players on 48 and older non-Steam players on 47 all get in. The full walkthrough is in making your server accept non-Steam clients, and the specific error is covered in fixing the 47/48 protocol mismatch.

4. Why the 25th Anniversary update made this louder

The 2023 anniversary update changed engine and networking behaviour, which shook loose a lot of previously-working non-Steam connections and surfaced protocol errors that had been quietly handled before. Moving to an updated ReHLDS + Reunion stack is the durable answer; rolling the client or server to steam_legacy is the stopgap.

5. What the client actually experiences

It helps to trace one failed join. The client sends a connect request stamped with its protocol number. The server compares it against the protocols it accepts. On a plain server that number is a single value — 48 for a modern Steam server — and any client whose stamp does not match is rejected immediately with "This server is using a different protocol," before authentication, before the map, before anything. With Reunion or dproto loaded, the server accepts a range of protocol numbers and the appropriate auth path for each, so a 47-stamped connect and a 48-stamped connect are both admitted and routed correctly. From the player's side the difference is stark: same server address, but one build bounces and the other loads — and the only thing that changed is whether the server was taught to speak both protocols. That is why the fix always belongs on the server, never on the individual player's machine.

Common misconceptions

  • "Protocol 47 is non-Steam and 48 is Steam, always." Roughly true in practice but the number describes the engine protocol, not the store. Some non-Steam clients speak 48; the point is that 47-only clients are the ones that bounce off a 48-only server.
  • "I have to choose one protocol." No — Reunion/dproto make the server answer both simultaneously. That is the whole solution.
  • "It's a firewall/port problem." The message "This server is using a different protocol" is specifically a protocol-version mismatch, not a connectivity issue. A blocked port gives a timeout, not this message.
  • "Updating the client fixes it." For a non-Steam client stuck on 47, there may be no update — the fix belongs on the server via Reunion/dproto.
  • "Reunion works on stock HLDS." Reunion targets ReHLDS. On original HLDS the equivalent is dproto.

How to check on your server

Have a player who cannot connect read the exact error — "This server is using a different protocol" confirms a protocol mismatch rather than a network fault. On the server, check whether you have non-Steam support loaded: run meta list and look for Reunion (on ReHLDS) in the list. If it is absent and non-Steam players are bouncing, install Reunion (ReHLDS) or dproto (HLDS), set sv_lan 0, and reconnect a 47-era client to confirm it now gets in. Steam clients on 48 should continue to connect unaffected.

Mitwirkende: Daemon666 ✦
Teilen: