CS 1.6 ex_interp Settings: How Interpolation Works and Best Values
The console command ex_interp is one of those Counter-Strike 1.6 settings everyone copies from someone else's config without really knowing what it does. It controls interpolation - how your client smooths out the movement of other players between the updates it gets from the server. Set it wrong and enemy models start to jitter, teleport, or just don't line up with where the server thinks they are, which quietly ruins your hit registration.
In this guide I'll walk through what ex_interp actually is, how it's tied to cl_updaterate, why the values 0, 0.01 and 0.1 behave so differently, and how to pick an interp value that matches the server you're actually playing on. There's a formula, a couple of tables, ready-to-paste rate presets for your config, and a quick way to check everything with net_graph command.
What Is Interpolation in CS 1.6?
Interpolation is your client's way of smoothing out other players' movement between the updates it receives from the server. The server doesn't stream a continuous picture - it sends snapshots, a certain number per second. Between those snapshots your client has to guess where everyone is, and instead of guessing forward (which would be wrong a lot), it holds back slightly and draws the movement between two snapshots it already has. The command ex_interp sets how far back it holds - the size of that little buffer.
The key thing most people miss: ex_interp is a value in seconds, not some abstract number. ex_interp 0.1 means your client is showing enemies 100 milliseconds in the past. ex_interp 0.01 means 10 milliseconds. That's the whole reason the values feel so different - you're literally choosing how far behind the real action you want to see other players, in exchange for smoother movement.
When that buffer is set correctly, models glide smoothly and sit close to where the server has them. When it's too small for what the server can actually deliver, the client runs out of snapshots to interpolate between and starts to fill the gaps by jumping - that's the "jitter" and "teleporting" you see on enemy models. When it's too large, movement is buttery smooth but you're shooting at a position the enemy already left, and hits don't register the way you expect.
Interpolation doesn't work in isolation, either. It leans directly on your rates and the server's stability. A low ex_interp on a stable server that genuinely sends 100 updates per second is great. The same value on a packed or underpowered server that can't keep up will look worse than a higher one, because the snapshots simply aren't arriving fast enough to fill the buffer. That's why there's no single correct number - and why the rest of this guide is about matching interp to the server rather than chasing one magic value.
What Value Should ex_interp Be?
This is the actual formula: ex_interp = 1 / cl_updaterate - but treat it as a starting point, not the final answer for a given server. cl_updaterate is how many updates per second your client asks the server for, and its practical ceiling is 100. So at cl_updaterate 100 the matching interp is 1/100 = 0.01, which is the lowest value that makes sense.
There's a catch, though. Your cl_updaterate is capped by a server-side setting called sv_maxupdaterate. Plenty of admins running full 32/32 servers lower maxupdaterate to 60 (sometimes less) to ease the load on the CPU and network and keep things stable. You can ask for 100 all you want - if the server caps it at 60, you're getting 60, and your interp should follow that, not your config.
Best ex_interp Value in CS 1.6
Technically, 0.01 is the lowest possible value and the most accurate one - at cl_updaterate 100 on a stable server, it puts models as close to their real position as the game allows. But "most accurate" and "best" aren't the same thing.
The best value is the lowest one that stays smooth on the specific server you're playing on. On a clean, well-hosted server that's 0.01. On a busier or weaker one it might be 0.02, or 0.03, or higher - because below a certain point the models start to jitter and there's nothing your config can do about it. The server just isn't feeding enough snapshots. Chasing 0.01 everywhere gets you dragged-looking models more often than it gets you an aim advantage.
So my answer is - there's no single number. There's a method. Start at 0.01 and watch how enemy models move. If they jitter or teleport, bump interp up by 0.005-0.01 at a time until movement smooths out, then stop. That's your value for that server. It takes a couple minutes and it's worth doing on any server you play regularly - a couple minutes of testing beats guessing every round.
A quick real example. On a server I play a lot my ping sits around 35-40. If I set ex_interp 0 (auto), the game locks me to 0.09 - much higher than the formula suggests, because that server isn't sending as many updates as I'm asking for. Manually I run 0.03, because at 0.02 I already get jittery models. Same connection, same client config - the difference is entirely what that particular server can deliver. That means your settings are half of it, the server is the other half.
A note on 100 vs 101/102. You'll see a lot of configs using cl_updaterate 101. The short history: Valve once dropped the max to 100, but almost everyone had 101 in their configs, so it silently reset them to 30 and flooded Steam support with complaints. Valve bumped the cap to 102 just to stop the flood. The value you actually want is 100 - it lines up cleanly with ex_interp 0.01, and unlike 101/102 it doesn't throw the interp math off by a hair. So use 100 and don't overthink it.
cl_updaterate and ex_interp Table
| cl_updaterate | ex_interp |
|---|---|
| 100 | 0.01 |
| 60 | 0.016 |
| 50 | 0.02 |
| 30 | 0.033 |
Always test interp on a new server starting from 0.01. If the models visibly jitter, raise ex_interp in small steps (0.005–0.01) until movement is smooth. Three-five minutes, and it can genuinely tighten up your aim.
How to Check ex_interp with net_graph
The console command net_graph is the fastest way to see how your interp actually matches the server. Turn it on and read the line at the bottom of your screen.
- Type net_graph 1 in the console.
- Set
cl_updaterate 100andex_interp 0.01. - Watch the graph and the models. A steady line means the server is keeping up. Lots of yellow/orange dots or a jumpy, uneven line means you're not getting enough updates for that interp - the setting is wrong for this server.
- If you see that, lower
cl_updateratein steps of 10 (or raiseex_interp) until the yellow/orange dots clear up and the line settles.
The yellow and orange dots are the tell. They mean the server isn't delivering the updates your interp is counting on - so instead of forcing 0.01, you back off until the graph goes calm. That calm line is what you're aiming for, not a specific number in your config.
ex_interp 0 vs 0.01 vs 0.1 - What's the Difference
ex_interp 0 turns on auto mode - the game picks the value for you based on your updaterate. It's the safe choice for most players, and you can check what it landed on in the console. The downside is that it errs on the high side, so models can show up with a bit more visual delay than they strictly need.
ex_interp 0.01 is the minimum and, on a stable server running cl_updaterate 100, the most accurate. The picture sits closest to where players really are. But if the server is shaky or quietly sending fewer updates than you asked for, this is exactly where models start to jitter and teleport.
ex_interp 0.1 is the default and gives the most smoothing. It's more forgiving on a weak connection or an unstable server - the trade is the most visual delay of the three, meaning you're seeing enemies further in the past. Comfortable, but you pay for it in reaction time.
Understanding Choke in CS 1.6
Choke is the piece most interp guides skip, and it's the one that explains why a "perfect" 0.01 config still feels bad on some servers. Choke happens when the server can't send you as many updates as it's supposed to. You're asking for 100 a second, the server is willing to give 100 - but at that moment it physically can't, so it holds updates back. That held-back amount is choke, and you can see it in net_graph.
Here's where it bites. Picture a full server and the whole team rushing one spot - fifteen players shooting, throwing nades, and moving all at once. The server suddenly has to process far more than usual, and for those few seconds it drops from 100 updates per second to maybe 50. Everyone in that fight gets worse registration at exactly the moment it matters most. Then people start dying, things calm down, the server catches back up to 100, and reg feels fine again. Nothing changed in your config - the server just couldn't keep up under load.
This is the reason low interp isn't a free win. ex_interp 0.01 assumes a steady stream of updates. When choke kicks in, that stream has gaps, and a tiny interp buffer has nothing to smooth over - so models jitter and teleport right when the action peaks. A slightly higher interp rides over those gaps and stays smooth. That's the actual trade-off on a busy server: not "accurate vs sloppy", but "sharp when the server is calm vs stable when it isn't".
How to Fix Choke in CS 1.6
The order of operations matters here: check choke first, interp second. If net_graph shows steady choke on a server, no interp value will fully fix it - the fix is lowering your cl_updaterate to match what the server can really deliver (which also lowers your interp to suit), or just accepting that packed public servers won't give you LAN-clean registration. Once choke is under control, then you fine-tune interp on top of it.
To read it, turn on net_graph 3 for the detailed readout. You'll see separate values for loss and choke, and it's good knowing which is which. Loss is packets lost in transit, usually somewhere on your own connection. Choke is the server holding updates back - the server's side, not yours. Both should end up at 0. If choke climbs whenever the server fills up or a fight spikes, that's your signal the server can't sustain your updaterate - back it down until choke drops toward zero.
Useful related guides:
- Counter-Strike 1.6 Config Guide - Commands and Optimization - See how to create, edit, and optimize a CS 1.6 config using useful commands and settings.
- CS 1.6 FPS Boost - Best Settings for Stable FPS - Use the best settings and commands to improve performance and keep FPS stable in CS 1.6.
- How to Lower Ping in Counter-Strike 1.6 - Reduce latency, improve connection stability, and fix common causes of high ping in CS 1.6.
CS 1.6 Rates Settings for Better AIM
Rates control the flow of data between you and the server, and they feed directly into everything above - smoothness, hit registration, and how much delay you play with. Interp sits on top of your rates, so if these are off, no interp value will save you. There are three client-side commands that matter:
rate- how much data per second your client will accept from the server.cl_cmdrate- how many times per second your client sends commands to the server.cl_updaterate- how many times per second your client receives updates from the server.
That last one is the one tied to interp, so cl_updaterate is really doing double duty - it sets your update flow and your interp baseline at the same time.
One thing worth understanding is how rates relate to your in-game delay. Lowering rates can actually drop your ping number - sometimes a lot. If you're pulling ~200 ms at full rates, cutting cl_updaterate and cl_cmdrate down to something like 15 might roughly halve it. Sounds tempting, but it's a bad trade: at that point your client is receiving so few updates that model movement gets coarse and imprecise, and aiming properly becomes harder than the lower ping is worth. A lower ping number doesn't mean much if what you're shooting at is barely updating.
It's also worth knowing that your rate is capped by the server. The effective value is always the lower of the two - effective rate = min(your rate, sv_maxrate). You can set rate 100000 in your config, but if the server's limit is lower, you get the server's number. Many servers set a high sv_maxrate or leave it unrestricted, in which case a high rate is fine - but you never fully control it from your side.
Rates Table by Ping
| Ping | cl_updaterate | cl_cmdrate | rate | ex_interp |
|---|---|---|---|---|
| LAN | 100 | 100 | 100000 | 0.01 |
| Ping 10–60 ms | 100 | 100 | 100000 | 0.01 |
| Ping 60–90 ms | 60 | 60 | 25000 | 0.016 |
| Ping 90+ ms | 30 | 30 | 10000 | 0.033 |
These are starting points, not fixed law. The higher your ping and the less stable your connection, the more you lean toward the lower rows - but always confirm with net_graph on the actual server rather than trusting the table blindly.
Ready Rates Presets for Your Config
Paste the block that matches your situation straight into your config or console.
Low ping (under 50 ms):
cl_updaterate "100"
cl_cmdrate "100"
rate "100000"
ex_interp "0.01"
Medium ping (60–90 ms):
cl_updaterate "60"
cl_cmdrate "60"
rate "25000"
ex_interp "0.016"
High ping (90+ ms):
cl_updaterate "30"
cl_cmdrate "30"
rate "10000"
ex_interp "0.033"
For most players on a decent connection the low-ping block is the one to use. If the server can't keep up or your connection is shaky, step down to the medium or high preset - and if you still see choke or jitter, trust net_graph over the preset and adjust from there.
Conclusion
There's no single ex_interp value that's correct everywhere, and any guide that hands you one number is skipping the part that matters. ex_interp 0.01 is the lowest and most accurate value, and on a stable server that genuinely sends 100 updates a second, it's exactly what you want. On a weak or packed server it'll do the opposite - jittery, teleporting models and registration that feels off right when a fight kicks off.
The method beats the number every time. Start at ex_interp 0.01, watch how enemy models move, and check net_graph. If you see jitter, yellow/orange dots, or choke climbing under load, raise interp in small steps or lower your cl_updaterate until things settle. When movement is smooth and shooting feels consistent, you've found the right value for that server - and it might be different on the next one.
For most players a solid starting config is cl_updaterate 100, cl_cmdrate 100, rate 100000 and ex_interp 0.01. If the server can't keep up, don't force it - a slightly higher interp and smooth models will always beat a lower one that stutters. And remember choke comes first: no interp value fixes a server that can't feed you updates, so sort that out before you fine-tune anything else.
CS 1.6 ex_interp Settings F.A.Q.
What is ex_interp in CS 1.6?
ex_interp is the CS 1.6 command that controls interpolation on the client side. It defines how the game smooths player movement between updates received from the server. If the value is too low for a specific server, models may look shaky. If it is too high, models may appear with extra visual delay.
What is the best ex_interp value in CS 1.6?
For stable servers with cl_updaterate 100, the best starting value is usually ex_interp 0.01. However, it is not always the best value for every server. If models are jerky or unstable, try 0.02, 0.03, or slightly higher until movement becomes smooth.
Should I use ex_interp 0 or ex_interp 0.01?
ex_interp 0 enables automatic interpolation, so the game chooses the value by itself. It is safe, but often adds extra delay. ex_interp 0.01 is more direct and works well on stable servers with high updaterate. On unstable or crowded servers, 0 is the safer pick since it adjusts automatically.
Why do models shake with ex_interp 0.01?
Models usually shake with ex_interp 0.01 when the server does not send enough stable updates to match your cl_updaterate. This can happen on overloaded servers, 32-slot public servers, or servers with lower sv_maxupdaterate. In that case, increasing ex_interp slightly can make movement smoother.
Is ex_interp 0.1 bad?
ex_interp 0.1 is not always bad, but it adds more visual delay. It can feel smoother on weak connections or unstable servers, but the player models you see may be farther from their real server position. For most modern CS 1.6 servers, lower values like 0.01–0.03 are usually better.
Does ex_interp improve aim?
ex_interp does not directly improve your aim. It improves how player movement is displayed on your screen. If the value matches the server and your connection, models look smoother and more predictable, which can make shooting feel more stable.
What rates should I use with ex_interp?
A good default setup for stable servers is:
rate "100000"
cl_updaterate "100"
cl_cmdrate "100"
ex_interp "0.01"
If the server is unstable or your ping is high, you may need to lower cl_updaterate and increase ex_interp according to the formula ex_interp = 1 / cl_updaterate.



