Counter-Strike 1.6 Updated April 27, 2026

How to Set Up FastDL for Custom Maps on Your CS 1.6 Server

Custom maps download at a crawl through the game protocol. FastDL routes downloads through HTTP so players get maps in seconds instead of minutes.

Counter-Strike 1.6CS 1.6FastDLcustom mapsdownloadssv_downloadurlHTTP

Why FastDL

Without FastDL, when a player connects to your server with a map they don't have, CS 1.6 downloads it through the game's UDP protocol. The speed cap is approximately 30 KB/s. A 5 MB custom map takes nearly three minutes. Most players disconnect before it finishes.

FastDL replaces this with a plain HTTP download. Players download from your web server at full speed — the same 5 MB map downloads in a few seconds on any reasonable connection.

What You Need

  • A web server (Apache, nginx, or a CDN) that can serve static files
  • The same file structure as your cstrike/ directory mirrored under a web-accessible path

You don't need the web server on the same machine as the game server. A cheap object storage bucket (S3, R2, Backblaze B2 with a public bucket) works perfectly.

Configure the Server

In cstrike/server.cfg:

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

sv_downloadurl tells the client where to fetch files from via HTTP.

sv_allowdownload 1 keeps the fallback direct download active. If the HTTP server is unreachable, clients fall back to the slow UDP method. Keep this on.

Mirror the Directory Structure

The URL you set must serve files with paths matching your cstrike/ directory. If you set sv_downloadurl "http://yourcdn.example.com/cstrike/", then:

File on game server URL client fetches
cstrike/maps/de_custom.bsp http://yourcdn.example.com/cstrike/maps/de_custom.bsp
cstrike/sound/custom_sound.wav http://yourcdn.example.com/cstrike/sound/custom_sound.wav
cstrike/models/player/custom/custom.mdl http://yourcdn.example.com/cstrike/models/player/custom/custom.mdl

Only put files on the FastDL server that clients actually need to download — you don't need to mirror the entire cstrike/ directory, just the custom content.

Upload Maps

For each custom map, at minimum upload the .bsp file:

maps/de_custom.bsp

If the map uses custom sounds, models, or sprites, upload those too. Without them, clients connect but see the wrong models or hear silence.

.res Files

A .res file tells the client exactly what to download before joining the server. Without it, clients only download the .bsp — they miss custom sounds and models until they're already in the game.

Create cstrike/maps/de_custom.res alongside the .bsp. It's a plain text file listing all required files:

maps/de_custom.bsp
sound/custom/custom_ambient.wav
models/props/barrel/barrel.mdl
sprites/custom_scope.spr

No .res file = the map loads but custom assets are missing. Players see the pink "missing texture" checkerboard or hear nothing where custom sounds should play.

Generate .res files automatically with the ResGen tool — it opens the .bsp and extracts its file dependency list.

Don't Compress Files

Do not gzip or otherwise compress files on the FastDL server. HLDS handles its own compression for direct UDP downloads, but for HTTP downloads, clients expect raw uncompressed files. Compressed files cause broken downloads or client crashes.

Test It

  1. Delete the custom map from your CS 1.6 client's cstrike/maps/ folder.
  2. Connect to your server.
  3. Watch the download progress bar — it should show HTTP download speed, not the 30 KB/s crawl of direct download.

You can also check your web server's access log. You should see the client's IP hitting maps/de_custom.bsp via GET request.