How to Add Workshop Addons to a Garry's Mod Server

Add Steam Workshop addons to a Garry's Mod server with a collection and +host_workshop_collection, then make players download them with resource.AddWorkshop.

Updated Oct 3, 2026 · 6 min read

On this page

To add Workshop addons to a Garry's Mod server, put them in a public or unlisted Steam Workshop collection and start the server with +host_workshop_collection <collection ID>. The server downloads and mounts every addon on each start. Then make players download the content addons by calling resource.AddWorkshop("<addon ID>") in a file in garrysmod/lua/autorun/server/, otherwise they see missing textures and ERROR models.

How do Workshop addons work on a Gmod server?

Two separate things have to happen:

  1. The server installs the addon. That is what host_workshop_collection does. The server downloads the collection, mounts the addons and runs their Lua.
  2. Players download the content. Models, materials, sounds and maps are not sent automatically. The server has to mark each addon for client download with resource.AddWorkshop.

Lua code is different: the server sends client side Lua to players by itself, so a Lua only addon (a HUD, an admin mod, a gamemode script) needs no resource.AddWorkshop line. The Facepunch wiki is blunt about it: adding Lua only addons does nothing.

Step 1: Make a Workshop collection

  1. In Steam, open the Garry's Mod Workshop and go to Collections, then Create Collection.
  2. Name it, set the visibility to Public or Unlisted (a private collection cannot be read by the server), and save.
  3. Add addons: open each addon's page and use Add to Collection.
  4. Copy the collection ID: the number at the end of the collection's URL, after ?id=.
https://steamcommunity.com/sharedfiles/filedetails/?id=123456789
                                                      ^^^^^^^^^

Collections can contain other collections, and the server downloads every sub collection too. Many communities keep one collection for maps, one for models and one for scripts, then nest them in a master collection.

Step 2: Point the server at the collection

Add the collection to the server's startup command line:

srcds.exe -console -game garrysmod +maxplayers 32 +gamemode sandbox +map gm_construct +host_workshop_collection 123456789

Every restart, the server checks the collection and updates any addon that changed. The console prints each download as it happens, which is the first place to look if an addon is missing.

Since version 2026.09.22, Garry's Mod also accepts a list of addon IDs in a config file instead of, or as well as, a collection. Create garrysmod/cfg/srcds_workshop_ids.txt like this:

"my_workshop_addons"
{
	"1"	{ "wsid" "123277559" }
	"2"	{ "wsid" "111412589" }
}

That is handy when you want a couple of addons on top of a public collection you do not control. The Workshop for Dedicated Servers page on the Facepunch wiki has the details.

Many older tutorials also tell you to add a Steam Web API key with -authkey. The current Facepunch instructions only ask for the collection parameter.

Step 3: Make players download the content

Create a Lua file on the server, for example garrysmod/lua/autorun/server/workshop.lua, with one line per content addon:

resource.AddWorkshop("104606562") -- Achievement Viewer
resource.AddWorkshop("123277559") -- car pack
resource.AddWorkshop("111412589") -- player models

Rules worth knowing:

  • Each call takes a single addon ID, not a collection ID.
  • The current map and a workshop enabled gamemode are marked for download automatically if they come from the server's collection. The console says Making workshop map available for client download when that happens.
  • There is a limit of 8192 downloadable files shared across all resource.Add* calls. If you get anywhere near it, your collection is too big.
  • Only add addons with real content. Every extra line is something players download on their first join.

Players who subscribe to the collection on Steam before joining skip most of the download, so post the collection link in your Discord.

Garry's Mod players on a server with Workshop props and player models loaded from a collection

How do I add non Workshop addons?

Addons you wrote yourself, or ones downloaded as folders, go in garrysmod/addons/<addon_name>/ over SFTP. They load on restart like a Workshop addon. For players to get their content, use resource.AddFile for each file, or set up FastDL with sv_downloadurl pointing at a web server that hosts the files. Workshop is usually simpler, which is why most servers upload their own content as an unlisted Workshop item.

Should I turn off Workshop auto updates?

host_workshop_autoupdate 0 stops the server updating addons at startup. It protects you from an author pushing a broken or malicious update, but it has a cost: if a map updates on the Workshop and your server keeps the old version, players with the new version cannot join. Most small servers leave updates on and take a backup before restarting after a big addon change.

Why are players seeing missing textures and ERROR models?

What they see Usual cause Fix
Purple and black checkerboards Missing Counter-Strike: Source textures Tell players to install CS:S content, most maps and addons use it
Big red ERROR models Addon content not sent to players Add resource.AddWorkshop for that addon
Addon not working at all Collection private, or addon removed from Workshop Make the collection public or unlisted, check the addon still exists
Very slow first join Huge collection Remove unused addons, ask players to subscribe beforehand
Script errors after a restart An addon updated and broke Check the console, remove or pin the addon, restore a backup

How many addons is too many?

There is no fixed number, but every addon costs startup time, memory and a longer first join for players. Servers with a few dozen addons are normal. Collections with several hundred, especially big map and model packs, are where joins drag and RAM climbs. In Gmod, memory follows addons more than player count, so a heavy DarkRP collection may need a bigger plan than a simple TTT server with more players.

FAQ

How do I add a Workshop collection to my Garry's Mod server?

Make the collection public or unlisted, copy the number from its URL, and start the server with +host_workshop_collection followed by that number. The server downloads it on every start.

Do I need resource.AddWorkshop if I use host_workshop_collection?

Yes, for addons with models, materials, sounds or maps. The collection installs addons on the server, while resource.AddWorkshop makes players download their content. Lua only addons do not need it.

Can resource.AddWorkshop take a collection ID?

No. It only accepts single addon IDs, so add one line per content addon.

Why does my Gmod server not download my collection?

The collection is set to private, the ID is wrong, or an addon in it was removed. Check the server console during startup for errors.

Where do I put resource.AddWorkshop?

In any Lua file in garrysmod/lua/autorun/server/, for example workshop.lua. It runs on the server when the map loads.

On a hosted Gmod server

On a GamezServers Garry's Mod server, you paste the collection number into the Workshop ID setting and restart, so there is no start line to edit. The garrysmod folder is open in the file manager and over SFTP for workshop.lua and your own addons, and we create the Steam server token for you. Take a one click backup before dropping in a new addon pack. For the rest of the setup, see how to host a Garry's Mod server.

Skip the setup. Your own Garry's Mod server.

$4.99USD first month

Then $9.99/mo. Just trying it? $2.50 for 3 days

Keep reading