Recommended Free Tools
To force clients to receive custom content before they join a Garry’s Mod server, use the transfer method that matches where the files live: WorkshopDL with resource.AddWorkshop for Steam Workshop items, FastDL with sv_downloadurl for files on your own HTTP host, or the built-in ServerDL only as a fallback. A Workshop declaration makes clients download the item before entering; it does not install that addon on the 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.
The most common Workshop setup is a serverside file at garrysmod/lua/autorun/server/workshop.lua containing one numeric Workshop ID per line. For privately hosted models, materials, sounds, and maps, register virtual game paths with resource.AddFile or resource.AddSingleFile and mirror those paths on a web server. The sections below explain the exact setup, collection startup, limits, and fixes for missing textures or stalled downloads.
As an Amazon Associate I earn from qualifying purchases.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Choose the download system first
Garry’s Mod has three different mechanisms that are often confused. WorkshopDL obtains a published item from Steam’s Workshop service. FastDL obtains files from an HTTP mirror that you operate. ServerDL sends files directly from the game server. They are not interchangeable, and mounting content on the server is not the same as marking it for clients.
| Method | Files come from | Best use | Setup burden | Transfer behavior | Main limitations and risks |
|---|---|---|---|---|---|
| WorkshopDL | Steam Workshop | Workshop-published models, materials, sounds, maps, and other client-visible assets | Low: register each item ID or mount a collection | Steam handles distribution and clients download before joining | Requires a Workshop item; Lua-only items do not become useful through this call; an item declaration does not install the addon on the server |
| FastDL | Your separate HTTP server | Private, custom, or non-Workshop files | Medium to high: web host, mirrored directory tree, URL, and resource declarations | Clients request compressed .bz2 files first and fall back to uncompressed files |
Mirror must stay synchronized; incorrect virtual paths produce 404 errors |
| ServerDL | The Garry’s Mod game server | Small or temporary transfers when no HTTP host is available | Low: enable downloads and register files | Direct transfer with a documented 64 KB/s limit | Obsolete for production use, slow, and the official guide warns that modified clients can abuse enabled downloads by spamming requests |
Use only one mechanism when it is sufficient, or combine them deliberately. For example, WorkshopDL can deliver a published vehicle pack while FastDL serves a private map that is not in Workshop.
#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.
WorkshopDL: force a Workshop addon before joining
1. Find the numeric Workshop ID
Open the item’s Steam Workshop page and copy the number in its URL. The ID is the numeric item identifier, not the collection ID, title, or addon folder name. If an item URL ends with a number such as 150455514, that number is what the server declaration needs.
2. Create the serverside declaration
On the dedicated server, create this file if it does not already exist:
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallgarrysmod/lua/autorun/server/workshop.lua
Add one call for every Workshop item:
resource.AddWorkshop("150455514")
resource.AddWorkshop("104606562")
resource.AddWorkshop accepts a single Workshop item ID per call; it does not accept a collection ID or a comma-separated list. Keep the file serverside. You do not need to put this Lua file on clients.
3. Restart or change the map
Restart the server or change level so the autorun file is loaded. Watch the server console for Lua syntax errors or invalid IDs. A client should then be offered the Workshop content before entering the server. If an item is updated by its creator, Steam handles the client-side update when the item is downloaded again; your declaration remains the same.
What this call does—and does not do
The function is intended for addons containing files clients can see, such as models, materials, sounds, particles, and related assets. It marks the Workshop item for client download before entry. It does not download or install that addon into the dedicated server’s own filesystem. The server must still have the addon mounted or otherwise installed when the gamemode needs server-side code or entities.
Lua-only addons are the common exception. Lua is transferred through a separate system, so adding a Lua-only Workshop item with resource.AddWorkshop is not a fix for missing scripts. Use the appropriate server installation and Lua transfer path instead; use resource declarations for non-Lua files.
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 at dedicated-server startup
A collection is useful when a server has many Workshop items and you want the dedicated server to download and mount them as a group. The collection must be public or unlisted; a private collection cannot be loaded this way.
Startup command
Start the server with the collection ID, not an individual addon ID:
srcds.exe +host_workshop_collection COLLECTION_ID +gamemode sandbox +map gm_construct
Replace COLLECTION_ID with the numeric ID shown in the collection URL. At startup, the server downloads and mounts the collection’s addons. The current map and a Workshop-enabled gamemode can then be marked for client download automatically when they originate from that collection or declare a Workshop ID.
Workshop ID file for newer servers
On servers running version 2026.09.22 or newer, cfg/srcds_workshop_ids.txt can hold Workshop IDs in the documented key/value format. This is useful when you want a startup-managed list without putting every ID in an autorun Lua file. Keep the IDs valid and review the file whenever the collection changes.
Collection mounting and client delivery are separate checks. A collection can be visible in the server’s mounted content while clients still lack a required asset if the item is not declared for download or is not being exposed by the map and gamemode configuration. Test with a clean client after every collection change.
FastDL: serve non-Workshop files from an HTTP mirror
Requirements
- A separate web server reachable by players.
- A directory tree that mirrors the game’s virtual file paths.
- The server console variable
sv_downloadurlset to the mirror’s root URL. - Serverside resource declarations for every file clients must receive.
Set sv_downloadurl to the URL that corresponds to the root of the mirrored garrysmod content. The URL should expose files directly; do not point it at a page that requires login, redirects through a control panel, or rewrites paths unexpectedly.
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.
Register files in Lua
Use a serverside Lua file such as garrysmod/lua/autorun/server/resources.lua:
resource.AddFile("materials/my/material.vmt")
resource.AddFile("models/my/model.mdl")
resource.AddSingleFile("sound/my/sound.wav")
These are virtual paths relative to garrysmod/. Do not include an addon folder prefix such as addons/myaddon/, and do not append .bz2 to the path in Lua. The HTTP mirror should contain the same virtual path. For example, a model registered as models/my/model.mdl must be available beneath the mirror’s models/my/ directory.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteresource.AddFile versus resource.AddSingleFile
resource.AddFile is the convenient choice for ordinary game assets. When related model or material files are present, Garry’s Mod automatically includes the associated files needed by that asset. This reduces the chance of registering a model while forgetting its companion files.
resource.AddSingleFile is precise: it registers only the exact path supplied. Use it when you intentionally want one file and have verified that no companions are required, or when broad automatic inclusion would add unnecessary files.
Compress and mirror correctly
FastDL clients request file.bz2 first and fall back to the uncompressed file. You may provide compressed files to reduce transfer size, but the uncompressed path must also be correct if compression is unavailable. Keep the HTTP mirror synchronized with the game server after every asset replacement or removal. A stale mirror can produce old models, while a missing file produces a 404.
Do not copy the physical addon directory name into the URL unless it is genuinely part of the virtual path. A file stored on disk at garrysmod/addons/example/materials/my/material.vmt is normally registered as materials/my/material.vmt, not addons/example/materials/my/material.vmt.
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
ServerDL: the fallback you should normally avoid
ServerDL uses the game server itself as the file host. Enable it with sv_allowdownload 1 and register files using the same resource functions:
sv_allowdownload 1resource.AddFile("materials/my/material.vmt") resource.AddSingleFile("sound/my/sound.wav")The official guidance describes ServerDL as obsolete because transfers are limited to 64 KB/s and occur file by file. It also warns that allowing downloads can be abused by modified clients that spam file requests. Those constraints make ServerDL unsuitable for a busy public production server. It is reasonable only for a small test server, a temporary migration, or a situation in which WorkshopDL and FastDL are unavailable.
If you switch from ServerDL to FastDL, leave the resource declarations in place but configure and test
sv_downloadurl; the declarations identify the files while the HTTP host supplies them.Match the content type to the right declaration
| Content you need clients to receive | Recommended method | Why |
|---|---|---|
| Workshop-published models, materials, sounds, maps, or particles | resource.AddWorkshop("ITEM_ID") |
Steam delivers the published item before the client enters |
| Private or internally built files not published to Workshop | FastDL with resource.AddFile or resource.AddSingleFile |
An HTTP mirror can serve arbitrary virtual paths |
| Lua-only addon code | Separate Lua/server installation and transfer handling | Workshop resource calls target file assets, not Lua distribution |
| A large set of Workshop addons | Startup collection plus explicit client declarations where required | Collection mounting simplifies server installation while declarations cover client delivery |
When an asset includes both Lua and models, treat the two parts independently: install or transfer the Lua through its normal path, and use WorkshopDL or FastDL for the visible files.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Respect the shared 8,192-file limit
All registrations made through resource.AddWorkshop, resource.AddFile, and resource.AddSingleFile count toward a shared limit of 8,192 files. The limit is not 8,192 per function or per Lua file. A server with many packs can hit it unexpectedly when automatic related-file inclusion expands an apparently short list.
Audit every resource.Add* call when downloads stop partway through. Remove duplicate declarations, avoid registering files that are already delivered by a Workshop item, and use resource.AddSingleFile where broad inclusion is unnecessary. Split content across Workshop items or collections when practical, then retest from a client with no cached files.
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.
Troubleshoot missing downloads and purple textures
Purple-and-black textures or missing models
- Confirm that the required non-Lua assets are in a Workshop item declared with
resource.AddWorkshop, or are registered withresource.AddFilefor FastDL/ServerDL. - For a model, check companion materials, model data, and sound files.
resource.AddFileautomatically includes related model/material files when they are present;resource.AddSingleFiledoes not. - Check the client’s download log and reconnect after clearing the cached broken copy.
The addon is mounted on the server, but players receive nothing
Mounting installs content for the server process; it does not automatically mark every client asset for download. Add a Workshop resource declaration or explicit file resources, depending on where the content is hosted. Then restart or change level so the serverside Lua file executes.
resource.AddWorkshop appears to do nothing
- Verify that the argument is a numeric item ID, not a collection ID or URL.
- Make sure the Lua file is under
garrysmod/lua/autorun/server/and contains no syntax errors. - Check whether the item is Lua-only; such an item needs the separate Lua transfer path.
- Confirm that the item actually contains client-visible files and that the client has not already cached them.
FastDL returns 404
Take the exact virtual path from the resource.AddFile call and append it to the HTTP root. Verify that the file exists there with matching case and that the server is not registering an incorrect addons/<name>/ prefix. Test both the compressed and uncompressed forms if you provide .bz2 files. A successful browser request for the exact URL is a useful first check, but the client must also be able to reach the host without authentication or IP restrictions.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Downloads stop unexpectedly
Count the files represented by every resource declaration and compare the total with the shared 8,192-file ceiling. Check the server console for errors, remove duplicates, and reduce automatic inclusion where appropriate. Also verify that the HTTP mirror has not run out of disk space or begun returning server errors.
A collection does not load
- Confirm that the collection is public or unlisted rather than private.
- Use the collection ID with
+host_workshop_collection; an addon ID will not work. - Read the startup log for download or mount errors, then restart after correcting the ID.
- Check that the selected gamemode and map are compatible with Workshop mounting.
Production checklist
- Classify each dependency as Workshop content, private file content, or Lua-only code.
- For Workshop items, record the numeric item IDs and add one
resource.AddWorkshopcall per item. - For a collection, verify public or unlisted visibility and pass its collection ID at startup.
- For FastDL, create the HTTP directory tree, set
sv_downloadurl, and mirror virtual paths exactly. - Register private files with
resource.AddFile; useresource.AddSingleFileonly when exact inclusion is intended. - Enable
sv_allowdownload 1only when deliberately using ServerDL. - Count all registered files against the shared 8,192-file limit.
- Restart or change level, inspect the console, and test with a client that does not already have the files cached.
- Join from a second machine or clean profile and verify that models, materials, sounds, and map-specific assets all arrive before gameplay begins.
Operational recommendations
For most public servers, make WorkshopDL the default for content that is already published on Workshop. It has the smallest operational footprint and avoids maintaining a second file host. Use FastDL when you control the files, need private distribution, or cannot publish an asset to Workshop. Treat ServerDL as an emergency or development option because its throughput and abuse exposure are documented drawbacks.
Keep a written inventory of item IDs, virtual file paths, collection membership, and the date each asset was last changed. When replacing an asset, update the server installation and the HTTP mirror together, then test with a clean client. This prevents the two most common failure states: the server can use an asset that clients never download, or clients receive an outdated copy from a stale mirror.
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.

