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.
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 serversbhop_maps — bunny hop serversde_maps — bomb defusal (competitive or casual)aim_maps — aim traininggg_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.