Garry's Mod Updated April 27, 2026

Setting Up FastDL for Faster Content Downloads

How to configure a web server as a FastDL host so clients download maps and content at full speed instead of the built-in 20 KB/s limit.

Garry's ModFastDLContentPerformance

Why FastDL Matters

GMod's built-in download system (sv_allowdownload) throttles transfers to approximately 20 KB/s per file. A typical custom map is 50–300 MB. At 20 KB/s, a 100 MB map takes over 80 minutes to download — players will never wait that long.

FastDL replaces the built-in transfer with direct HTTP downloads from a web server. Clients download at their full connection speed.

How FastDL Works

  1. You mirror your server's content to a web server
  2. You set sv_downloadurl in server.cfg to point at that web server
  3. When a client connects and needs a file, GMod redirects the download request to your web server
  4. The client downloads at HTTP speed instead of through the game protocol

FastDL delivers: maps, materials, models, sounds, and resource files. It does not deliver Lua files — those are handled by GMod's own Lua transfer system regardless of FastDL.

Directory Structure

Your web server must mirror the garrysmod/ directory structure. The paths that matter most:

https://yourcdn.example.com/
└── garrysmod/
    ├── maps/          ← Highest priority; largest files
    ├── materials/
    ├── models/
    ├── sounds/
    └── resource/

If your sv_downloadurl is https://yourcdn.example.com/, then a map file should be accessible at:

https://yourcdn.example.com/garrysmod/maps/rp_downtown_v4c_v2.bsp

server.cfg Settings

sv_allowdownload 1
sv_allowupload 1
sv_downloadurl "https://yourcdn.example.com/"

The trailing slash on sv_downloadurl is required. Without it the URL concatenation breaks and clients fall back to the slow built-in download.

File Compression (bzip2)

Clients request .bz2 compressed versions first and fall back to uncompressed if not found. Compressing files significantly reduces transfer size:

# Compress a single map
bzip2 -k rp_downtown_v4c_v2.bsp

# Compress all maps in a directory
for f in *.bsp; do bzip2 -k "$f"; done

The -k flag keeps the original file alongside the compressed .bz2 version. Upload both to your web server:

garrysmod/maps/rp_downtown_v4c_v2.bsp
garrysmod/maps/rp_downtown_v4c_v2.bsp.bz2

BSP maps typically compress to 40–60% of their original size.

What to Upload

Prioritize in this order:

  1. Maps — Largest files; highest impact on join time
  2. Models — Custom player models, props, vehicles
  3. Materials — Textures, overlays
  4. Sounds — Music, ambient, custom weapon sounds
  5. Resource files — Spray logos, fonts

Do not upload files that are already in the base game or CSS — clients already have those. Only upload content you added to the server.

Hosting Options

  • CDN storage buckets (R2, S3, Backblaze B2): Low cost, high availability, good for static files
  • Nginx/Apache on a VPS: Full control; set up directory browsing at the content path
  • Existing web hosting: Works fine if directory listing is enabled at the correct path

Ensure your web server has directory listing enabled or that it returns 200 OK for direct file requests. A 403 Forbidden on directory access is fine as long as individual file requests return 200.

Verifying FastDL is Working

Connect to your server from a client with a map the client does not have cached. Watch the download progress bar — if speeds exceed 1 MB/s, FastDL is working. If you see speeds around 20 KB/s, the client is falling back to the built-in download.

Check the server console for:

Client connected from <IP>
Sending file: garrysmod/maps/rp_downtown_v4c_v2.bsp

If you see this, the client is downloading through the game — not FastDL. Double-check your sv_downloadurl value and confirm the file exists at the expected URL by testing it in a browser.