Garry's Mod Workshop Collection Resolver
Paste a Steam Workshop collection URL or ID and instantly get the +host_workshop_collection startup line, a copy-paste resource.AddWorkshop Lua block, and a downloadable workshopdl.lua — with live addon metadata (titles, file sizes, last-update dates), total download size, wrong-game detection, and a sortable item table.
Reads the public Steam Workshop API server-side (no API key required). Walks the collection's child items and pulls every addon's title, file size, and last-update date.
Turn a Steam Workshop collection into a working Garry's Mod server addon load
Garry's Mod servers load addons two ways: the launch-flag `+host_workshop_collection <ID>` (mounts every item in a Workshop collection at server start) or per-addon `resource.AddWorkshop("...")` calls in `lua/autorun/server/`. Both have failure modes — the launch flag silently skips wrong-game items, and the per-addon Lua list goes stale every time you edit the collection on Steam. This resolver does both at once: paste the collection URL, get a synced output for either method, plus a sortable table showing every addon's title, size, and last-update date so you know what your players will be downloading.
Workflow: open your collection on Steam (the URL has `?id=2840079741` at the end), copy it, paste here, click Resolve. The tool calls Steam's keyless `ISteamRemoteStorage/GetCollectionDetails` endpoint server-side (browsers can't call it directly — Steam doesn't return CORS headers), gets the child item IDs, then chunks them through `GetPublishedFileDetails` 100 at a time to fetch metadata. Total time: usually 2-4 seconds for a typical 50-200 addon collection.
Output has 4 formats. (1) `+host_workshop_collection` — the one-line server.cfg / launch flag pointing at your collection. Easiest to maintain because Steam keeps the contents in sync with whatever you edit on the collection page. (2) `resource.AddWorkshop` Lua — explicit per-addon registration, more reliable on some gamemodes (DarkRP especially) where the launch flag mounts but doesn't guarantee client downloads. (3) `workshopdl.lua` — combined version with both, ready to drop into `garrysmod/lua/autorun/server/`. (4) Plain ID list — for tooling that wants raw IDs.
The item table catches problems before they ship: wrong-game IDs (consumer_app_id ≠ 4000) get flagged yellow — easy to accidentally include a CS:S Source 2 prop pack that won't load on GMod. Errored IDs (deleted, hidden, banned) get flagged red. Total download weight at the top so you know if your collection is going to make new players wait 10 minutes on first connect.
Companion to the GMod TTT Config Builder, ULX Permissions Builder, and Tickrate Calculator on this site. If you host on XGamingServer Garry's Mod hosting, paste the resolved `+host_workshop_collection` line into your panel's startup-args field and your collection auto-mounts on every restart.
Garry's Mod Workshop Collection Resolver — FAQ
Where do I find the Workshop collection ID?
On the Steam Workshop page for any collection, look at the URL: `https://steamcommunity.com/sharedfiles/filedetails/?id=2840079741` — the trailing number is the ID. Paste either the full URL or just the number; the resolver handles both.
What's the difference between +host_workshop_collection and resource.AddWorkshop?
`+host_workshop_collection <ID>` is a server LAUNCH FLAG that mounts the collection at boot — clients download all addons via Workshop sync. `resource.AddWorkshop(id)` is a per-addon Lua call (in `lua/autorun/server/`) that explicitly registers each addon for client download. Many gamemodes (DarkRP especially) need both for reliable sync.
Why does the resolver flag some addons as wrong-game?
Steam Workshop hosts items for many games. If you accidentally add a non-GMod item to your collection, the consumer_app_id won't be 4000 (Garry's Mod). The resolver flags those rows yellow so you can fix the collection before deploying.
Will this work for private collections?
No. The Steam Workshop API only returns public items. If your collection is set to Friends-only or Private, the resolver returns 'collection not found'. Set it to Public on Steam, then re-resolve.
Is there a download size limit per server?
Garry's Mod itself doesn't enforce one, but clients give up if a single addon is over ~150 MB on a slow connection. The resolver shows total collection size — if you're shipping >2 GB of addons, expect long initial join times. Workshop downloads are concurrent across addons but individual files are sequential.
How often should I refresh the resolver output?
Each time you add or remove items from the collection on Steam. The Lua / cfg output is a static snapshot — it doesn't auto-sync. Re-resolve, regenerate, redeploy.
You might also need
TTT Config Builder
Build the cvar block for Trouble in Terrorist Town — round time, haste, prep, traitor/detective ratios, karma, equipment credits, voice chat, T-room — with documented defaults from troubleinterroristtown.com. Copy or download as ttt.cfg.
ULX Groups + Permissions Builder
Visual editor for ULib users.txt + groups.txt — superadmin / admin / respected / user with command access lists, group inheritance, member SteamID assignments. Copy both files paste-ready or download as a .zip.
Tickrate + Netcode Calculator
Input player count, gamemode (Sandbox / DarkRP / TTT / Prop Hunt), and target — get recommended -tickrate, sv_maxupdaterate, sv_minupdaterate, sv_maxcmdrate, sv_minrate, sv_maxrate, fps_max with explanations. Pure formula, zero guesswork.
Garry's Mod server admin docs
Read the full Garry's Mod server docs →
Step-by-step guides for installing mods, configuring your server, joining, troubleshooting, and admin commands.

Config Tool Built Into XGamingServer
Get managed Garry's Mod hosting with this tool in your panel — configure, deploy, and play in minutes. No file uploads needed.