How to Set Up a Map Rotation on a CS2 Server (Map Groups)

Make a CS2 server cycle through your own map list with a map group in gamemodes_server.txt, end of match voting, or a Workshop collection.

Updated Oct 7, 2026 · 5 min read

On this page

To set up a map rotation on a CS2 server, define a map group with your maps in game/csgo/gamemodes_server.txt, start the server with +mapgroup <your group>, and let the match end change to the next map or a vote. For Workshop maps, the simplest rotation is a Workshop collection loaded with host_workshop_collection, which becomes the map group automatically. This guide covers both, plus the cvars that decide what happens at the end of each match.

How CS2 picks the next map

CS2 does not use the old mapcycle.txt file the way older Source games did. The rotation comes from a map group: a named list of maps tied to a game mode. When a match ends, the server either:

  • shows the end of match vote with maps from the group, or
  • moves to the next map in the group on its own, or
  • restarts the same map,

depending on the cvars below. Valve's own groups (like mg_active) cover the Active Duty pool. To use your own list, you make your own group.

Step 1: Create gamemodes_server.txt

Valve reads custom game mode and map group definitions from game/csgo/gamemodes_server.txt. If the file does not exist, create it. Here is a complete example with one group for competitive:

"GameModes_Server.txt"
{
	"gameTypes"
	{
		"classic"
		{
			"gameModes"
			{
				"competitive"
				{
					"mapgroupsMP"
					{
						"mg_ourpool"	""
					}
				}
			}
		}
	}

	"mapgroups"
	{
		"mg_ourpool"
		{
			"name"	"mg_ourpool"
			"maps"
			{
				"de_dust2"	""
				"de_mirage"	""
				"de_inferno"	""
				"de_nuke"	""
				"de_ancient"	""
				"de_anubis"	""
			}
		}
	}
}

Rules that trip people up:

  • Every { needs a matching }. A single missing brace makes the server ignore the whole file.
  • Map names are the file names without .vpk, all lowercase.
  • Group names start with mg_ by convention and must match exactly where you use them.
  • For casual, wingman or deathmatch, list the group under that mode (casual, scrimcomp2v2, deathmatch under gungame) instead of competitive.

Step 2: Start the server with the group

Add the group to the start line, together with the mode and a first map from the group:

cs2 -dedicated +game_type 0 +game_mode 1 +mapgroup mg_ourpool +map de_mirage +sv_setsteamaccount YOURTOKEN

game_type 0 and game_mode 1 are classic competitive. Other modes need their own pair, listed in the CS2 server commands guide. The first map should be in the group, or the rotation starts from the wrong list.

A CS2 round on Mirage

Step 3: Decide what happens when a match ends

Put these in game/csgo/cfg/server.cfg so they apply on every map:

mp_match_end_changelevel 1
mp_endmatch_votenextmap 1
mp_endmatch_votenextleveltime 20
mp_match_end_restart 0
Cvar What it does
mp_endmatch_votenextmap 1 Shows a vote at the end of the match with maps from the group
mp_endmatch_votenextleveltime Seconds players get to vote
mp_match_end_changelevel 1 Changes to the next map when the match ends, even with no vote
mp_match_end_restart 0 Do not restart the same map

For a fixed order with no voting, set mp_endmatch_votenextmap 0 and keep mp_match_end_changelevel 1. For a vote, keep both at 1.

How long a match lasts before the change is set by mp_maxrounds (competitive) or mp_timelimit (casual and deathmatch). A deathmatch rotation with mp_timelimit 10 gives a new map every 10 minutes.

Rotating Workshop maps with a collection

Custom maps from the Workshop do not need gamemodes_server.txt. Make a Workshop collection with the maps you want (or use someone else's), copy its ID from the collection URL, and start the server with it:

cs2 -dedicated +game_type 0 +game_mode 0 +host_workshop_collection 1234567890 +sv_setsteamaccount YOURTOKEN

The server downloads every map in the collection and uses the collection as its map group, so end of match voting and mp_match_end_changelevel work the same way. Add or remove maps by editing the collection and restarting the server. The guide on playing Workshop maps on a server covers single maps and download problems.

Changing maps by hand

Admins can always jump the rotation from the console or RCON:

changelevel de_nuke
host_workshop_map <workshop map id>

The rotation continues from there on the next match end. If you use CounterStrikeSharp, map voting plugins such as a rock the vote plugin let players start a vote mid match. The CounterStrikeSharp plugins guide shows how to install them.

Common problems

  • The server stays on the same map. mp_match_end_restart 1 is set somewhere, or mp_match_end_changelevel is 0. Check server.cfg and mode configs.
  • The vote shows Valve's maps, not yours. The server is not using your group. Check the +mapgroup name matches the file, and that the group is listed under the mode you started.
  • The file is ignored completely. A syntax error, usually a missing brace or quote. Compare it carefully against the example.
  • A map in the list will not load. Typo in the name, or a Workshop map listed by name instead of being loaded through a collection.

Easier on a hosted server

On a GamezServers CS2 server, the start map, game type and game mode are settings in the panel, gamemodes_server.txt and server.cfg are in the file manager, and the live console runs changelevel and the vote cvars without RCON tools. To set one up for your team or community, see the CS2 game page.

A CS2 team holding a site

FAQ

Does CS2 use mapcycle.txt?

Not for rotation in the way older Source games did. Use a map group in gamemodes_server.txt with +mapgroup, or a Workshop collection.

How do I enable map voting at the end of a CS2 match?

Set mp_endmatch_votenextmap 1 in server.cfg. The vote uses maps from the current map group.

Can I mix Valve maps and Workshop maps in one rotation?

The easiest way is a Workshop collection. Valve's official maps are not Workshop items, so a rotation that mixes both usually relies on a map voting plugin.

Where do I put gamemodes_server.txt?

In game/csgo/, next to the cfg folder. Restart the server after editing it.

Skip the setup. Your own CS2 server.

$4.99USD first month

Then $9.99/mo. Just trying it? $2.50 for 3 days

Keep reading