You type an address, the game tries, and after a few seconds you get:
Connection failed after 4 retries.
This means your client sent connection requests and heard nothing back. It is a network-reachability failure, not a game bug, and when it happens on servers that other people can join, the cause is on your end. This guide works through the client-side possibilities in the order most likely to be the culprit.
1. Confirm the address and port are exactly right
The commonest cause is a wrong port. CS 1.6 defaults to 27015, but many community servers share one IP and differ only by port:
connect 203.0.113.10:27016
A single wrong digit, or omitting the port on a server that does not use 27015, produces this exact error because your packets go nowhere. Copy the address fresh from the source and include the port explicitly. If you reached it before, use retry rather than retyping.
2. Check the server is actually up and not full
Before blaming your machine, confirm someone else can join. If the server is down, restarting, or full, everyone gets the retries error — that is not yours to fix. A server mid map-change also refuses connections for a few seconds; wait and retry.
3. Rule out your firewall and antivirus
CS 1.6 talks over UDP. A firewall or antivirus that blocks outbound UDP from hl.exe lets nothing through and every server fails identically. On Windows, allow Half-Life / Counter-Strike through the firewall for both private and public networks, and whitelist hl.exe in your antivirus. The tell here is that every server fails, including ones you connected to yesterday.
4. Restart your router and clear a stuck NAT
Home routers occasionally wedge the UDP mapping the game needs. A full power-cycle of the router (off 30 seconds, on) clears stale NAT entries. If you are behind a strict or double NAT (a second router, some mobile hotspots, or carrier-grade NAT), outbound UDP to game ports can be dropped entirely — test on a different connection to confirm.
5. Check for a protocol or version mismatch
After the 2023 25th Anniversary update, some servers and clients ended up on incompatible protocols, and a mismatched client can fail to complete the handshake. If you can reach old servers but not updated ones (or vice versa), roll your client between the current build and the steam_legacy beta branch — the same fix used for startup crashes after the update. Right-click Counter-Strike in Steam, Properties, Betas, and pick steam_legacy to opt into the pre-update build, or None to return to current.
6. Try a clean network path
A VPN, proxy, or aggressive "gaming optimizer" can mangle UDP. Disable them and connect directly. If a VPN is the only way you reach a geo-restricted server, try a different endpoint — some VPN exit nodes block game UDP.
Common errors
- Every server fails, including ones that worked before — local: firewall/antivirus blocking
hl.exe, a wedged router, or a VPN. Work through steps 3–6. - Only one server fails — that server is down, full, restarting, or you have the wrong port. Not your client. Confirm with a direct console connect on the exact port.
- Fails only on updated (or only on legacy) servers — protocol mismatch from the Anniversary update. Switch the
steam_legacybeta branch. - Connects then instantly drops with the same message — a rate or client-command setting the server rejects; reset your rates to defaults and retry.
- Works on mobile hotspot but not home — your home firewall or router is blocking UDP. Fix the firewall rule and power-cycle the router.
Verification
The fastest way to isolate the fault is to connect to a busy, known-good server by console:
connect 203.0.113.10:27015
If that joins, your network is fine and the original server was the problem. If it also fails, the cause is local — recheck the firewall and router first. To prove it is not the whole install, host a listen server (Create Server from the menu) and connect to 127.0.0.1; a loopback join that works confirms the game is healthy and the issue is purely reaching the internet. Once you can join one real server reliably, the retries error is beaten.









