A CS 1.6 server exposes hundreds of cvars, and most are noise you will never touch. This is the short list that actually determines whether your server is findable, plays smoothly, and is safe to run in public. Put these in server.cfg; the round-specific mp_ cvars have their own reference.
1. Identity and access
| Cvar | Example | What it does |
|---|---|---|
hostname | "My CS 1.6 Server" | Name shown in the browser and master list. |
rcon_password | "long-random" | Remote admin password. Make it long; RCON is brute-forceable. |
sv_password | "" | Join password. Empty = public. |
sv_contact | "[email protected]" | Contact address in server info. |
sv_region | 3 | Master-list region (0 US-East ... 3 Europe ... 255 world). |
2. Visibility and networking
| Cvar | Example | What it does |
|---|---|---|
sv_lan | 0 | Must be 0 to heartbeat the master list. 1 = LAN only. |
sv_timeout | 60 | Seconds before a silent client is dropped. |
sys_ticrate | 1000 | Target server FPS ceiling — see the truth about it. |
pausable | 0 | Prevent clients pausing the server. |
sv_lan 0 is the one people forget; with it at 1 the server never appears online and clients hit a LAN error. See server not in the master list.
3. Rates — the settings that decide how it feels
| Cvar | Example | What it does |
|---|---|---|
sv_maxrate | 25000 | Max bytes/sec per client. 0 = uncapped; cap it. |
sv_minrate | 15000 | Floor so low-rate clients do not choke everyone. |
sv_maxupdaterate | 101 | Max snapshots/sec to a client. Cannot exceed server FPS. |
sv_minupdaterate | 30 | Floor for update rate. |
sv_maxspeed | 320 | Movement speed ceiling. Standard is 320. |
sv_maxupdaterate is bounded by your actual server FPS: promising 101 updates on a 60 FPS server is a lie the engine cannot keep, and you get choke on the scoreboard (see choke and loss).
4. Downloads
| Cvar | Example | What it does |
|---|---|---|
sv_allowdownload | 1 | Let clients download missing content. |
sv_allowupload | 1 | Let clients upload their sprays/logos. |
sv_downloadurl | "http://dl.example.com/cs" | FastDL mirror. See FastDL setup. |
5. Logging and security
| Cvar | Example | What it does |
|---|---|---|
log | on | Enable logging to cstrike/logs/. |
mp_logmessages | 1 | Log chat, useful for moderation. |
mp_logdetail | 3 | Log attacks and kills (bit 1 + bit 2). |
sv_cheats | 0 | Must be 0 in public; 1 enables cheat cvars. |
sv_filterban | 1 | 1 = banned IDs are blocked (ReHLDS/HLDS ban filter). |
sv_voiceenable | 1 | In-game voice on/off. |
decalfrequency | 30 | Seconds between spray decals; raise to curb spray spam. |
That is 25 cvars that do real work. On ReHLDS you also get hardening cvars worth adding on top, but the list above is the universal floor.
6. How to think about the groups
Treat these five groups as a checklist for any new server. Identity is what players and the master list see, and a weak rcon_password here is the single most dangerous omission — a guessed RCON password hands an attacker the whole server, so make it long and random and never reuse it across servers. Visibility and networking decides whether the server is reachable at all; sv_lan 0 plus an open UDP 27015 (see which ports to open) are non-negotiable for a public box.
The rate group is where most "my server feels laggy" complaints actually live. The rates are a contract between server and client: the server offers a ceiling, the client requests up to it, and the real delivered rate is the minimum of what both allow and what the server FPS can sustain. Set sv_maxrate and sv_maxupdaterate deliberately rather than leaving them at defaults, and keep the update rate within reach of your true server FPS — the details are in the sys_ticrate guide. The downloads and logging/security groups are the ones people bolt on later and regret not setting from day one: FastDL keeps map changes fast, and logging is the only reason you will be able to answer "who did that?" a week after the fact.
A final habit worth forming: comment each block in server.cfg so six months from now you know why a value is what it is. A cvar with no comment is a cvar nobody dares change.
Common errors
- Server invisible online —
sv_lan 1. This is the number-one cause. - Choke/loss for everyone —
sv_maxupdateratepromises more than server FPS delivers. Match it to real FPS. - Wrong region in the browser —
sv_regionset to the wrong number, so region filters hide you. - RCON compromised — a short
rcon_password. Use a long random string and considersv_rcon_*failure limits on ReHLDS. - Cvar "does nothing" — it is being re-set later by
amxx.cfgor a per-map config. Trace the execution order.
Verification
After editing server.cfg, change the map and read values back in the console — typing a cvar name with no argument echoes its current value:
sv_lan sv_maxupdaterate sv_downloadurl
Confirm each shows what you set. Then check the server appears in the internet browser under the right region, and that a client joins without choke. If a value refuses to stick, see why server.cfg is not executing.









