Counter-Strike: Source Updated April 27, 2026

How to Add Custom Maps to Your CSS Server

Add custom maps to your CSS server and configure FastDL so clients download them quickly via HTTP instead of through the game.

Counter-Strike: SourceCSScustom mapsFastDLsv_downloadurlBSPGameBanana

Custom Maps in CSS

CSS distributes maps as .bsp files — no Steam Workshop server subscriptions, no automatic client sync like you might expect from CS2. If you want players on your server to have a custom map, you put the .bsp on the server, and clients download it. The question is how fast they download it.

Placing Map Files on the Server

All map files go in cstrike/maps/:

cstrike/maps/surf_kitsune.bsp
cstrike/maps/surf_kitsune.nav

The .nav file is the bot navigation mesh — not all custom maps include one, but if they do, include it. After placing the file, add the map name (without extension) to mapcycle.txt and maplist.txt:

surf_kitsune

Without FastDL — The Slow Way

Without any configuration, clients download custom maps through the game's built-in transfer at around 30 KB/s. A 50 MB map takes nearly 30 minutes. Most players will disconnect rather than wait. This is only acceptable for tiny maps or private servers where you know everyone has the map already.

FastDL — The Right Way

FastDL lets clients download files at full HTTP speed from a web server you control. Set this in server.cfg:

sv_downloadurl "http://yourcdn.example.com/cstrike/"

The URL must point to the root of a directory that mirrors your cstrike/ directory structure exactly. When a client needs cstrike/maps/surf_kitsune.bsp, it fetches:

http://yourcdn.example.com/cstrike/maps/surf_kitsune.bsp

Your FastDL web server must serve these paths with the correct directory layout:

/var/www/fastdl/cstrike/maps/surf_kitsune.bsp
/var/www/fastdl/cstrike/maps/surf_kitsune.nav
/var/www/fastdl/cstrike/sound/custom_sound.mp3
/var/www/fastdl/cstrike/models/custom_model.mdl
/var/www/fastdl/cstrike/materials/custom_material.vtf

Any HTTP server (nginx, Apache, Caddy) or a CDN (Cloudflare R2, Backblaze B2) works as the FastDL host.

.res Files

For maps that use custom sounds, models, or materials, create a mapname.res file alongside the .bsp:

cstrike/maps/surf_kitsune.res

The .res file lists all extra resources clients should download before connecting:

models/custom/surfboard.mdl
materials/custom/ramp_texture.vtf
materials/custom/ramp_texture.vmt
sound/ambient/surf_ambient.mp3

One resource per line, path relative to cstrike/. Without the .res file, clients may connect but see missing models or hear no custom sounds.

Where to Find Custom Maps

GameBanana (gamebanana.com) is the primary CSS map repository. Filter by game: Counter-Strike: Source. Each map page includes screenshots, download links, and often a list of required custom assets.

Categories to browse:

  • surf_ maps — surf servers
  • bhop_ maps — bunny hop servers
  • de_ maps — bomb defusal (competitive or casual)
  • aim_ maps — aim training
  • gg_ maps — gun game

Keeping FastDL in Sync

When you add or update a map, copy the new files to your FastDL server. If the .bsp on the FastDL server doesn't match the one in cstrike/maps/, clients will get a Bad CRC error on download. Always update both locations from the same source file.