How to Make a Private Match in CS2

A closed server for you, your friends and as many bots as you want

TL;DR

Put your friends in your party first, then go Play → Practice, pick a map and press Go. That launches a local server nobody else can join. Add bots from the console with bot_add_t / bot_add_ct, and clear them with bot_kick. None of the bot commands need sv_cheats 1.

CS2 has no menu item called "private match". What it has instead is a practice server — a listen server that runs on your own machine, with no matchmaking, no strangers and no rank attached. That is the private match, and everything people want from one (friends only, bots on demand, rules you control) is built on top of it.

The whole thing takes about a minute. The only step people get wrong is the order: your party has to exist before you load the map.

Step 1: Turn on the console

Almost everything below is a console command, so switch it on first. Settings → Game → Enable Developer Console → Yes. The default key is the tilde ~, and you can rebind it in the same place. Our console guide covers the non-US keyboard cases where ~ does nothing.

Step 2: Build the party before you start

This is the part that determines whether the match is actually private, and it happens in the main menu, not in-game.

  1. Invite your friends from the party panel in the main menu, or through the Steam overlay (Shift+Tab → right-click a friend → Invite to Game).
  2. Keep the party closed. An open party can be joined by any friend who spots it; a closed one needs an invite from you. If you want strictly the people you named, leave it closed.
  3. Wait for them to actually be in the party before you touch the Play menu. Anyone who joins after the map has loaded has to be invited into the running server separately.

Step 3: Start the server

Two routes, and they end up in the same place — a server you host and control.

  • Play → Practice. Choose the offline practice option, pick any official map, press Go. Your whole party loads in with you.
  • Play → Workshop Maps. Same thing but on a subscribed community map — aim maps, 1v1 arenas, retake maps, surf. Friends do not need to be subscribed; CS2 pulls the map down when they join. There is a curated list on our workshop maps page.

There is also a console route: map de_dust2 loads any map on a local server immediately, and changelevel de_mirage swaps maps without tearing the server down. Handy once you are already in, less handy for getting a party in with you.

Step 4: Add and remove bots

This is where a private match becomes useful — you decide exactly how many bodies are on each side. All of the commands below are ordinary server commands, not cheat-protected, so they work without sv_cheats 1.

CommandWhat it does
bot_addAdds one bot; the game picks the team
bot_add_tAdds one bot to the Terrorist side
bot_add_ctAdds one bot to the Counter-Terrorist side
bot_kickKicks bots — on its own it clears all of them
bot_quotaTotal number of bots the server maintains
bot_quota_modenormal, fill or match — how the quota is applied
bot_difficultySkill of bots that join next: 0 easy, 1 normal, 2 hard, 3 expert
bot_chatteroff, radio, minimal or normal

bot_add_t and bot_add_ct add one bot per execution, so run them once for each bot you want. They also accept optional arguments in the order <type> <difficulty> <name>, which is how you get a named expert bot rather than a random one.

bot_kick takes filters too — bot_kick t, bot_kick ct, or a specific bot name. The classic frustration is bots reappearing a second later: that is the quota putting them back, so pair it with bot_quota 0. The full breakdown, including the fill-mode trap, is in our kick bots guide.

One ordering detail worth knowing: bot_difficulty governs bots that join after you set it. Changing it does not retrain the bots already on the server — kick and re-add them if you want the new level to stick.

Step 5: Set the rules

A private match defaults to normal competitive pacing, which is rarely what you want when five people are messing about. These are the settings worth changing, and none of them need sv_cheats:

CommandEffect
mp_warmup_endEnds warmup immediately so the match actually starts
mp_freezetimeSeconds players are frozen at round start
mp_roundtimeRound length in minutes
mp_roundtime_defuseRound length on bomb maps; at 0 it falls back to mp_roundtime
mp_startmoneyMoney everyone gets on reset
mp_maxmoneyMoney ceiling — raise this before raising start money
mp_buy_anywhereBuy outside the buy zone: 1 both teams, 2 T only, 3 CT only
mp_autoteambalance 0Stops the server shuffling you off a lopsided team
mp_limitteams 0Removes the cap on how uneven the teams can be
mp_teammates_are_enemies 1Free-for-all — everyone is a valid target
mp_restartgame 1Restarts in one second so the changes take hold

The last two matter together. mp_autoteambalance 0 and mp_limitteams 0 are what let you run something silly like a 1v5, and most rule changes only visibly apply after mp_restartgame 1. If you want a full practice setup rather than a handful of lines, our practice config generator writes the file for you.

When you do need sv_cheats 1

Cheat-flagged commands are refused until the host runs sv_cheats 1. On your own server that is a switch, not a hack — it is how practice tools are gated. The ones you are most likely to want:

  • noclip and god — fly through the map, and stop dying while you learn a lineup.
  • sv_infinite_ammo — your active weapon never runs dry.
  • bot_stop 1 — freezes bots where they stand, which is what you want for spray or lineup targets.
  • bot_place — drops a bot wherever you are aiming.
  • endround — ends the current round on demand.

Every one of these is cheat-gated, so none of them work in matchmaking, and turning sv_cheats on has no effect on your account. Full syntax and defaults for all of them live in the CS2 command database.

Common problems

  • Friends cannot join. They almost certainly were not in the party when you pressed Go. Return to the menu, invite them, start again.
  • Bots keep coming back after bot_kick. The quota is refilling the server — set bot_quota 0 too.
  • Commands do nothing. Only the host can change server settings. If you joined someone else's practice server, the commands are theirs to run, not yours.
  • Stuck in warmup. mp_warmup_end. If it keeps returning, check mp_warmup_pausetimer is 0.
  • Rules did not apply. Most of them wait for a fresh round — mp_restartgame 1.

If you want a 1v1 instead

A duel is the same private server with a shorter command list and usually a purpose-built map. We have that written up separately in the CS2 1v1 guide, including the free-for-all line that stops you both spawning on the same team.

Frequently Asked Questions

How do you make a private match in CS2?
Invite the people you want into your party first, then open Play, choose Practice, pick a map and press Go. That starts a local server that only your party is on — there is no queue and nobody else can join.
How do you add bots to a CS2 private match?
Open the console and use bot_add_t or bot_add_ct, once per bot, to put a bot on a specific side. bot_add lets the game choose the team. None of these are cheat-protected, so you do not need sv_cheats 1 for them.
How do you remove bots from a private match?
bot_kick removes bots — bot_kick alone clears them all, and bot_kick t or bot_kick ct clears one side. If they come straight back, the bot quota is refilling them: set bot_quota 0 as well.
Can friends join an offline practice server?
Yes, as long as they are in your party before you press Go. A practice server is a listen server running on your machine, and your party loads into it with you. Someone joining the party afterwards has to be invited again once the map is running.
How do you make bots harder in CS2?
bot_difficulty sets the skill of bots that join afterwards — 0 is easy, 1 normal, 2 hard and 3 expert. Change it before you add the bots, or kick and re-add them so the new value applies.
Do you need sv_cheats 1 for a private match?
Not for the basics. Adding bots, setting round time, freeze time or starting money all work without it. sv_cheats 1 is only needed for the cheat-flagged tools such as noclip, god, sv_infinite_ammo, bot_stop and bot_place.
JL

Director at Bettor Media. CS player since 2013 with experience in skin trading, marketplace analysis, and competitive play.