How to be good at CS:GO


Equipment and physically playing

First of all you can only be as good as your equipment. I don’t play golf but I’ve heard the phrase, “You can only be as good as your clubs.” The same is true here. I’ve used the MX518 for years. Some say it has a hardware smoothing feature that negatively impacts you, but I’m so used to it I can’t tell. Let’s talk DPI. There’s a ton of information out there but here’s the most accurate information. First DPI stands for dots per inch, which is a reflection of accuracy. The refresh rate is how often the mouse records tracking data. After 800 DPI you can’t really tell the difference. Theoretically, you want more data points at the highest possible rate for the most precise tracking. However, a lot of gaming mouses use interpolation to increase their DPI’s. This means when you jack a G400 up to 1600 DPI, it simply takes the 800DPI scan and multiplies it by 2. This is not ideal, because now you have fake interpolated data points. You want to use a native DPI of whichever mouse you are using, so there’s 0 interpolation and all data points are real. The G400’s sensor’s native DPI is 800 and 3600, so you’d want to use either of these two values. Since 3600 is pretty damn insanely high, it’s best to use 800. Honestly, most people won’t be able to tell the difference in accuracy using different DPI’s because the refresh rate is far more important. For example, it’s really hard to tell an accuracy difference between a G400 at 800 DPI with an in game sensitivity of 1.5 versus 1600 DPI at 0.75. Refresh rate is critical because a lot of low tier mice will stop tracking when you flick it across the pad.

You need to find a sensitivity that works for you. I generally suggest a complete mouse swipe should be around 120 degrees. Remember, if someone is behind you, you’re dead anyway. You really just need to worry about what’s in front of you. A lower sensitivity increases your accuracy as it takes more momentum to perform the same action. Think of it like an open heart surgeon using mechanical robot arms to make precise cuts. The machines reduce the impact of each motion so the doctor has greater control.

The mouse pad you decide to use is very critical. When I first started playing I used a DKT cloth fat pad. The cloth pads offer some resistance so as to help curb your movements and reduce your mistakes similar to our discussion of a low sensitivity above. Nowadays, I need to use a low resistance slick pad due to a wrist injury. Slick pads offer little resistance so flick shots become very easy. Each style has a benefit, so experiment and find out what works for you. Since control is so important for new players I recommend a cloth pad if you are just starting out.

Now, as far as set up goes, it doesn’t matter what position you play in as long as you play from the wrist and play the same way every time. Do you play with shoes on? Always keep your shoes on. Just find a position that works and stick with it.

The best advice I can give you is to play from the wrist. What I mean by this is to make sure you don’t use your arm or hand to move the mouse. Keep your arm still and focus on wrist movement. Your wrist is infinitely more agile and reactive than you arm, and by using one pivot point you can be more consistent. Consciously think to yourself as you practice “Play from the wrist”. Additionally, use your finger tips to control recoil.

tl;dr Use native DPI of your desired mouse, make sure it has a high refresh rate, play with your wrist and fingers, and use consistent positioning.


There’s a lot of discussion about what the best rates are. Rates are Counter-Strikes network settings. A tic is a game measurement unit for a send/receive updates per second. The more tics, the more accurate the game play. This is why you want to play on a 128tic server. CS:GO seems to cap out at around 128. I’ve never seen it go above 122 personaly, but some people report it theoretically maxes out at round 128.

When you fire your gun in Counter-Strike your client sends the data to the server, but the server always gets final jurisdiction. If they compare data, and the server over rides your hit, then what you think is a hit will be a miss. There are many times when you’ll shoot someone and see blood, 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. It is more beneficial to suffer slightly warping player models rather than smooth interpolated models. The goal for competitive play is to always have the lowest possible amount of client side interpolation. 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. So set our cl_updaterate to “128” and our cl_cmdrate to “128”. You can use higher values, it won’t matter. Any time you use a higher value the server 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 I 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!

(edit: In the first edition of this guide I forgot the command is no longer cl_rate, but simply rate. So “rate 128000” without the quotes is the correct command)

You can find your config.cfg in the cfg folder within the game directory. Edit it with notepad or any other editor. Just be sure you have “hide file extensions for known file types” turned off so that you can make the file extension .cfg and not end up with config.cfg.txt.

You can also type these commands into the console, or make another config called autoexec.cfg. Just for safe measure I like to write a line at the end of my config.cfg that says “exec autoexec.cfg”. This way, I know the autoconfig executes no matter what. Hell, you can even put these commands in your launch parameters with +’s. So your launch options would look like this “-console +cl_rate 128000 +cl_cmdrate 128” etc.

Edit: Since I’ve gotten such good feedback on this guide I want to add this little gem:

bind f “use weapon_flashbang”

This command will allow you to pull out your flash by pressing “f”. You can set the key to whatever you want. You can even create a button for every nade. This way, when you are flashed you don’t need to cycle through all your nades to find the counter flash. With a quick bind you can instantly put the flash in to your hand and desperately click mouse1 as fast as you can and toss a counter.


Movement is more important in Counter-Strike than your ability to aim or react. Nine times out of ten when a player makes a shot, dies, and starts screaming into his mic, “But I was right on him!” he failed because his movement was off. All the rifles have a movement penalty. You need to trick the game into believe you are completely still when you fire.

Cross hair placement
Everyone needs to watch this video from Adren. It’s really an impressive piece of work.

You may also like...

Loading Facebook Comments ...

Leave a Reply

Your email address will not be published.