How to Make a CS2 Surf Server (Cvars, Maps and Timer, 2026)
Make a CS2 surf server: the surf cvars (sv_airaccelerate 150 and more), Workshop surf maps, and a SharpTimer setup with Metamod and CounterStrikeSharp.
Updated Oct 1, 2026 · 7 min read
On this page
To make a CS2 surf server, set sv_airaccelerate 150, turn on sv_enablebunnyhopping 1 and sv_autobunnyhopping 1, remove stamina and fall damage, make players respawn instantly, then load surf maps from the Steam Workshop with host_workshop_map. For timers, zones and records, add Metamod, CounterStrikeSharp and the SharpTimer plugin. The cvars alone are enough to surf with friends tonight. The plugin is what turns it into a real surf server.
What a surf server needs
| Layer | Required? | What it gives you |
|---|---|---|
| Surf cvars | Yes | Air strafing that works on ramps, no stamina, no fall damage |
| Workshop surf maps | Yes | The maps. None ship with CS2 |
| Metamod:Source and CounterStrikeSharp | For plugins | Plugin loader and framework |
| A timer plugin (SharpTimer) | Recommended | Start and end zones, times, records, stages, replays |
| MovementUnlocker and RampBugFix | Recommended | Smoother movement and fewer ramp glitches |
Step 1: The surf cvars
Create game/csgo/cfg/surf.cfg:
// Movement
sv_airaccelerate 150
sv_accelerate 10
sv_enablebunnyhopping 1
sv_autobunnyhopping 1
sv_staminamax 0
sv_staminajumpcost 0
sv_staminalandcost 0
sv_falldamage_scale 0
sv_maxvelocity 3500
sv_jump_precision_enable 0
sv_subtick_movement_view_angles 0
// Rounds
mp_roundtime 60
mp_roundtime_defuse 60
mp_roundtime_hostage 60
mp_timelimit 30
mp_maxrounds 0
mp_freezetime 0
mp_warmuptime 0
mp_ignore_round_win_conditions 1
mp_respawn_on_death_t 1
mp_respawn_on_death_ct 1
mp_round_restart_delay 0
mp_buytime 0
mp_give_player_c4 0
// Players
mp_solid_teammates 0
mp_friendlyfire 0
mp_autoteambalance 0
mp_limitteams 0
mp_autokick 0
sv_alltalk 1
sv_deadtalk 1
bot_quota 0
Load it with exec surf, then change map. To apply it on every map, add exec surf to the end of server.cfg.
What the important ones do, with CS2's defaults:
| Cvar | CS2 default | Surf value | Why |
|---|---|---|---|
sv_airaccelerate |
12 | 150 | How fast you gain speed in the air. 12 makes ramps unsurfable |
sv_accelerate |
5.5 | 10 | Ground acceleration |
sv_enablebunnyhopping |
false | 1 | Lets speed go above running speed |
sv_autobunnyhopping |
false | 1 | Holding jump re-jumps on landing |
sv_staminamax |
80 | 0 | Removes the slowdown from jumping and landing |
sv_staminajumpcost |
0.08 | 0 | No stamina penalty on jump |
sv_staminalandcost |
0.05 | 0 | No stamina penalty on landing |
sv_falldamage_scale |
1 | 0 | No fall damage |
sv_maxvelocity |
3500 | 3500 | Speed cap per axis. Classic surf maps are built for 3500 |
mp_ignore_round_win_conditions |
false | 1 | Rounds do not end when one team is "dead" |
150 airaccelerate is the classic value most surf maps are tuned for. Some servers run 100 for a heavier feel or 1000 for a "fun" server where everything is easy, but 150 is where to start.
A note on sv_maxvelocity: SharpTimer's example surf config raises it to 9876 for higher top speeds. Leave it at 3500 unless you know a map wants more. Most older maps were designed around 3500, and going higher lets players skip parts of them.
Step 2: Set the game mode
Surf runs fine in casual mode, which keeps the rules simple and lets the cvars above do the work. Set it before loading your first surf map:
game_type 0; game_mode 0
The mode applies on the next map load, which is the Workshop map in the next step. Make sure no competitive config is setting rounds or bots back after your surf.cfg runs.
Step 3: Load Workshop surf maps
CS2 has no surf maps built in. They all come from the Steam Workshop:
- Search the CS2 Workshop for "surf". Good starter maps to look for are
surf_beginner,surf_utopia_njvandsurf_kitsune, all tier 1. - Open the map's page. The ID is the number at the end of the URL, after
?id=. - In the server console run:
host_workshop_map <id>
The server downloads the map and switches to it, and players get it automatically when they connect.
For a rotation, add your maps to a Workshop collection and run host_workshop_collection <collection id>. Then ds_workshop_changelevel surf_kitsune switches between maps the server already has. More on rotations in how to play CS2 Workshop maps on a server.
Surf maps are graded by tier, from 1 (beginner) up to 6 or 8 depending on the community. For a new server with mixed players, keep most of your rotation at tiers 1 to 3.
Step 4: Install Metamod and CounterStrikeSharp
Timers need the plugin stack:
- Metamod:Source 2.x from sourcemm.net. Upload
addonstogame/csgo/, then addGame csgo/addons/metamodunder theGame_LowViolence csgo_lvline ingame/csgo/gameinfo.gi. - CounterStrikeSharp, the "with runtime" build, from its GitHub releases. Upload its
addonsfolder togame/csgo/too. - Restart and run
meta listto confirm both load.
The step by step version, including exactly where the gameinfo.gi line goes, is in our CS2 retakes setup, which uses the same stack.
Step 5: Install SharpTimer
SharpTimer is the most used surf, bhop and KZ timer for CS2 on CounterStrikeSharp. The original author stopped at 0.2.6 and the community fork, poor-sharptimer, is the maintained one.
- Install its required dependency, cs2-tags, the same way as any CounterStrikeSharp plugin.
- Download the latest SharpTimer release and unzip it into
game/csgo/. - Optional but recommended for surf: MovementUnlocker (a Metamod plugin that removes the ground speed cap) and RampBugFix (fewer cases of losing all speed on a ramp seam). Note that MovementUnlocker conflicts with CS2Fixes, so run one or the other.
- Restart the server and load a surf map.
The main settings are in cfg/SharpTimer/config.cfg. Times save to JSON files by default, so you do not need a database for a small server. For a bigger community, it supports MySQL or Postgres with sharptimer_mysql_enabled or sharptimer_postgres_enabled.
SharpTimer also runs per map prefix configs from cfg/SharpTimer/MapData/MapExecs/. It ships an example.surf_.cfg with surf cvars, so you can keep surf settings there and they load only on maps starting with surf_. Handy if you also run bhop or KZ maps with different movement.
SharpTimer uses the start and end zones built into the map when the map maker included them. For maps without them, it can use zone files in cfg/SharpTimer/MapData/, one JSON per map, and a few ship with the plugin (surf_kitsune among them). If the timer never starts on a map, it has neither, so test each map before you add it to your rotation.
The other big option is the CS2Surf Timer project, an open source timer built for surf only. It needs a MySQL database, so it suits a larger community with its own database more than a weekend server.
Common surf server problems
| Problem | Fix |
|---|---|
| Players slide off ramps or cannot gain speed | sv_airaccelerate is still 12. Check the value after a map change |
| Rounds keep ending | Set mp_ignore_round_win_conditions 1 and long round times |
| Settings reset every map | The game mode config runs after yours. Put exec surf at the end of server.cfg |
| Players stop dead on ramp seams | Install RampBugFix. Some maps also have this bug built in |
| Timer does not start | The map has no timer zones and no zone file. Pick another map or add zone data |
| Plugins stop loading after a CS2 update | The update replaced gameinfo.gi. Add the Metamod line back |
Running a surf server on GamezServers
Everything above works through the Files tab or SFTP: upload the plugins, edit gameinfo.gi and drop surf.cfg in game/csgo/cfg/. Use the Workshop map button to load surf maps by ID and Run a config to exec surf. Surf is light on CPU but players love a full server, and our 8 GB plan is sized for a full 32 player lobby. See CS2 server hosting for plans.
FAQ
What is the best sv_airaccelerate for surf?
- It is the value classic surf maps were built around. Lower makes strafing feel heavy and higher makes it too easy to gain speed.
Do I need plugins to surf in CS2?
No. The cvars are enough to surf on Workshop maps. Plugins add the timer, zones, records and quality of life features that public surf servers have.
Why does surf feel different in CS2 than in CS:GO?
CS2's movement and sub-tick input changed how air strafing feels, and some ramps act differently on the new engine. Settings like sv_subtick_movement_view_angles 0 and plugins like RampBugFix are there to bring it closer.
How do I add surf maps to my CS2 server?
Find the map on the Steam Workshop, copy the number after ?id= in its URL, and run host_workshop_map with that number. Players download it automatically.
Is surf allowed on community servers?
Yes. Surf is a long standing community mode. Valve just requires a Game Server Login Token like any other public server.
Skip the setup. Your own CS2 server.
Then $9.99/mo. Just trying it? $2.50 for 3 days