How to Change Bot Difficulty in CS2: Commands & Tips

how to change bot difficulty cs2

If you’re practicing aim, map movement, or utility lineups, the right bot difficulty keeps sessions efficient and fun. This guide shows every reliable way to change bot difficulty in CS2, why it sometimes “doesn’t stick,” and how to automate your setup so you can jump straight into practice.

TL;DR (Quick answer)

  1. Enable the developer console (Settings → Game → Enable Developer Console → Yes).
  2. Press ~ (tilde) in-game.
  3. Set difficulty:

bot_difficulty 0   // easy

bot_difficulty 1   // normal

bot_difficulty 2   // hard

bot_difficulty 3   // expert

  1. Apply it: either mp_restartgame 1, or bot_kick; bot_add_t; bot_add_ct to respawn bots at the new difficulty.
  2. If the game keeps changing difficulty, run:

sv_auto_adjust_bot_difficulty 0


What “bot difficulty” actually does (and the only valid values)

In CS2, bot_difficulty accepts values 0–3:

  • 0 = Easy
  • 1 = Normal
  • 2 = Hard
  • 3 = Expert

Tip: Typing bot_difficulty alone shows the current value. The default on many local lobbies is often 2 (hard).

You may see guides claim levels up to 4 or 5. That’s not how bot_difficulty works—it tops out at 3 (expert). There is also custom_bot_difficulty used by certain modes and scripts; if you experiment with that, keep your expectations separate from bot_difficulty and stick to its documented range for consistent results.


Step-by-step: change bot difficulty offline (practice/with bots)

  1. Create a local match (Play → Practice).

Open console (~) and set your level:

bot_difficulty 3

  1. Respawn bots so the new difficulty applies:
    • Fast restart: mp_restartgame 1, or
    • Hard refresh: bot_kick; bot_add_t; bot_add_ct

Why respawn? Difficulty is applied when bots join/respawn. If you don’t restart or re-add, some or all bots may still run at the old difficulty.


“It keeps changing back!” — stop the auto-adjust

CS2 can automatically tweak bot difficulty during play. To lock your chosen level, add this before (or right after) setting difficulty:

sv_auto_adjust_bot_difficulty 0

bot_difficulty 2      // for example

mp_restartgame 1

If you still see inconsistent behavior, do a hard refresh:

bot_kick

bot_add_t

bot_add_ct


Add the exact number of bots you want

Pair difficulty with the right amount of opponents:

bot_quota 10                 // total bots allowed

bot_quota_mode fill          // keep the server filled up to bot_quota

bot_difficulty 1             // set level

mp_restartgame 1

Useful adds/removals:

bot_add_t         // add a T bot

bot_add_ct        // add a CT bot

bot_kick          // remove all bots

bot_kick name     // remove one bot by name

Other handy lobby protections:

mp_limitteams 0

mp_autoteambalance 0

Want a clean 1vX scenario? Kick all bots, set quota/mode, then add only the side you want to fight.


Change difficulty mid-match without leaving

Set your new value:

bot_difficulty 3

Apply it via quick restart or re-adding bots:

mp_restartgame 1

// or

bot_kick; bot_add_t; bot_add_ct


Power-user setup: one-key difficulty toggles (binds)

If you practice often, create aliases and binds. Paste this in your console to try it now; then put it in autoexec.cfg to make it permanent (see next section):

// Lock difficulty auto-adjusting and apply chosen level

alias bd0 “sv_auto_adjust_bot_difficulty 0; bot_difficulty 0; mp_restartgame 1”

alias bd1 “sv_auto_adjust_bot_difficulty 0; bot_difficulty 1; mp_restartgame 1”

alias bd2 “sv_auto_adjust_bot_difficulty 0; bot_difficulty 2; mp_restartgame 1”

alias bd3 “sv_auto_adjust_bot_difficulty 0; bot_difficulty 3; mp_restartgame 1”

bind “F6” “bd0”   // Easy

bind “F7” “bd1”   // Normal

bind “F8” “bd2”   // Hard

bind “F9” “bd3”   // Expert

You can also bind bot counts:

alias b5 “bot_quota 5; bot_quota_mode fill; mp_restartgame 1”

bind “F5” “b5”


Make it permanent with autoexec.cfg

  1. Create autoexec.cfg in your CS2 cfg folder (Steam → CS2 → right-click → Manage → Browse local files → game\csgo\cfg\).

Add your preferred defaults, for example:

// — My bot practice defaults —

sv_auto_adjust_bot_difficulty 0

bot_difficulty 2

bot_quota 10

bot_quota_mode fill

// optional quality-of-life

mp_limitteams 0

mp_autoteambalance 0

  1. Launch option: add +exec autoexec.cfg to CS2 Launch Options so it always runs.

Dedicated/community servers (RCON / server.cfg)

On a server you control, place these in server.cfg:

sv_auto_adjust_bot_difficulty 0

bot_difficulty 1

bot_quota 10

bot_quota_mode fill

Changes during a live match usually need a round restart:

mp_restartgame 1

On servers you don’t own, you’ll need admin/RCON rights; otherwise your client commands won’t override server cvars.


Troubleshooting (read this if your changes don’t stick)

bot_difficulty shows 3 but bots feel easy.”
Restart the round or re-add bots (mp_restartgame 1 or bot_kick; bot_add_t; bot_add_ct). Difficulty applies on (re)spawn.

“Difficulty keeps drifting during play.”
Add sv_auto_adjust_bot_difficulty 0 before or after setting difficulty.

“Command not found / blocked.”
You might be on a community server without permissions. Test in an offline Practice lobby or ask for admin/RCON.

“Do I need sv_cheats 1?”
No for bot_difficulty, bot_quota, etc. Some training helpers like bot_mimic or certain freeze/debug commands do require it—keep those separate from your difficulty setup.

“What about 4 or 5?”
Stick to 0–3 for bot_difficulty. If you’re experimenting with custom_bot_difficulty, treat it as a different system and don’t expect bot_difficulty behavior from it.


Bonus: helpful bot commands for practice sessions

Use sparingly (some require cheats for sandbox-style drills):

bot_stop 1             // freeze bots (0 = unfreeze)

bot_defer_to_human_goals 1   // let you drive round objectives

bot_dont_shoot 1       // safe dry-runs

mp_respawn_on_death_t 1   // continuous reps (T)

mp_respawn_on_death_ct 1  // continuous reps (CT)

mp_roundtime_defuse 60    // long rounds for utility practice

Previous Article

How to Set Up a CS2 Dedicated Server? [Updated 2025]

Next Article

CS2 Rubberbanding Fix: (All Causes)

Write a Comment

Leave a Comment

Your email address will not be published. Required fields are marked *