Best CS2 Console Commands for Practice, Gameplay and FPS
Practice server, sv_cheats, grenades, bots, the new crosshair commands, HUD, radar, network and FPS, plus four ready configs
Counter-Strike 2 has thousands of console commands, and most players need maybe fifty of them. This guide is about those fifty: the ones I actually use for practice, for real matches and for checking performance. Every command and default value here is checked against the current CS2 build, after the September 2026 update that renamed the crosshair commands.
Looking for one specific command? Type it in the search box below the contents, it filters every table on the page. For a full list of everything in the game, use my CS2 console commands database.
How CS2 Console Commands Work
The current build lists about 4,300 variables and 1,250 commands. Around half of them are development-only and hidden from players, and a lot of the rest are tools, servers or internal stuff. A command can also exist and still do nothing for you, because it depends on where you are. There are three kinds:
Crosshair, HUD, radar, viewmodel, sensitivity, binds. They're saved to your config and work everywhere, matchmaking and Premier too.
mp_*, most sv_* and bot_*. They work only where you are the host: Practice, a private match you started, your own server.
Need sv_cheats 1 first, so they also work only on your own server. In the tables below they have a cheat mark.
How to Open the Console in CS2
- Open Settings → Game.
- Set Enable Developer Console (~) to Yes.
- Press ~ (the key under Esc) in the menu or in game.
If the key doesn't open it, your keyboard layout may use that key for something else. Bind Toggle Console to another key in the Keyboard / Mouse settings. In the console, find plus a word lists every command that has it in the name or description. I use it all the time to check whether some command from an old guide still exists.
Valve's own reference is the List of Counter-Strike 2 console commands and variables on the Valve Developer Community. It's long and not always up to date, but it's the closest thing to an official list.
Best CS2 Practice Commands
Practice starts on a local server: Play → Practice, any mode and map, GO. Then these commands take out the waiting: no warmup, no freeze time, money for everything, long rounds. In the Default column I give the value Competitive uses, because that's what you get in Practice. Casual and Deathmatch set their own.
Practice Server Commands
| Command | Values | Default | What it does |
|---|---|---|---|
mp_ |
- | - | Starts warmup. |
mp_ |
- | - | Ends warmup right away. |
mp_ |
0 / 1 | 0 | 1 keeps you in warmup until you set it back to 0. Handy for long practice. |
mp_ |
5 - N (sec) | 120 | Warmup length. Changing it restarts warmup. |
mp_ |
N (sec) | 0 | Restarts the match after N seconds. |
mp_ |
0 - 60 (sec) | 15 | Freeze time at the start of a round. |
mp_ |
0.1 - 60 (min) | 1.92 | Round length in minutes. |
mp_ |
0 - 60 (min) | 1.92 | Round length on bomb maps. 0 means use mp_roundtime. |
mp_ |
0 - 60 (min) | 1.92 | Same for hostage maps. |
mp_ |
0 - N | 24 | Rounds in a match, 0 = no limit. |
mp_ |
0 - N (min) | 0 | Time per map, 0 = no limit. |
mp_ |
0 / 1 | 0 | The round doesn't end when a team dies or the bomb explodes. One endless round. |
mp_ |
0 - N (sec) | 20 | How long you can buy after the round starts. |
mp_ |
0 - 3 | 0 | Buy outside the buy zone: 1 both teams, 2 only T, 3 only CT. |
mp_ |
0 - N | 800 | Money at the start of the match. |
mp_ |
0 - N | 16000 | Money cap. |
mp_ |
0 - N | 0 | Money added to everyone after each round. |
mp_ |
10 - N (sec) | 40 | Time from the plant to the explosion. |
mp_ |
0 / 1 | 1 | Team damage. |
mp_ / mp_ |
0 / 1 | 0 | Instant respawn after death for that side. |
mp_ |
0 - 30 | 2 | How many players one team can have over the other, 0 = no limit. More in my auto balance guide . |
mp_ |
0 / 1 | 1 | Moves players between teams to keep them even. |
sv_ |
0 - 3 | 0 | Bullet impact marks: 1 client (red) and server (blue), 2 client only, 3 server only. |
sv_ |
0 - 10 (sec) | 4 | How long impact marks stay. |
sv_ |
0 - 2 | 0 | 1 shows hits and near misses, 2 only hits. |
sv_ |
0 / 1 | 1 | Spectators fly through walls. |
sv_cheats Commands
These unlock after sv_cheats 1. Valve made them for developers and mappers, but for practice they're gold: fly to a spot, freeze the bots, see your exact coordinates for a lineup. Online the game just ignores them, so there's no ban risk, they simply don't work there.
| Command | Values | Default | What it does |
|---|---|---|---|
sv_ |
0 / 1 | 0 | Unlocks cheat-protected commands on a server you host. |
noclip cheat |
toggle, 0 / 1 | - | Fly through walls and floors. |
god cheat |
toggle, 0 / 1 | - | You take no damage. |
buddha cheat |
0 / 1 | 0 | You take damage but can't die. |
kill cheat |
- | - | Kills your player. In CS2 this one needs sv_cheats 1. |
sv_ cheat |
0 / 1 | 0 | Your active weapon never runs out of ammo, grenades too. |
sv_ cheat |
0 / 1 | 0 | Health comes back after damage. |
cl_ cheat |
0 / 1 | 0 | Shows your position, view angles and speed at the top of the screen. The base of every lineup. |
cl_ cheat |
0 / 1 | 1 | Turns the whole HUD off, for clean screenshots. |
cl_ cheat |
entity | - | Draws boxes around entities, players included, through walls. Legal wallhack for learning angles. |
cl_ cheat |
- | - | Removes those boxes. |
cl_ cheat |
0 / 1 | 0 | No ragdolls after death. Now cheat-protected, so it works only offline. |
CS2 Grenade Practice Commands
Grenade practice is about repeating one throw until it lands the same every time. The trail shows the flight path, the preview window shows the landing spot before you throw, and rethrow lets you go stand where the smoke lands and watch it come in. The ready nades.cfg with all of this is in the configs section.
| Command | Values | Default | What it does |
|---|---|---|---|
sv_ |
0 / 1 | 0 | Small picture-in-picture window that shows where the grenade will land before you throw. |
sv_ |
0 - 8 (sec) | 0 | How long the flight path stays on screen after a throw. |
sv_ |
0 - 8 (sec) | 0 | The same trail, for spectators. |
ammo_ |
0 - N | 3 | How many grenades you can carry in total. |
sv_ cheat |
- | - | Throws your last grenade again from the same spot, so you can watch it from where it lands. |
sv_ cheat |
0 / 1 | 0 | With 1 you get the grenade back right after the throw. |
CS2 Bot Commands
Bots are the easiest way to get a repeatable fight: you control how many there are, how good they are, where they stand and whether they shoot back. Two things trip people up. Bot difficulty only applies to bots added after you change it, and CS2 adjusts their level every round unless you turn that off with sv_auto_adjust_bot_difficulty 0.
| Command | Values | Default | What it does |
|---|---|---|---|
bot_ |
t / ct, level, name | - | Adds one bot. Without a team the game picks the side that needs it. |
bot_ / bot_ |
level, name | - |
Adds one bot to that side:
bot_add_ct expert
. With a bot name you get that exact profile, that's how you get
Elite bots
.
|
bot_ |
all, t / ct, name | - | Kicks all bots, one side or one bot by name. |
bot_ |
0 - N | 10 | How many bots the game keeps on the server. |
bot_ |
normal / fill / match | normal | Practice uses fill: bots fill the server up to the quota. normal means exactly that many bots. |
bot_ |
0 - 3 | 1 | 0 easy, 1 normal, 2 hard, 3 expert. Only for bots added after you set it. Competitive sets 2. |
sv_ |
0 / 1 | 1 | The game changes bot level every round by comparing their score to yours. 0 keeps the level you set. |
bot_ / bot_ |
-20 - 20 | -2 / 0 | Score gap that makes bots harder or easier when auto difficulty is on. |
bot_ |
any / T / CT | any | Which side new bots join. |
bot_ / bot_ / bot_ |
- | - | Bots use only knives, pistols or snipers. |
bot_ |
- | - | Bots use all weapons again. |
bot_ cheat |
1 / t / ct | 0 | Bots freeze in place. |
bot_ cheat |
0 / 1 | 0 | Bots move but don't shoot. |
bot_ cheat |
0 / 1 | 0 | Bots stay idle and don't attack. |
bot_ cheat |
0 / 1 | 0 | Bots don't see human players. |
bot_ cheat |
0 / 1 | 0 | All bots crouch. |
bot_ cheat |
0 / player | 0 | Bots copy the movement of the player with that index, bot_mimic 1 is usually you. |
bot_ cheat |
- | - | Puts a bot where you aim. |
For uneven setups like 1v5 or 5v10 you also need mp_limitteams 0 and mp_autoteambalance 0. My auto balance guide has a builder that writes the whole setup for you. Bot profiles, names and behaviour are covered in Bots in Counter-Strike 2.
CS2 Crosshair Commands After the September 2026 Update
In September 2026 Valve rebuilt the crosshair. Length, thickness and gap are now in real pixels and the game rescales them when you change resolution. There are ten styles instead of the old few, an outline with its own color, and old crosshair share codes stopped working. Several commands were renamed or removed, so crosshair configs from before the update half work at best.
- cl_crosshairsize
- →
cl_crosshair_length, now in pixels - cl_crosshairthickness
- →
cl_crosshair_thickness, in pixels - cl_crosshairgap
- →
cl_crosshair_gap, in pixels - cl_crosshairalpha
- →
cl_crosshaircolor_a - removed
-
cl_crosshaircolor(use R, G, B),cl_crosshairusealpha,cl_crosshair_outlinethickness(outline is now 0 off, 1 full, 2 half),cl_crosshairgap_useweaponvalue
Crosshair Commands
| Command | Values | Default | What it does |
|---|---|---|---|
cl_ |
0 - 9 | 7 | 0 Dynamic Cross, 1 Dynamic Circle, 2 Dynamic Cross (Legacy), 3 Static Circle, 4 Static Cross, 5 Static Cross (Shot Feedback), 6 Dot Only, 7 Dynamic Quad, 8 Static Square, 9 Static Quad. |
cl_ |
0 - 255 (px) | 8 | Bar length in pixels. Replaces cl_crosshairsize. |
cl_ |
0 - 32 (px) | 2 | Bar thickness, minimum 1 pixel. Replaces cl_crosshairthickness. |
cl_ |
px | 4 | Gap between the center and the bars. Replaces cl_crosshairgap. |
cl_ |
0 / 1 | 0 | Center dot. |
cl_ |
0 / 1 | 0 | T-style: no top bar. |
cl_ |
0 - 2 | 1 | Outline: 0 off, 1 full, 2 half. |
cl_ / cl_ / cl_ |
0 - 255 | 0 / 255 / 0 | Crosshair color in RGB. The old color presets are gone. |
cl_ |
0 - 255 | 255 | Opacity. Replaces cl_crosshairalpha and cl_crosshairusealpha. |
cl_
/
cl_
/
cl_
/
cl_
|
0 - 255 | 0 / 0 / 0 / 255 | Outline color and opacity. New, before the outline was always black. |
cl_ |
0 / 1 | 1 | The crosshair follows recoil. |
cl_ |
0 - 127 | 3 | Style 2 only: where the bars split while moving and shooting. |
cl_ |
0 - 255 | 255 | How far dynamic bars can spread. |
crosshair |
0 / 1 | 1 | Turns the crosshair off and on. |
cl_ |
0 / 1 | 1 | Warning sign when you aim at a teammate. |
cl_ |
1 - N | 1 | Thickness of the sniper scope lines. |
cl_ |
0 / 1 | 1 | Scope back in after a sniper shot. |
cl_ |
0 / 1 | 0 | Small delay before unscoping after a shot. |
cl_ |
0 / 1 | 0 | AUG and SG 553 scope dot uses your crosshair color. |
cl_ |
0.1 - 2 | 1 | Size of that scope dot. |
cl_ |
0 - 2 | 2 | Show the crosshair of the player you spectate: 0 off, 1 friends and party, 2 everyone. |
cl_ |
0 - 2 | 2 | When you spectate a bot: 0 your crosshair, 1 yours only when you can take over, 2 the default one. |
The easiest way to set it up is still the in-game Crosshair and Scope menu, it shows the result live. Commands are for your config, so the crosshair stays the same after a reinstall or on another PC. More on styles and pro crosshairs in my CS2 crosshair guide.
Viewmodel Commands
| Command | Values | Default | What it does |
|---|---|---|---|
viewmodel_ |
-2 - 2.5 | 1 | Weapon left and right. |
viewmodel_ |
-2 - 2 | 1 | Weapon forward and back. |
viewmodel_ |
-2 - 2 | -1 | Weapon up and down. |
viewmodel_ |
60 - 68 | 60 | Viewmodel field of view. Values under 60 no longer work. |
viewmodel_ |
1 / 2 | 1 | Preset position: 1 Desktop, 2 Classic. |
switchhands / switchhandsleft / switchhandsright |
- | - | Weapon to the other hand, the left or the right one. |
cl_ |
0 / 1 | 0 | Left hand by default. Details in how to switch weapon hand. |
CS2 HUD and Radar Commands
These don't change the game, they change how fast you read it. The radar matters most: a radar that shows the whole map without spinning gives you info at a glance, and that's worth more than any FPS tweak.
HUD Commands
| Command | Values | Default | What it does |
|---|---|---|---|
hud_ |
0.9 - 1.1 | 1 | Size of the whole HUD. |
cl_ |
0 - 12 | 0 | 0 team color, 1 white, 2 bright white, 3 light blue, 4 blue, 5 purple, 6 red, 7 orange, 8 yellow, 9 green, 10 aqua, 11 pink, 12 teammate color. |
cl_ |
0 - 3 | 3 | Above teammates: 0 nothing, 1 pips, 2 plus name, 3 plus equipment. |
hud_ |
0 / 1 | 1 | Name of the player you aim at. |
cl_ |
0 / 1 | 0 | Only the crosshair and the kill feed stay on screen. Made for videos. |
cl_ |
0 / 1 | 0 | Weapon selection shows the rarity color of your skins. |
cl_ |
0 / 1 | 1 | While spectating, the HUD takes the team or teammate color. |
cl_ |
0 / 1 | 0 | Player counts instead of avatars at the top. |
cl_ |
0 / 1 | 0 | Hides the avatars of other players. |
cl_ |
0 / 1 | 1 | Animated Steam avatars. |
ui_ |
topleft / topright / bottomleft / bottomright | bottomleft | Where Steam pop-ups appear. |
Radar Commands
| Command | Values | Default | What it does |
|---|---|---|---|
cl_ |
0 / 1 | 1 | Keeps you in the center of the radar. 0 shows more of the map near the edges. |
cl_ |
0 / 1 | 1 | Radar turns with your view. 0 keeps it fixed to the map. |
cl_ |
0.25 - 1 | 0.7 | Radar zoom. Lower shows more of the map. |
cl_ |
0.25 - 1 | 1 | Second zoom level for the toggle key. |
cl_ |
0 / 1 | 0 | Zooms out by itself to fit everything spotted on the map. |
cl_ |
0.8 - 1.3 | 1 | Radar size on screen. |
cl_ |
0.4 - 1.25 | 0.6 | Minimum size of player icons. |
cl_ |
0 / 1 | 1 | Square full-map radar while the scoreboard is open. |
cl_ |
0 / 1 | 0 | Square radar all the time. |
cl_ |
0 - 1 | 0.627 | Radar background opacity. |
cl_ |
0 / 1 | 1 | Blur under the radar, visible when the background isn't fully opaque. |
cl_ |
0 / 1 | 1 | Blends the map picture over the background. |
My radar: cl_radar_rotate 1, cl_radar_always_centered 0, cl_radar_scale 0.5, cl_hud_radar_scale 1.1. A clean HUD setup step by step is in CS2 HUD customization.
CS2 Network and Telemetry Commands
net_graph is gone in CS2. Its job is done by telemetry: small indicators in the corner for FPS, ping and packet loss. Each _show command takes 0 never, 1 only when things are bad, 2 always. The network settings themselves are mostly fine at default, CS2 handles them better than old configs do.
| Command | Values | Default | What it does |
|---|---|---|---|
rate |
98304 - 1000000 | 786432 | Max bytes per second you can receive. The default is fine for almost everyone, 1000000 is the max. |
cl_ |
0 - 19 | 0 | Interpolation ticks. CS2 ships with 0, most players never need to touch it. |
cl_ |
- | - | In CS2 it only prints the interpolation time the game actually uses. You can't set it anymore. |
mm_ |
25 - 350 | 150 | Max ping for matchmaking servers. See how to set max ping in CS2. |
cl_ |
0 - 2 | 1 | FPS and frame time in the HUD. |
cl_ |
1 - 100 (ms) | 100 | Frame time above this counts as poor. |
cl_ |
0 - 2 | 1 | Ping in the HUD. |
cl_ |
ms | 100 | Ping above this counts as poor. |
cl_ |
0 - 2 | 1 | Percent of lost or late packets. |
cl_ |
0 - 100 (%) | 2 | Loss above this counts as poor. |
cl_ |
0 - 2 | 0 | Breakdown: loss, late delivery and peak jitter. |
cl_ |
0 - 2 | 0 | Graph of jitter, loss and packet reordering. |
cl_ |
0 - 2 | 0 | Graph of how early or late your commands reach the server. |
What each graph means and when to worry is in my CS2 telemetry guide.
CS2 FPS Commands: What They Really Do
Let me be straight: there are no secret FPS commands in CS2. FPS comes from your hardware, drivers, Windows and video settings. What console commands can do is take away small bits of work (UI, tracers, ragdolls) and help you find where a stutter comes from. Sometimes that gives a few frames, more often just smoother frame times.
The Online column matters here. Some popular "FPS commands" are cheat-protected or controlled by the server, so in matchmaking they do nothing at all.
| Command | Values | Default | Online | What it really does |
|---|---|---|---|---|
fps_ |
0 - N | 400 | yes | FPS cap in game, 0 = no cap. Uncapped gives more average FPS, a cap a bit under what your PC holds often gives smoother frame times. |
fps_ |
0 - N | 200 | yes | FPS cap in menus. Keeps the GPU calm while you sit in the menu. |
cl_ |
0 - 4 | 0 | yes | 1 FPS, 2 smoothed FPS, 3 server ms, 4 FPS plus a log file. More in how to show FPS in CS2 . |
engine_ |
0 / 1 | 0 | yes | Moves the low latency sleep after the client tick. Works only with NVIDIA Reflex or AMD Anti-Lag 2 on in video settings. |
r_ |
0 / 1 | 1 | yes | Your own bullet tracers. Less noise during sprays. |
r_ |
0 / 1 | 1 | yes | Build info in the corner. No FPS effect, just a cleaner screen. |
cl_ |
0 / 1 | 1 | yes | In-game hints. |
cl_ |
0 / 1 | 0 | yes | Hides other players' avatars, a bit less UI work. |
cl_ |
0 / 1 | 1 | yes | Animated avatars off, fewer UI updates. |
cl_ |
-1 - N | 20 | yes | Max ragdolls at once. Lower helps a little on weak CPUs. |
cl_ |
0 / 1 | 0 | offline | No ragdolls at all. Cheat-protected now, so useless in matchmaking. |
func_ |
0 - 15 | 15 | server | Debris from breakable objects. The server decides this one, so it changes only on your own server. |
If you have real FPS problems, start with my CS2 FPS guide and how to fix FPS drops and stutters. How FPS and your monitor's Hz work together is in FPS and refresh rate, with CS 1.6 for comparison.
Other Useful CS2 Console Commands
The everyday ones: finding commands, connecting, configs, binds, sound and chat.
| Command | Values | Default | What it does |
|---|---|---|---|
find |
text | - | Searches commands by name and description: find radar. The fastest way to check if a command still exists. |
help |
command | - | Prints the description of a command. |
cvarlist |
- | - | Prints every command and variable. |
clear |
- | - | Clears the console. |
echo |
text | - | Prints text. I put it at the end of configs to see that they ran. |
status |
- | - | Server, map and players with their SteamIDs. |
connect |
ip:port | - | Connects to a server. |
disconnect |
- | - | Leaves the server. |
quit |
- | - | Closes the game. |
map |
map name | - | Loads a map on a local server: map de_dust2. |
exec |
file name | - | Runs a cfg file from the cfg folder. |
host_ |
- | - | Saves your current settings to disk right now. |
bind / unbind |
key, command | - | Puts a command on a key or removes it. Full guide in my bind tutorial . |
binddefaults |
- | - | Resets all keys to default. |
alias |
name, commands | - | Your own command made of others: alias "qq" "quit". |
toggle |
variable, values | - | Switches a variable between values, great for binds: toggle cl_radar_scale 0.4 0.7. |
sensitivity |
0.0001 - 8 | 1.25 | Mouse sensitivity. |
zoom_ |
0.01 - 3 | 1 | Sensitivity while scoped. |
volume |
0 - 1 | 1 | Master volume. |
snd_ |
0 - 2 | 1 | Voice chat volume. |
cl_ |
0 / 1 | 0 | Mutes chat and voice from the enemy team. |
cl_ |
0 - 2 | 0 | Only friends and party can talk to you: 1 outside Competitive, 2 in all modes. |
How to Create and Load a CS2 Config
A config is a text file with commands, one per line. Instead of typing twenty commands every time you run one: exec bots. CS2 looks for them here:
...\steamapps\common\Counter-Strike Global Offensive\game\csgo\cfg\
- Create a text file in that folder, for example
config.txt. - Put your commands, binds or scripts inside.
- Rename it to
config.cfg. Turn on file extensions in Explorer, so it doesn't end up asconfig.cfg.txt.
If your Steam library is somewhere else or you're not sure which folder is right, see my CS2 config location guide. Then there are three ways to run it.
From the Console
exec config
Good for practice configs you load when you need them.
From Launch Options
Steam → Library → right-click Counter-Strike 2 → Properties → General → Launch Options, and add this at the end of the line:
+exec config
What else is worth putting in launch options (not much) is in my CS2 launch options guide.
With autoexec.cfg
autoexec.cfg runs by itself every time CS2 starts. It doesn't exist by default, you create it in the same cfg folder. I keep only the always-on stuff there and load other configs from it:
cl_showfps 1 exec config
Why cl_showfps 1? It's a quick test. The counter shows up right in the main menu, so you know autoexec worked without loading a map. Remove it later if you want. More on cfg files in the CS2 config guide, and if you'd rather click than type, the CS2 Config Generator builds an autoexec for you.
Ready-to-Use CS2 Practice and Gameplay Configs
Four configs I use. Copy one, save it as a .cfg with the name in the frame, and load it with exec. Lines starting with // are comments, the game skips them.
Gameplay Config for a Clean HUD and Stable FPS (config.cfg)
Not a "+50 FPS" config. It turns off small things that cost the engine work and add screen noise: tracers, avatars, hints, extra ragdolls. On most PCs the average FPS barely moves, but the drops in big fights get smaller. Radar and HUD are set for reading the game fast. The crosshair part uses the new commands, put your own values there or make them in the in-game menu.
// General volume 0.6 sensitivity 1.9 mm_dedicated_search_maxping 75 cl_sniper_auto_rezoom 0 // FPS: 0 = no cap. If you get micro stutters, try a cap a bit under your usual FPS fps_max 0 fps_max_ui 120 r_drawtracers_firstperson 0 r_show_build_info 0 cl_autohelp 0 cl_hide_avatar_images 1 cl_allow_animated_avatars 0 // numbers instead of avatars at the top, remove // to use //cl_teamcounter_playercount_instead_of_avatars 1 cl_ragdoll_limit 5 cl_teamid_overhead_mode 1 hud_showtargetid 0 // Network rate 1000000 // Telemetry: 0 never, 1 only when poor, 2 always cl_hud_telemetry_frametime_show 1 cl_hud_telemetry_ping_show 1 cl_hud_telemetry_net_misdelivery_show 1 cl_hud_telemetry_net_detailed 0 cl_hud_telemetry_net_quality_graph_show 0 cl_hud_telemetry_serverrecvmargin_graph_show 0 // HUD and radar cl_hud_color 0 cl_weapon_selection_rarity_color 1 cl_radar_rotate 1 cl_radar_always_centered 0 cl_radar_scale 0.5 cl_hud_radar_scale 1.1 cl_radar_scale_dynamic 0 cl_radar_icon_scale_min 0.7 cl_radar_square_with_scoreboard 0 cl_radar_square_always 0 cl_hud_radar_background_alpha 0.627 cl_hud_radar_blur_background 1 cl_hud_radar_map_additive 1 // Crosshair (new commands, small static green cross) crosshair 1 cl_crosshairstyle 4 cl_crosshair_length 6 cl_crosshair_thickness 2 cl_crosshair_gap 2 cl_crosshairdot 0 cl_crosshair_t 0 cl_crosshair_drawoutline 1 cl_crosshaircolor_r 0 cl_crosshaircolor_g 255 cl_crosshaircolor_b 0 cl_crosshaircolor_a 255 cl_crosshair_recoil 0 cl_crosshair_sniper_width 2 echo config.cfg executed
Bot Practice Config (bots.cfg)
Offline practice against strong bots. You on T with 6 easy bots, against 13 expert CTs. That's 20 players, so start a Casual match, Competitive has only 10 slots. Run it after the map loads, and again after every map change, because loading a map resets the bot quota. For other team sizes use the builder in the auto balance guide.
The binds at the bottom are commented out. They all use the same key c only to show the idea, only the last bind on a key works. Pick your own keys and remove the //.
// Server mp_warmuptime 5 mp_freezetime 3 mp_limitteams 0 mp_autoteambalance 0 mp_buytime 120 mp_buy_anywhere 1 mp_maxmoney 16000 mp_startmoney 5000 mp_roundtime 2.5 mp_roundtime_defuse 2.5 mp_maxrounds 24 mp_c4timer 40 mp_friendlyfire 1 sv_showimpacts 2 sv_showimpacts_time 5 sv_showbullethits 1 // Bots: clear, keep the count fixed, keep the level fixed bot_kick bot_quota_mode normal sv_auto_adjust_bot_difficulty 0 // 6 easy T + you vs 13 expert CT bot_add_t easy bot_add_t easy bot_add_t easy bot_add_t easy bot_add_t easy bot_add_t easy bot_add_ct expert bot_add_ct expert bot_add_ct expert bot_add_ct expert bot_add_ct expert bot_add_ct expert bot_add_ct expert bot_add_ct expert bot_add_ct expert bot_add_ct expert bot_add_ct expert bot_add_ct expert bot_add_ct expert mp_restartgame 1 // Binds: change the key, remove // to use //bind "c" "toggle sv_cheats" // cheats on / off //bind "c" "sv_cheats 1; noclip" // fly //bind "c" "sv_cheats 1; toggle sv_regeneration_force_on" // health regeneration //bind "c" "sv_cheats 1; toggle cl_showpos" // coordinates on screen //bind "c" "toggle cl_draw_only_deathnotices" // only crosshair and kill feed //bind "c" "sv_cheats 1; toggle cl_drawhud" // no HUD at all echo bots.cfg executed
Grenade Practice Config (nades.cfg)
For learning smokes, flashes and molotovs, normal and jump throws. Endless warmup, money and grenades, the flight trail, and three binds: fly, coordinates, rethrow. Each bind is on its own key here, change them to whatever is comfortable.
// Server sv_cheats 1 mp_warmup_start mp_warmup_pausetimer 1 mp_buytime 3600 mp_buy_anywhere 1 mp_maxmoney 16000 mp_startmoney 16000 // Grenades sv_infinite_ammo 1 ammo_grenade_limit_total 5 sv_grenade_trajectory_prac_pipreview 1 sv_grenade_trajectory_prac_trailtime 8 sv_showimpacts 1 // Binds: change the keys if you need them for something else bind "F6" "noclip" // fly on / off bind "F7" "toggle cl_showpos" // coordinates on / off bind "F8" "sv_rethrow_last_grenade" // throw the last grenade again echo nades.cfg executed
The binds stay saved after you leave practice. They do nothing online, but if you want the keys back, unbind them with unbind F6 and so on.
Bunnyhop Practice Config (bunny.cfg)
Only for movement practice. No stamina loss, fast air acceleration, auto jump while you hold space. This is nothing like real matchmaking movement, it's for feeling how air strafing works.
mp_warmup_start mp_warmup_pausetimer 1 mp_buytime 3600 mp_buy_anywhere 1 mp_maxmoney 16000 mp_startmoney 16000 sv_maxspeed 1000 sv_enablebunnyhopping 1 sv_autobunnyhopping 1 sv_staminajumpcost 0 sv_staminalandcost 0 sv_airaccelerate 100 echo bunny.cfg executed
To go back to normal movement, load another map or set sv_airaccelerate 12, sv_maxspeed 320, sv_enablebunnyhopping 0, sv_autobunnyhopping 0, sv_staminajumpcost 0.08 and sv_staminalandcost 0.05.
CS:GO Commands That No Longer Work in CS2
Old configs and "FPS boost" lists are still full of CS:GO commands. CS2 doesn't have them at all, so the console prints "Unknown command" or just skips the line in a config. I checked each of these against the current build:
- net_graph
- Gone. Replaced by telemetry, see the network section above.
- cl_forcepreload
- Gone. Source 2 loads assets on its own.
- mat_queue_mode
- Gone. Rendering threads are managed by the engine.
- r_dynamic
- Gone. Lighting is part of the new renderer.
- cl_disablehtmlmotd
- Gone. CS2 has no HTML MOTD on servers.
- cl_player_proximity_debug
- Gone from the current build, even with sv_cheats.
- cl_crosshairsize, cl_crosshairgap...
- Renamed in September 2026, see the crosshair section.
The rule I use: if find doesn't show a command, it doesn't exist. If it exists but nothing changes after you set it, it's either server-controlled or cheat-protected.
CS2 Launch Options Myths
Launch options run once when the game starts. They're for startup behaviour, not performance. Most "FPS launch options" come from CS:GO or even 1.6 and do nothing in CS2:
| Option | What it did before | In CS2 |
|---|---|---|
-novid |
Skipped the intro video in CS:GO | No intro video to skip |
-threads N |
Set the number of CPU threads | The engine picks threads itself, forcing it rarely helps and can hurt |
-nojoy |
Turned off joystick support | Joystick is already off by default |
-fullscreen, -windowed, -noborder |
Forced the display mode | Set it in video settings instead |
-freq, -refresh |
Forced the refresh rate | CS2 detects it. Only useful to force a lower rate on purpose |
-tickrate 128 |
Tickrate of your own server in CS:GO | CS2 runs at 64 tick with subtick, this does nothing |
+cl_forcepreload 1 |
Preloaded assets in CS:GO | The command doesn't exist anymore |
+fps_max 0 |
Removed the FPS cap | Works, but it's just a console command run at startup |
What actually works is in my launch options guide, and more old beliefs about the game are checked in CS2 myths and mechanics.
Conclusion
Console commands in CS2 don't unlock hidden performance. They give you control: a practice server that doesn't waste your time, bots that do what you need, a crosshair and radar set up once and saved in a config. The useful set is small, and most of what floats around in old guides either was renamed or doesn't exist anymore.
If you only take three things from this: check commands with find, keep practice setups in separate configs instead of autoexec, and update your crosshair config after the September update.

Auto Balance and 1v5 Bots
Uneven teams, bots on one side, a setup builder.
open →
CS2 Bot Commands
Add, kick and control bots, plus a training config.
open →
CS2 Crosshair Guide
Styles, settings and pro crosshair codes.
open →
CS2 Config Files
Create, load and manage cfg files without losing them.
open →
CS2 FPS Guide
Real fixes for low FPS, no placebo tweaks.
open →
Legal Wallhack in CS2
Debug commands that show players through walls offline.
open →CS2 Console Commands FAQ
How do I open the console in CS2?
Settings → Game → Enable Developer Console (~) → Yes. Then press the ~ key.
Do console commands work in matchmaking and Premier?
Your own settings do: crosshair, HUD, radar, viewmodel, binds. Server rules like mp_* and anything that needs sv_cheats work only on a server you host.
Can I get banned for using console commands?
No. The console is part of the game. Commands that aren't allowed on a server are just ignored there.
Why doesn't my crosshair command work anymore?
The September 2026 update renamed them. cl_crosshairsize is now cl_crosshair_length, cl_crosshairgap is cl_crosshair_gap, cl_crosshairthickness is cl_crosshair_thickness, and the values are in pixels now.
Can console commands increase FPS in CS2?
Not much. They can remove small overhead and make frame times a bit more even. Real FPS comes from hardware, drivers and video settings.
How do I check if a command exists in CS2?
Type find and part of the name in the console, for example find crosshair. If it's not in the list, CS2 doesn't have it.
Which commands need sv_cheats 1?
The ones marked "cheat" in the tables above: noclip, god, kill, cl_showpos, sv_infinite_ammo, sv_rethrow_last_grenade, bot_stop, bot_dont_shoot and others. In CS2 even kill and cl_disable_ragdolls are on that list.
Should I put everything into autoexec.cfg?
No. Keep the always-on settings there and put practice setups into separate configs you load with exec when you need them.