Recommended Free Tools
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.
Prefer not to run the server on your own PC? Godlike.Host offers hosted Garry's Mod servers with free DDoS protection and up to three free backups a day.
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.
| 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
- 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.
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.
Rank #2
- 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.
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
- 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:
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →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.
Rank #4
- 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.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteUse 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
- 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.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.
Diagnose missing downloads and textures
Purple-and-black textures or missing models
- Confirm that the item is registered with
resource.AddWorkshopif it is Workshop-hosted. - For non-Workshop content, verify every required path is registered with
resource.AddFileorresource.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
.bz2copy 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
- Choose one transfer path for each asset and avoid registering the same large file repeatedly through multiple systems.
- Use a clean client profile or remove the relevant cached Workshop and downloaded files.
- Start the server, change the map if necessary, and inspect the console for Lua or Workshop errors.
- Join from the clean client and watch the download list. Confirm that models, materials and sounds arrive before the player spawns.
- Open each FastDL URL directly when testing HTTP delivery. A successful browser request should return the file, not an HTML error page.
- Test a second map or gamemode if the resources are declared conditionally; a list built only during one map may not cover another.
- 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.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Dedicated 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.
Quick Recap
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.




