Best rate, cl_updaterate and cl_cmdrate Settings

March 12, 2026 Daemon666 8 min read 15 просмотров

Four cvars govern how your client talks to a CS 1.6 server: rate, cl_updaterate, cl_cmdrate and ex_interp. Set them well and the game feels crisp and hits register where you aim; set them badly and you get choke, warping and shots that do not land. The values are not mysterious, but they do depend on the server allowing them and on setting ex_interp to match. This guide gives concrete values and explains why each one is what it is.

1. What each cvar does

CvarMeaning
rateMaximum bytes/second you will accept from the server. The bandwidth budget for everything.
cl_updaterateHow many world updates/second you ask the server to send you.
cl_cmdrateHow many command packets/second you send to the server.
ex_interpInterpolation delay — how far in the past the client renders other players to smooth movement.

2. The values to use

On a modern engine against a well-configured server, set:

rate 100000
cl_updaterate 101
cl_cmdrate 101
ex_interp 0.01

This asks for the full 100-tick experience with enough bandwidth to carry it. On older builds or against old servers, rate 25000 was the practical ceiling; the 25th Anniversary update raised the usable maximum, which is why 100000 is reasonable now. If you are on steam_legacy, keep rate nearer 25000.

3. Why ex_interp must match your update rate

ex_interp is the one people get wrong. The correct value is 1 divided by your cl_updaterate:

ex_interp = 1 / cl_updaterate

At cl_updaterate 101 that is roughly 0.0099, so ex_interp 0.01 is correct. The default of 0.1 corresponds to a 10 Hz update rate and adds 100 ms of visual lag on a fast connection — which is why lowering it feels like the game "woke up". Do not go below 1/updaterate: if you set ex_interp 0 or something tiny while the server sends 100 updates, other players warp because the interpolation window is too short to bridge the gaps.

4. cl_cmdrate and cl_updaterate should match

Keep cl_cmdrate and cl_updaterate the same (both 101 is standard). cl_cmdrate is you talking to the server, cl_updaterate is the server talking to you; balancing them keeps the conversation even. There is no benefit to cl_cmdrate far above your frame rate — you cannot generate more command packets than you have frames.

5. The server has the final say

Every value you set is clamped into the server's window. If the server runs sv_maxupdaterate 60, your cl_updaterate 101 becomes 60. If it runs sv_maxrate 25000, your rate 100000 becomes 25000. This is why the same config feels great on one server and choppy on another — the server ceiling differs. The server side is documented in sv_maxrate and sv_maxupdaterate values.

6. Save them so they persist

Put the four cvars in autoexec.cfg so the config rewrite does not lose them:

rate 100000
cl_updaterate 101
cl_cmdrate 101
ex_interp 0.01

See the config.cfg guide for why autoexec.cfg is the durable place and config.cfg is not.

Common errors

  • Choke on the scoreboardrate too low for your update rate, or the server caps sv_maxrate. Raise rate; if it persists, the server is the limit.
  • Other players warpex_interp set below 1/updaterate. Set it to 0.01 with cl_updaterate 101.
  • Hits feel delayedex_interp left at the 0.1 default. Lower it to match your update rate.
  • Rates "do nothing" — the server clamps them. Confirm with net_graph 3 what update rate you actually receive.
  • Values reset each launch — they are only in config.cfg, which the game rewrites. Move them to autoexec.cfg.

Verification

Join a server, open net_graph 3, and check the update-rate figure the server actually sends against your cl_updaterate. Choke should be 0. If the delivered rate is lower than you asked for, the server's sv_maxupdaterate is the ceiling. Confirm ex_interp is 0.01 and that other players move smoothly rather than warping — that combination is what "good rates" actually looks like in play. If you still see lag, work through the high-ping guide.

Участники: Daemon666 ✦
Поделиться: