Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
Skip to content
World desk10 min

How to Force Addon Downloads on a Garry’s Mod Server

Learn how to force Garry’s Mod clients to download Workshop addons, FastDL files, or ServerDL resources, and fix missing textures, models, and sounds.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To make players download Garry’s Mod addons before they join, use WorkshopDL for Steam Workshop content, FastDL for files you host over HTTP, and ServerDL only as a last resort. For the usual Workshop setup, create garrysmod/lua/autorun/server/workshop.lua and add one resource.AddWorkshop("WORKSHOP_ID") line for each addon. This queues the item for clients; it does not install the addon on your dedicated server.

Choose the download system that matches your files

Garry’s Mod has three relevant transfer paths. WorkshopDL retrieves published Workshop items, FastDL serves selected files from a separate web server, and ServerDL sends files directly from the game server. The right choice depends on where the content lives and how much control you need.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Method File source Setup Transfer behavior Best for Main drawbacks
WorkshopDL Steam Workshop Low: add Workshop IDs in serverside Lua or mount a collection at startup Clients download the Workshop item before joining; Workshop updates are handled through Steam Public Workshop addons containing models, materials, sounds and other client assets Requires Workshop-published content; mounting an addon does not automatically mark every client file for download
FastDL Your HTTP server Moderate: configure sv_downloadurl, mirror files and register resources Clients request compressed .bz2 files first, then the uncompressed path if necessary Private files, custom content and assets that are not on the Workshop You must keep the HTTP mirror synchronized and preserve exact virtual paths
ServerDL The Garry’s Mod server itself Low: enable downloads and register resources Direct transfer with an official 64 KB/s limit Small emergency transfers or temporary testing Slow, file-by-file, and the official guide warns that download requests can be abused by modified clients

For a Workshop addon, WorkshopDL is normally the simplest and most reliable route. Use FastDL when you control the files or need to distribute content that is not published on the Workshop. Avoid ServerDL on a production server unless there is no practical alternative.

Force Workshop addon downloads with resource.AddWorkshop

1. Find the numeric Workshop ID

Open the addon’s Steam Workshop page and copy the number in its URL. Use the item ID, not the collection ID, when calling resource.AddWorkshop. A collection is a container of items and cannot be passed to this function as a substitute for an addon ID.

#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter | 4Pack Type C Female to A Male Cable Converter for Apple Duo 17 16 15 14 Plus,iWatch Watch 12 11 10,iPad 9 8 Air,Airpods 5 4
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.

2. Create the serverside Lua file

On the dedicated server, create this path if it does not already exist:

garrysmod/lua/autorun/server/workshop.lua

The file must be in the serverside autorun/server directory. A file placed in a client-only folder will not register the resources for joining players.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

3. Add one line for every addon

Call the function once per Workshop item:

resource.AddWorkshop("150455514")
resource.AddWorkshop("104606562")

The function accepts a single Workshop item ID. Keep IDs as strings, including the quotation marks, and put each call on its own line. You can add comments to identify items, but do not add an addons/ folder path or a Workshop collection URL.

4. Restart or change the map

Restart the server or change level after saving the file. Watch the server console during startup and map changes for Lua syntax errors or invalid IDs. Have a test client join from a clean installation so previously cached files do not hide a missing resource declaration.

What this function does—and does not do

Facepunch documents the function as: “Adds a workshop addon for the client to download before entering the server.” It announces the item to connecting clients; it does not download and install that addon into the dedicated server’s own garrysmod/addons directory. The server still needs the addon mounted or otherwise available when server-side code depends on it.

resource.AddWorkshop is intended for client-visible custom files such as models, materials and sounds. An item that contains only Lua is not fixed by adding its Workshop ID here. Lua is transferred through a separate system, so diagnose Lua delivery independently from missing textures or models.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Sale
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter | USB C Dongle with 90W Max Power Delivery, 3×5Gbps USB A Data Ports, for MacBook, Dell, and More (Charger Not Included)
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.

Mount a Workshop collection when the server starts

A dedicated server can download and mount a public or unlisted Workshop collection at startup. Start the server with the collection ID in the command line:

srcds.exe +host_workshop_collection COLLECTION_ID +gamemode sandbox +map gm_construct

Replace COLLECTION_ID with the numeric collection identifier. Do not put an individual addon ID in the +host_workshop_collection parameter. The collection must be visible as public or unlisted; a private collection cannot be fetched by the server.

At startup, the server downloads and mounts the collection’s addons. The current map and a Workshop-enabled gamemode can then mark their Workshop content for clients automatically when the content comes from that collection or declares a Workshop ID. Mounting remains a server-side operation, so verify the client download list rather than assuming every mounted file is advertised to players.

Use srcds_workshop_ids.txt on current builds

Server versions 2026.09.22 and newer support cfg/srcds_workshop_ids.txt for a documented key/value list of Workshop IDs. This is useful when you want startup configuration outside a Lua autorun file. Follow the key/value format documented for your server build, use addon IDs rather than collection IDs, and restart after changing the file so the startup mount is rebuilt.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Set up FastDL for files you host yourself

FastDL uses a separate HTTP server. The game server tells clients where the mirror is with sv_downloadurl, while serverside Lua declares which virtual paths should be downloaded.

1. Prepare an HTTP mirror

Create a web root that mirrors the file layout under the server’s garrysmod/ directory. If the game server has garrysmod/materials/my/material.vmt, the HTTP server must expose that file at the virtual path materials/my/material.vmt. Do not add an addons/<name>/ prefix merely because the source file came from an addon folder.

Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter | 85W Max PD, 2 USB 3.0 & 1 USBC Data Ports, SD/TF Card Reader, for Laptops/Mac and Other Type C Devices (Charger Not Included)
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.

The web server must allow clients to retrieve the files with ordinary HTTP requests. Check the exact capitalization and spelling of every directory and filename; a path that works on a case-insensitive local disk can fail on a case-sensitive web host.

2. Point the server at the mirror

Set sv_downloadurl to the URL corresponding to the HTTP root. Put the setting in the server configuration that loads for the relevant game mode, for example:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sv_downloadurl "http://downloads.example.net/gmod/"

Use your own domain and path. The URL should identify the mirror root, not a single file. Keep the trailing slash if your web server’s configuration expects directory URLs.

3. Register ordinary files with resource.AddFile

Add resource declarations in a serverside Lua file:

resource.AddFile("materials/my/material.vmt")
resource.AddFile("models/my/model.mdl")
resource.AddFile("sound/my/sound.wav")

Paths are virtual paths relative to garrysmod/. Never include the local addon directory prefix and never append .bz2 to the path in Lua. The server and HTTP mirror each need the uncompressed virtual path; compression is handled by the FastDL request process.

When related model and material files are present, resource.AddFile can include those related files automatically. This is convenient for a model’s supporting data, but inspect the resulting download list when an addon has unusual dependencies.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray | Data transfer & Fast charging for MacBook, iPhone 17/16/15, iPad, Samsung Galaxy, Apple Watch
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft

4. Use resource.AddSingleFile when precision matters

For a file that must be registered and nothing else, use:

resource.AddSingleFile("sound/my/sound.wav")

This is the precise option when automatic related-file inclusion would be undesirable or when you are diagnosing one missing asset. It does not replace the need to copy the file to the HTTP mirror.

5. Mirror compressed and uncompressed forms correctly

FastDL clients request file.bz2 first and fall back to the uncompressed file. You may provide a bzip2-compressed copy to reduce transfer size, but the path and filename must correspond exactly to the registered virtual file. If compression is absent or invalid, the uncompressed file must still be available.

6. Keep both servers synchronized

Whenever you add, remove or update a model, material, sound or map, update the HTTP mirror to match the game server. A resource declaration without a matching web file produces a 404; a stale mirror can make clients receive old content even though the dedicated server has been updated.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use ServerDL only as a fallback

ServerDL sends registered files from the game server itself. Enable it with:

sv_allowdownload 1

Then register files with resource.AddFile or resource.AddSingleFile, using the same virtual-path rules as FastDL. Do not set ServerDL up as a replacement for sv_downloadurl; the two methods have different sources.

Best Value
Sale
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display | 85W Max PD, 1 Powered USB-C 5Gbps & 2 Powered USB-A 3.0 5Gbps Data Ports, for MacBook Pro, MacBook Air, Dell and More (Black)
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.

Facepunch’s guide describes ServerDL as “Slow 64kb/s limit, file by file.” That limit makes large addon packs painful for new players. The same guide warns that allowing downloads can be abused by modified clients that spam file requests. For a public production server, WorkshopDL or an independently managed FastDL mirror is the safer operational choice.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Match the content type to the correct transfer path

Content Recommended handling Why
Workshop models, materials, sounds and other client files resource.AddWorkshop("ITEM_ID") Steam distributes the Workshop item before the client joins
Private or internally built models, materials and sounds resource.AddFile or resource.AddSingleFile plus FastDL The files are not available from the Workshop
Lua-only addon Use the appropriate Lua transfer and mounting method; do not rely on resource.AddWorkshop Workshop resource download calls target client files, while Lua follows a separate path
Small temporary file with no HTTP mirror ServerDL, with sv_allowdownload 1 It works directly from the game server but is slow and carries abuse risk

A single addon can contain both Lua and binary assets. Treat those portions separately: make sure the server mounts the Lua code and advertise the models, materials and sounds through WorkshopDL or a file resource system.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Diagnose missing downloads and textures

Purple-and-black textures or missing models

  • Confirm that the item is registered with resource.AddWorkshop if it is Workshop-hosted.
  • For non-Workshop content, verify every required path is registered with resource.AddFile or resource.AddSingleFile.
  • Check that related model, material and sound files exist on the game server and, for FastDL, at the same virtual paths on the HTTP mirror.
  • Test with a client that has not previously cached the addon.

The addon is mounted on the server, but clients receive nothing

Server mounting and client advertising are separate operations. Add the Workshop resource declaration for a Workshop item, or register the individual files for FastDL/ServerDL. Restart or change the map after editing the declaration so the new list is built.

resource.AddWorkshop appears to do nothing

  • Check that the number is an addon’s item ID, not a collection ID.
  • Make sure the Lua file is under garrysmod/lua/autorun/server/ and contains valid syntax.
  • Confirm the Workshop item actually contains client-visible files. A Lua-only item will not be repaired by this call.
  • Read the server console after a restart or map change for invalid IDs and script errors.

FastDL returns HTTP 404

  • Request the exact virtual URL manually and confirm the file exists under the HTTP root.
  • Remove any accidental addons/<name>/ prefix from the registered path.
  • Check filename case, directory spelling and the trailing path in sv_downloadurl.
  • Ensure the uncompressed file is available even if you expect clients to request a .bz2 copy first.

Downloads stop or some resources never arrive

All resource.Add* calls share an 8192-file limit. Count resources across every addon and autorun script, not just the file where you noticed the problem. Consolidate duplicate entries, remove unused declarations, and move large sets of Workshop content to WorkshopDL where appropriate.

A Workshop collection does not load

  • Verify that the collection is public or unlisted rather than private.
  • Use the collection ID with +host_workshop_collection; an individual addon ID will not work there.
  • Check startup logs to confirm the command-line parameter was actually passed to the dedicated server.
  • After changing collection membership, restart so the server downloads and mounts the revised set.

Validate a server before opening it to players

  1. Choose one transfer path for each asset and avoid registering the same large file repeatedly through multiple systems.
  2. Use a clean client profile or remove the relevant cached Workshop and downloaded files.
  3. Start the server, change the map if necessary, and inspect the console for Lua or Workshop errors.
  4. Join from the clean client and watch the download list. Confirm that models, materials and sounds arrive before the player spawns.
  5. Open each FastDL URL directly when testing HTTP delivery. A successful browser request should return the file, not an HTML error page.
  6. Test a second map or gamemode if the resources are declared conditionally; a list built only during one map may not cover another.
  7. After publishing an update, change the asset version or replace the mirrored file consistently so clients do not retain an outdated cache.

Practical configuration examples

Workshop-only server

-- garrysmod/lua/autorun/server/workshop.lua
resource.AddWorkshop("150455514")
resource.AddWorkshop("104606562")

This advertises two Workshop items to connecting clients. The dedicated server still needs those addons mounted if its scripts or entities use them.

FastDL server with selected assets

-- server configuration
sv_downloadurl "http://downloads.example.net/gmod/"

-- garrysmod/lua/autorun/server/resources.lua
resource.AddFile("materials/my/material.vmt")
resource.AddFile("models/my/model.mdl")
resource.AddSingleFile("sound/my/sound.wav")

The HTTP root must expose materials/my/material.vmt, models/my/model.mdl and sound/my/sound.wav at those exact paths, with optional matching .bz2 files.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Dedicated server started with a collection

srcds.exe +host_workshop_collection 1234567890 +gamemode sandbox +map gm_construct

Use a public or unlisted collection ID and confirm the startup log shows the collection being fetched and mounted.

Operational rules that prevent recurring failures

  • Keep Workshop IDs, collection IDs and file paths in separate configuration sections so an ID cannot be copied into the wrong setting.
  • Document which files are Workshop-delivered and which are mirrored through FastDL; this makes updates and incident response faster.
  • Review the total resource count before adding a large content pack because the shared 8192-file ceiling applies globally.
  • Prefer WorkshopDL for Workshop-published assets, FastDL for controlled private files, and ServerDL only for small or temporary transfers.
  • When a player reports a missing asset, identify whether the failure is server mounting, client advertising, HTTP retrieval or Lua delivery before changing settings.

The reliable pattern is therefore straightforward: mount content on the server, explicitly advertise client files through the matching download system, and test from a clean client. That separation is what prevents the common assumption that an addon visible to the server is automatically downloaded by every player.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.