How to Add Mods to a Project Zomboid Server Safely
Add Project Zomboid server mods with the right Workshop and Mod IDs, dependencies, branch checks, logs, and a clean-client test.
You will need
- A running Project Zomboid Host or dedicated server
- One selected mod and its Workshop page
- Access to the active server settings or files
- A backup or disposable world and one clean client
To add mods to a Project Zomboid server, configure the mod’s numeric Workshop ID and its internal Mod ID, then prove that the server and every client use a compatible build. A download icon or a checked box is not that proof. This guide follows one already-selected mod through compatibility checks, configuration, restart logs and a clean-client join, whether you use Host, a dedicated process or a rented server.
The official site currently reports Stable Build 42.20.4. Keep the server, client and mod on an agreed branch before you touch a long-running world. If you are still on Build 41, use its legacy41 branch and its matching mod release; do not treat this as a conversion guide.
Confirm the mod matches your server build and multiplayer#
For an exact-build compatibility worksheet covering dependencies, client behavior, and a test-world reload, follow the Build 42 multiplayer mod stack audit. This guide focuses on installing and checking the server configuration.
Start with the mod’s own Workshop page and maintainer notes, not a recommendation list. Record the server branch, the mod’s stated game build, multiplayer support, required libraries and whether it adds a map, changes existing cells, or only changes client presentation. A mod that loads in single-player is not automatically suitable for a dedicated multiplayer process.
The current official release header says 42.20.4 for both Stable and Unstable. That is a version check, not a guarantee that every mod has caught up. The official Build 42 notes also record that Build 41 saves do not work with Build 42 and that 42.19 saves do not work with 42.20. Do not promise yourself a painless downgrade or conversion if the mod forces a branch change. Make a separate backup and test the branch with a disposable world first.
Use this short decision table before editing the server:
| Check | What to record | Stop if |
|---|---|---|
| Server branch | Stable 42.20.4, legacy41, or another deliberate branch |
Players or server are on different branches |
| Multiplayer support | Maintainer’s current note and update date | The mod is single-player only or silent about MP |
| Dependencies | Every required Workshop package and internal ID | A dependency has no compatible release |
| World impact | Cosmetic, items, scripts, map or existing-cell change | You cannot restore the world if it changes data |
| Revision | Workshop page revision or date you selected | The server and clients may fetch different files |
If any row is unknown, stop at research. Hosting cannot make an incompatible mod compatible. For Build 42 in particular, the official migration post is written for mod authors and describes changes in identifiers and registries; it is not evidence that an old Build 41 package will work on your server.
Collect the Workshop ID, Mod ID and dependencies#
You need two different identifiers for the common Steam Workshop workflow. The Workshop ID is the number in the Workshop URL. The Mod ID is the text identifier inside the package, normally declared by the mod’s mod.info file. The two fields look redundant until you remember that one Workshop item can contain several internal mods.
Open the Workshop page and save its URL in your administration notes. Then read the maintainer’s installation instructions for the internal ID and required modules. If the package contains folders for several submods, do not enable every folder by reflex. Use the exact list the maintainer documents for the feature you selected.
Keep a small inventory before you paste anything:
| Item | Example shape | Where it belongs |
|---|---|---|
| Workshop ID | 1234567890 |
WorkshopItems= |
| Mod ID | ExampleMod |
Mods= |
| Dependency | ExampleLibrary |
Both fields if its instructions require both |
| Optional submod | A separate internal ID | Only if you deliberately use it |
If the Workshop page gives you only a title, keep looking. A title is not a safe value for either field. On a dedicated server, inspect the downloaded package only after the server has obtained it and locate the internal ID in the mod’s metadata. On a managed panel, use its Workshop field if it has one, but still confirm the resulting server configuration rather than assuming that a successful save filled both lists.
Back up the world and open the active server configuration#
Stop the server cleanly before changing its mod list, then copy the world, server settings, player identities and your mod inventory to a location outside the live directory. A client subscription is not a server backup. If the mod affects maps, cells or saved objects, your rollback plan must include the world data, not only the .ini file.
The active configuration depends on how you host. In a dedicated installation it is commonly a server-named .ini under the account’s Zomboid/Server directory. A Host game may use the settings created by Manage Settings. A rented service may expose a text editor, a mod page, file access, or none of these. Find the configuration that the next server start actually reads; do not edit an example file in the installation folder and assume it is live.
Stop and copy the live data
Stop the server using its normal shutdown control. Copy the world folder, server-named
.ini, sandbox/spawn files, player database or identity data, and the current mod inventory. Check that the copy has a recent modified time before continuing.Identify the server name
Note the profile or server name used by the start command or panel. Match that name to the
.iniyou will edit. If the server starts with a different name, your changes may be valid but unused.Open the generated settings
Use the panel’s file view or a text editor on the active
.ini. Search forWorkshopItems=andMods=. If either field does not exist, use the current build’s generated settings screen or documentation rather than inventing a new location.
If you would rather not maintain file access and restarts yourself, you can review the Project Zomboid hosting workflow and verify its current mod controls before renting. The product page is a possible administration shortcut, not evidence that every panel exposes the same fields or accepts every mod.
Add both identifiers without trusting a panel checkbox#
Put the numeric Workshop ID in WorkshopItems= and the internal text IDs in Mods=. Separate multiple entries with the delimiter shown in the configuration generated by your branch. The important distinction is the role of each field, not copying an old example unchanged.
An illustrative configuration has this shape:
WorkshopItems=1234567890;2345678901
Mods=ExampleMod;ExampleLibraryBuild 42 reports and tools have changed how the internal Mod ID is written in some generated configurations. If your current B42 file writes a leading backslash before each internal ID, preserve that exact generated syntax instead of replacing it with a Build 41 example. Do not add a slash, backslash or numeric Workshop ID to Mods= just because a forum snippet shows it. Save the file, reopen it, and check that the two lines still contain the values you intended.
The Host editor deserves an extra check on current Build 42 versions. A recent Build 42.20.3 forum bug report describes a mod appearing enabled while its Workshop ID was not written to WorkshopItems=. After using a menu, inspect the resulting .ini manually. If the numeric ID is missing, add it through the supported configuration path, save, and verify again before restarting.
Do not merge a collection URL into Mods=. A collection is a way to group Workshop items; the server still needs the package IDs and the internal IDs required by those packages. Likewise, do not enable every dependency twice or remove a library because it has no visible item in the game. Required libraries can be invisible while still being necessary.
Restart and read the download and activation evidence#
Start the server and treat the console or log as the first test. You are looking for three separate outcomes: the server identifies the Workshop package, it finds and activates the requested internal ID, and it reaches a ready state without a required-mod or version error.
Watch the first startup
Keep the console or log open while the server downloads or checks the Workshop package. A completed download only proves that the numeric package was reachable. It does not prove that the internal mod activated.
Search for the failure class
Look for messages such as
required mod ... not found,mods isn't a valid workshop item ID, missing dependency notices, or a package/version mismatch. Treat the message as a configuration or compatibility failure until you resolve it.Confirm the ready state
Wait for the normal server-ready signal, then record the build, server profile and mod revision. If the server starts with a vanilla world, do not invite players yet; a silent no-op is still a failed mod test.
If the log says the package downloaded but the mod is missing, compare the internal ID character by character with the maintainer’s value. If the ID is correct, check dependencies, branch syntax and the active server name. If the server rejects the numeric value as a Mod ID, it is in the wrong field. If the server rejects an internal value as a Workshop ID, reverse the fields and restart from the backup.
Join from a clean client and verify the feature#
Use one client that is not already running the mod locally, or disable the local mod temporarily before joining. The point is to test what the server supplies and activates, not what your client happens to have cached. Keep the client on the same game branch as the server and connect with the normal server address and credentials.
Prepare the client
Match the server branch, disable unrelated local mods, and close the game once so the next join starts clean. Do not use a giant collection for this check; isolate the selected item and its required dependencies.
Join and watch the client download
Join the server and let the client fetch the required Workshop content. A prompt or download is useful evidence that the server advertised something, but it is not the final result.
Check the observable behavior
Use the feature the mod is meant to provide in a safe test area. For a UI mod, confirm its menu; for an item mod, spawn or craft only what the maintainer documents; for a map mod, verify its entrance without assuming an already-explored cell will change.
If the client is rejected, compare the exact branch, package revision and dependency list. If the server joins but the feature is absent, the item may have downloaded without activation, may be client-only, or may require a new world or cell. Do not delete the live world to make a mod appear. Restore the backup or test the change on a disposable profile first.
Keep the mod or roll it back deliberately#
Once the clean-client test passes, write down the exact Workshop URL, revision, internal IDs, dependency order and the server build. Tell players which branch and client state they need before the next session. A mod update is a new change to review, not an automatic maintenance chore.
If the test fails, stop the server, restore the pre-change configuration and world snapshot, then confirm that the vanilla or previous modded server starts. Keep the failed log with the inventory; it will tell you whether the next attempt needs a different ID, branch or dependency. For a map or save-affecting mod, rolling back only the .ini may not undo data already written to the world.
The useful result is a repeatable server state: same branch, same package revision, same internal IDs and a client that can observe the feature. That is what protects your friends’ evening. A panel that hides the file can save typing, but it does not remove the need for this check.
Quest complete
Before you invite your friends, check that the intended world loaded and that each player can connect. If those checks pass, you're ready for a session; if you'd rather not keep a PC on, that's what we're here for.
Quick answers
Why does a server need both Workshop and Mod IDs?
WorkshopItems tells the server what Steam Workshop package to download. Mods tells the game which internal mod IDs to activate, and one package can contain more than one mod.
Does a completed Workshop download prove that a mod loaded?
No. A package can download while the activation list, dependency, branch or client test still fails. Read the startup log and join with a clean client before inviting the group.
Should every submod in a Workshop item be enabled?
No. Enable only the internal IDs the maintainer documents for your server and the feature you want. A collection or package can contain optional, client-only or incompatible modules.




