COUNTER-STRIKE 2 · SERVER LAG GUIDE · OCTOBER 2026

How to Reduce Lag on a Counter-Strike 2 Server

CS2 server lag is usually one of four problems: missed ticks, choke, loss on the route or one player’s PC. Here is how to tell them apart with stats, status and the Telemetry HUD, then fix tick stability, network settings and resource use in the order that pays off most.

Start with evidence

Take three stats readings: empty, quiet, and at the worst moment. Then use status to see whether loss is one player, everyone, or nobody.

Hold 64 steadily

CS2 servers simulate at 64 ticks per second. Your goal is not “more tick”; it is stable 64 FPS with Svms staying inside the tick budget.

Fix choke before blaming the line

Low sv_maxrate, old CS:GO cfg files, and ancient client autoexecs still cause avoidable choke. Clean those out before spending money.

Know when the host is the limit

CS2 leans hard on one main CPU thread. A machine can look fine on a total CPU graph while the game thread is flat out and your server stutters.

What “lag” means on a CS2 server

When players say “the server is lagging”, they can mean several different failures that need different fixes. The fastest way to sort it out is to match the symptom to the place you should look first.

What players see Likely cause Where to look first
Everyone rubber-bands at the same time Server FPS drops below 64, often with choke stats: FPS, Svms, +-ms
One player alone skips, freezes or gets warning icons That player’s route, Wi-Fi, VPN, or PC frame-time spikes status for their loss/rate, plus their Telemetry HUD
Hits feel late even with decent ping Server frame overruns or client frame-time trouble stats and the player’s frame-time graph
Small hitch at a fixed interval Plugin timer doing work on the game thread Disable plugins in halves and watch stats
Far-away players complain more than local ones Distance and route quality status ping and a route test

Use this flow to separate server trouble from network trouble from one player’s machine before you touch the cfg.

Server, network or the player?
A player says the server is lagging
Does stats show server FPS below 64 at that moment?
Yes
The server can’t keep upPlugins, GOTV, bots, map or CPU. Fix tick stability first.
No
Does status show loss for everyone at once?
Yes
Server linkThe host’s network or an overloaded node.
No
Does that one player show loss or choke?
Yes
Their route or ratepathping or mtr, and remove old rate lines from their autoexec.
No
Client frame time: check their Telemetry HUD frame-time graph
Two console commands answer the first three questions, so you know where to look before you change a single cvar.

Sub-tick, 64 tick and the 15.6 ms budget

CS2 uses sub-tick updates. In plain English, the server records the exact instant that movement starts, a shot is fired or a grenade is thrown, so actions are judged on when they really happened instead of being rounded up to the next whole tick.

That does not mean the world simulation runs constantly. The world still updates in fixed ticks, and current CS2 dedicated servers run at 64 ticks per second. One tick is roughly 15.6 ms, so every server frame has to fit all of its work inside that budget: player input, movement, grenade physics, entity updates, plugin hooks and the snapshots sent to clients.

If that work takes longer than roughly 15.6 ms, the server overruns the tick budget. That shows up as Svms rising, +-ms becoming spiky, and eventually server FPS dropping below 64. Once that happens, players feel delayed updates, rubber-banding or unstable hit registration even if their raw ping looks fine.

This is also why chasing 128 tick on CS2 is a dead end. There is no supported 128-tick CS2 dedicated server, and old CS:GO launch options or copied “128 tick” guides do not change that. The server’s FPS cannot go above the tick rate anyway, so a healthy CS2 server should hold 64, not some bigger number.

The picture below is the useful mental model: not “tick as a marketing number”, but “how much work fits inside one 15.6 ms server frame”.

What has to fit inside one tick
64 ticks per second: one tick every 15.6 ms
1. Read input
Player commands arrive with sub-tick timestamps for shots, movement and grenades
Judged on when it happened
2. Simulate
Movement, grenade physics, entities, bot AI, GOTV and plugin hooks
All on the main thread
3. Send snapshots
The new world state goes out to every player, within the rate limits
Capped rates cause choke
Reading the budget in stats
  • FPS holds 64: every tick finished in time
  • Svms below 15.6 ms: the work fits
  • +-ms spiky: some ticks overrun
Server FPS can never go above 64, so a faster CPU shows as lower Svms, not a higher FPS.
Sub-tick changes how precisely actions are timed, not how often the world is simulated. Everything still has to fit inside 15.6 ms.

Measure first: stats, status and the Telemetry HUD

Take readings before you fix anything. One clean reading tells you almost nothing; three readings tell you whether the server degrades under load.

  • Empty server: your baseline with nobody stressing the map, plugins or snapshots.
  • Quiet moment: a normal round or a light period.
  • Worst moment: the exact time players complain, or the busiest point of the session.
stats
status

Read stats like this:

  • FPS: server simulation frames per second. It should hold 64. More CPU will not make it show more than 64 because the server tick rate is 64.
  • Svms: average milliseconds per server frame. This needs to stay below the per-tick budget of roughly 15.6 ms.
  • +-ms: frame-time variance. Spikes here often match the “it hitches every so often” complaints.

status is your per-player check. If one player shows loss while everyone else looks clean, that is usually their route or local network. If many players spike together, think server CPU, server link or a wider network problem.

For player-side checks, CS2 replaced net_graph with the Telemetry HUD. Each player has to enable it on their own PC; you cannot force it from the server. Ask the affected player to enable the network and frame-time views, then tell you what goes bad at the moment they feel lag.

cl_hud_telemetry_ping_show 2
cl_hud_telemetry_frametime_show 2
cl_hud_telemetry_net_misdelivery_show 2
cl_hud_telemetry_serverrecvmargin_graph_show 2

If the server looks clean in stats but one player’s frame-time graph is spiking, you are not looking at a server problem. If their network misdelivery is poor while others are fine, that points to their route, Wi-Fi or VPN rather than your cfg.

Fix tick stability first: if the server misses ticks, nothing else feels right

The biggest payoff usually comes from making the server hold 64 steadily. Choke and bad feel often disappear once the main game thread stops overrunning its budget.

Plugins: isolate before you optimise

Plugins are a common cause because they can do work every tick or block the game thread with database or HTTP calls. When that happens, the server is not “a bit busy”; it is literally waiting on work instead of finishing the current simulation frame. The usual sign is Svms climbing under load, or a hitch repeating at a neat interval such as every 30, 60 or 120 seconds when a timer fires.

The quickest isolation method is halves: move half of the plugins out of game/csgo/addons/counterstrikesharp/plugins/, test again, then keep halving until the culprit is obvious. This is faster than disabling one at a time on a long plugin stack. The trade-off is temporary loss of features while you test, but it is the cleanest way to prove where the stutter comes from.

After every CS2 game update, update Metamod and CounterStrikeSharp as well. Outdated builds often fail in odd ways: not a full crash, just strange hitching, hooks misbehaving or server health getting worse only after the patch.

GOTV, bots and heavy maps

tv_enable 0 removes GOTV work. That reduces per-tick processing and extra traffic, especially on small community boxes where every bit of main-thread time matters. The trade-off is obvious: no GOTV spectators and no TV demos from that server.

Bots are not free. Their AI runs every tick, so a server that is stable in warm-up can fall apart in live rounds if bots are active alongside players and plugins. Lowering or removing bots frees main-thread CPU, but the trade-off is losing bot fill or practice behaviour on servers that rely on it.

Large Workshop maps can also hurt because more entities and map logic mean more work each frame. If one custom map feels bad while stock maps are fine, that is a map problem until proven otherwise. Test the same player count and mode on a lighter map before changing anything else.

Slots and mode must match the CPU

CS2 does most of its server work on one main thread. That means a modest box with several spare cores can still struggle if the main game thread is maxed. More players, more active entities and more snapshots all add work to the same tick budget, so advertising more slots than the CPU can carry is a direct path to unstable 64.

If the server is fine empty and degrades only when the round is busy, reduce slots, simplify the mode or remove expensive add-ons. You are trading peak capacity for consistent simulation, which is nearly always the right trade on scrim, retake and surf communities where “full but stuttering” is worse than “slightly fewer slots but stable”.

Restart if performance degrades over days

If the server starts clean after a fresh boot and becomes worse only after it has been up for a long time, schedule a restart in a quiet hour. This does not fix bad code, but it can clear gradual degradation while you investigate the real cause. The sign that it helped is simple: your worst-case stats readings improve immediately after the restart and stay better for a while.

This matrix is useful when you want to decide what kind of “lag” a setting can actually fix.

What each cause costs, and who can fix it
CauseMain CPU threadBandwidthPlayer’s route or PCFixable in a cfg
Plugins doing work every tickYes––Partly
GOTV (tv_enable 1)YesPartly–Yes
Bots (bot_quota)Yes––Yes
Heavy Workshop mapYes––Partly
Low sv_maxrate from a CS:GO cfg–Yes–Yes
Old rate line in a player’s autoexec––YesYes
Distance to the server––YesNo
Noisy neighbour on the nodeYes––No
“Partly” for plugins: you can remove or replace a plugin, but not make a slow one faster from the cfg.
Most server-side causes land on the main CPU thread. The two causes you can’t fix in a cfg need a different node or a closer location.

Network settings: choke is not the same as loss

Loss means packets were sent and never arrived. That usually points to the route, Wi-Fi, ISP peering or a VPN. Choke means the server had updates but was not allowed, or was not able, to send them. A low rate cap can cause choke, and an overloaded server can cause it too. That is why choke often turns up together with low server FPS.

Start with a clean baseline in server.cfg:

sv_minrate 0
sv_maxrate 0
tv_enable 0
bot_quota 0

sv_minrate 0 and sv_maxrate 0 remove server-side rate caps. The reason this works is simple: a low sv_maxrate copied from an old CS:GO cfg stops the server sending as much data as busy situations need, which creates choke even on a good line. The trade-off is slightly higher bandwidth use at busy moments, but bandwidth is rarely the real limit on a CS2 server.

bot_quota 0 is only for servers that do not need bots. If your mode relies on them, do not copy that line blindly.

Also delete old CS:GO leftovers and any “performance cfg” file you do not fully understand. Old lines such as sv_maxcmdrate and sv_maxupdaterate do not work the way old forum posts claim. If you cannot explain why a cvar is there, remove it and test. If you are unsure a cvar even exists, check it with find <name> in the console.

Client rates matter too. CS2’s client rate default is 786432, shown in the menu as Unrestricted. A player with an ancient autoexec forcing rate 80000 or rate 128000 can create choke for themselves while everybody else is fine. If status shows only one player struggling, ask them to remove old autoexec networking lines before you touch the server again.

Distance still matters more than cfg tweaks. A UK community will generally get the best results from London because raw travel time is lower; nothing in server.cfg can fix a server that is simply too far away. Good settings cannot turn a high-latency route into a low-latency one.

This path diagram helps because loss and choke happen in different places.

Where loss and choke happen
Loss: on the way
Player’s PC
Wi-Fi or router
ISP
internet route
Server in London
Choke: at the server
Game thread builds the update
rate limit
Update sent or held back
Loss is fixed on the route or the player’s connection. Choke is fixed with rate settings or by getting server FPS back to 64.
Loss means packets disappeared on the way. Choke means the server never sent them in the first place.

For route checks, ask the affected player to test the path to the server IP. On Windows use pathping; on Linux or macOS use mtr.

pathping 203.0.113.10

Read route tests carefully. If loss starts at one hop and continues all the way to the final destination, that is real loss. If a middle hop looks bad but later hops and the destination are clean, that router is probably just ignoring or de-prioritising pings rather than dropping your game traffic.

Resource usage: do not trust the wrong graph

The most common reading mistake is looking at total CPU and deciding the server has plenty left. CS2 server performance is mainly about one main thread. On a machine with several cores, the panel can show a modest overall percentage while the game thread is effectively saturated and your tick time is already slipping. A readable per-core or per-thread graph is far more useful than a single averaged CPU bar.

RAM is usually not the answer to CS2 server lag. The official minimum is 2GB, and once the server has enough memory to run cleanly, missed ticks are far more often a CPU issue than a RAM issue. More RAM can help if the machine is genuinely short of memory, but it does not make the main simulation thread finish faster.

Disk speed matters mostly at map loads and updates. If the complaint is a hitch during map change, slow storage can be involved. If the complaint is rubber-banding in the middle of live rounds, disk is rarely the first suspect. Keep enough storage for the install and updates, but do not expect faster storage to rescue poor in-round tick stability.

Then there is the shared-hosting problem: noisy neighbours. If your server is worse at certain times of day regardless of player count, but fine on the same map and cfg at quieter times, another tenant on the node may be competing for the same hardware. That is not something you tune away in the config.

If you need a refresher on the official baseline for CPU features, RAM, storage and supported operating systems, see these game server hardware requirements. For lag diagnosis, though, remember the order: first tick stability, then rates, then route, and only then bigger hardware.

Symptom → likely cause → first fix

Symptom Likely cause First fix
Everyone rubber-bands at once Server FPS below 64, often with choke Run stats at the exact moment; remove plugins, disable GOTV, reduce bots or slots
One player stutters That player’s route, Wi-Fi, VPN or frame-time spikes Check their line in status and have them enable the Telemetry HUD
Hits feel late with good ping Server frame overruns or client frame-time trouble Watch Svms and +-ms; if the server is clean, look at the player’s frame-time graph
Hitch every map change Storage or map/workshop load overhead Test on a lighter map and make sure the server is fully updated
Rhythmic hitch every 30/60/120 s Plugin timer or blocking task on the game thread Isolate plugins in halves and update your plugin stack after each CS2 patch
Fine yesterday, bad after an update Server and clients mismatched, or outdated Metamod/CounterStrikeSharp/plugins Update the server files, then update the plugin framework and test with add-ons stripped back
Lag only in live rounds, not warm-up Busy-round CPU load: more entities, snapshots, bots or plugin work Watch worst-case stats; reduce bots, simplify plugins, or lower slots for that mode

Tune it or upgrade?

Once you have a clean cfg and good measurements, the decision becomes simpler. Upgrade only after you can show that the problem is no longer caused by plugins, bad rates or stale CS:GO leftovers.

Situation Tune more? Upgrade or move? What to look for
stats is clean when empty, but server FPS drops below 64 in proper matches after plugin cleanup No major cfg win left Yes Fast single-core CPU performance, not just more total cores
Players are mostly in the UK, server FPS is fine, but ping is still higher than it should be No cfg fix for distance Yes London location for the shortest path to UK players
Performance gets worse at busy times of day, not busy player counts Little you can tune Usually yes A less crowded node and a panel with a CPU graph you can actually read
You need add-ons for retake, surf or practice, and diagnosis requires stripping them back Only if plugin access is missing Sometimes Full plugin access so you can disable, update and isolate add-ons properly
The panel shows only total CPU and hides useful health data Hard to tune well Sometimes Readable usage graphs and console access for stats, status and cfg cleanup
When the machine is the bottleneck

If you have removed bad plugins, uncapped rates, updated after the latest CS2 patch and the server still cannot hold stable 64 at the times your community actually plays, the next step is usually a faster CPU or a better location. Our Counter-Strike 2 server hosting comparison is the quickest way to shortlist London plans with plugin access and a panel that exposes usable performance graphs.

Compare the best CS2 server hosts

Counter-Strike 2 server FAQ

Why is my CS2 server lagging?

Usually because the server is missing its 64-tick frame budget, a bad rate cap is causing choke, packets are being lost on the route, or a player’s PC is stuttering. The only reliable way to tell them apart is to check stats, status and the player’s Telemetry HUD at the exact time the complaint happens.

Can I run a CS2 server at 128 tick?

No, not as a supported CS2 dedicated server setup. CS2 servers currently simulate at 64 ticks per second, and old CS:GO -tickrate advice does not give you a real 128-tick CS2 server. Focus on stable 64 and low frame variance instead.

What is the difference between choke and loss in CS2?

Loss means packets never arrived, which usually points to the route, Wi-Fi, ISP or VPN. Choke means the server had updates but could not, or was not allowed to, send them, usually because of a low rate cap or an overloaded server. Choke often appears together with low server FPS because both come from the same overload.

How do I check server FPS on a CS2 server?

Use the stats command on the server console. The FPS field shows the server simulation rate and should hold 64, while Svms tells you how much time each server frame is taking. Take readings when the server is empty, during normal play and at the worst moment, not just once after a restart.

Will more RAM stop my CS2 server lagging?

Usually not. CS2 needs at least 2GB to run, but in-round lag is more often caused by the main CPU thread missing its tick budget than by memory. Extra RAM helps only if the machine is genuinely short of memory; it does not make the server simulate ticks faster.

More server lag guides

Our Counter-Strike 2 host comparison, plus lag guides for other games.

Written for the current 64-tick Counter-Strike 2 dedicated server. Requirements, launch options and the Telemetry HUD commands come from Valve’s own documentation and release notes.