How to configure Counter-Strike: GO for the maximum competitive advantage

PC Gamer at

Adjust network settings in the config file

These network settings are the most important commands you will type into your config file. Find the following commands in your config and change their values as noted:

cl_interp "0"
cl_cmdrate "128"
cl_updaterate "128"

Also, add rate to your config file with the following value:

rate "128000"

Think of it like this: there are two versions of Counter-Strike being played, yours and the server’s. The client version is (default) 100 milliseconds in the past of the "real" (server) version of the game world. The more updates you have, the less interpolation (prediction) is required by your PC to accurately figure out what the server world looks like. If the server and your client compare data, and the server overrides your hit, then what you think is a hit will be a miss. There may be times when you’ll shoot someone and see blood, for example, but then the client reports 0 damage. This occurs because blood decals are client-side. Your client believes you scored a hit, draws the blood, and sends the packets to the server to be checked. If the server rules a miss, then the player takes 0 damage. This is why you want your client’s perception of the world to be as close to the server’s perception as possible.

Decreasing interpolation runs the moderate risk of experiencing laggy players’ models jittering. It is beneficial to lose smoothness to gain accuracy. The goal for competitive play is to always have the lowest possible amount of client side interpolation and gain the most accurate representation of the game world. So we set our cl_interp value to 0.

By setting it to 0 the game will automatically set the interp to the lowest possible value allowed by the server.

Next we want as many updates per second as the server will possibly give us. A 66 tic Valve matchmaking server defaults rates to 66. In case you ever play on a higher tic rate server we want to set our cl_updaterate to “128” and our cl_cmdrate to “128.” You can use higher values, but it won’t matter. With these settings, any time you connect to a higher value server, it will default you to the highest values allowed. The same goes with rate, which is the size of the packets. You want as much information as possible so we set this to “128000.” Again, this will default to the highest amount a server will allow. You can never have too much of a good thing!

"Now," you might ask, "my monitor's refresh rate is 60hz and thus those extra frames are not drawn, do I still benefit?" The answer is yes.

There are other variables to consider, such as input lag, mouse polling, and a general overall smoothness. If you have a high framerate, your input lag will be infinitely lower, and your mouse will feel smoother, even if your monitor is not actually drawing those frames. The physics, the tics, all the send/receive commands are still triggering themselves at a more rapid pace, and thus your representation of the game world is better, even if the frames are not technically being projected into your eyeballs.

Set up hotkeys for buys and grenades

Using a simple syntax in the config.cfg file, you can set up hotkeys to buy specific loadouts. The brackets below are to demonstrate where you'd place a word or letter, so don't actually type the brackets into the config file.

bind “[key]” “buy [weapon]”

So, if you wanted to bind the up arrow to buy an AK or M4 (depending on team), the command would be:

bind “KP_UPARROW” “buy ak47;buy m4a1”

Or if you wanted the home key to buy armor or head armor (based on cash) the command would be:

bind “KP_HOME” “buy vest;buy vesthelm”

It is extremely useful to bind separate keys for different grenade types. This way, you can throw a counter-flash while completely blind, instead of fumbling through the grenade menu. It works the same way, but the command is “use" instead of "buy."

For example, let’s say I want to bind “f” to put a flashbang in my hand. The command is: bind “f” “use weapon_flashbang”

Or maybe I want to use “v” to pull out a smoke grenade. bind “v” “use weapon_smokegrenade”

Here's a list of weapon codes in CS:GO.

Rifles
ak47 : AK-47
aug : Aug
famas : Famas
galilar : Galil
m4a1 : M4
sg556 : Sig aka Krieg

Sniper Rifles
awp : AWP
g3sg1 : Terrorist Autosniper
scar20 : CT Autosniper
ssg08 : Scout

Shotguns
mag7 : Mag7 CT Pump shotgun
nova : Nova Pump Shotgun
xm1014 : Auto Shotty
sawedoff : T Pump Shotgun

Pistols
p250 : P250
elite : Dual Berettas
fiveseven : Five-SeveN
deagle : Desert Eagle
tec9 : Tec9

SMGs
bizon : PP-19 Bizon
mac10 : Mac 10
mp7 : MP7
mp9 : CT MP9 (TMP replacement)
p90 : P90
ump45 : UMP

Machine Guns
m249 : Machinegun
negev : Negev Machine Gun

Utility
decoy : Decoy Grenade
flashbang : Flash Grenade
hegrenade : HE Grenade
incgrenade : CT Incendiary Grenade
molotov : T Incendiary Grenade
smokegrenade : Smoke Grenade

Customize the HUD

There’s a few tweaks to your HUD you can experiment with in the config file.

hud_scaling (0.5-0.95) - Allows you to change the size of the HUD
cl_radar_always_centered “0” - A lot of players prefer the default “1” but as in-game lead I like being able to see the entire map on the radar
cl_radar_scale ".4" - changes the radar zoom size so you can see more

Customize your crosshair

There is no best crosshair, but I prefer small classic static. A static crosshair does not expand during movement. As the crosshair’s expansion does not accurately reflect current accuracy values I recommend using a static crosshair.

Update: After talking to Matt Wood from Valve, who wrote "the same data that's used to determine the accuracy of your bullets is used to draw the spread of the crosshair (on the same frame)," Matt is definitely right and what I wrote about the dynamic crosshair wasn't correct. A dynamic crosshair in CS:Go does correctly show the accuracy values in real time, unlike in previous iterations of the game. I think most competitive players just do not use it because they are used to their legacy crosshairs, and the constant movement can be distracting. New players may benefit from the dynamic crosshair's visual feedback displaying how controlled movement improves their accuracy.

Again in the config file, change these values to customize your crosshair.

cl_crosshairdot "0" - This command disables the center dot
cl_crosshair_drawoutline "1" - I recommend everyone turn this outline on so the crosshair is more visible
cl_crosshair_outlinethickness "2" - Set to 1, 2, or 3 to adjust thickness. I prefer 2.

Crosshair style and color can easily be adjusted in CS:GO's Game Settings menu.