2 August 2026

Project Zomboid Server Configuration Guide: servertest.ini and Sandbox Settings

A comprehensive guide to configuring your Project Zomboid server, covering servertest.ini network settings, sandbox gameplay options, zombie behaviour, loot tables, and Build 42 features.

Brauchst du einen Project Zomboid-Server?Jetzt mieten

Introduction

Project Zomboid's two config files are where a server actually gets its personality. I've lost count of how many times I've opened servertest.ini expecting a quick tweak and come back out an hour later, but the good news is that once you know which knobs matter you can leave most of it alone.

There are two files that do the real work:

  • servertest.ini – network, slots, password, PVP toggles, anti-cheat, mods. The file name itself is the server instance identifier, which trips up everyone the first time.
  • servertest_SandboxVars.lua – the gameplay sandbox: zombies, loot, day length, power and water shutoff, XP, all of it.

If you haven't booted a server yet, start with our Project Zomboid getting started guide and come back here once you're in. And if you just want a plug-and-play settings loadout, I wrote a companion blog over at Best Project Zomboid server settings for 2026 with ready-made presets.

Editing config on a LOW.MS server

On LOW.MS the path I'd recommend for nearly everyone is in-browser through TCAdmin.

  1. Log into control.low.ms.
  2. Open your Project Zomboid service.
  3. Click Configuration Files in the sidebar.
  4. Pick servertest.ini or servertest_SandboxVars.lua from the list and edit directly in the browser.

That's the primary path. It's fast, you don't need an FTP client, and you can't accidentally upload a file with a Windows BOM on it.

If you want to move files in bulk or grab a backup of the whole Zomboid/Server/ folder, File Manager is also in the sidebar. For power users who prefer a local editor, SFTP is available on port 8822 and plain FTP on port 8821. The credentials live under FTP Settings on your account page rather than on the service itself, which catches people out: the FTP account is tied to your login, not to one server. I use SFTP when I'm fiddling with dozens of mods at once, but for a one-line change it's overkill.

One rule regardless of which path you use: stop the server before you edit. A running server owns these files and writes its own copy back out on shutdown, so it will happily clobber your changes if it's up when you save.

servertest.ini – the bits that actually matter

I'm going to walk through the settings I actually touch and then give you a reference block for the rest. Going line-by-line through every anti-cheat flag helps nobody.

Server identity and slots

The name that appears in the in-game browser is PublicName, not ServerName – this is the one almost every copy-pasted guide on the internet gets wrong. PublicDescription is the tagline underneath. Public = true puts the server in the public list; leave it false if you only want friends joining via direct IP or an invite.

On LOW.MS, MaxPlayers is set to your plan's slot count when the server installs, so you rarely need to touch it. The game's own default is 32, and the config file itself warns that going above 32 risks poor map streaming and desync – PZ is surprisingly heavy on CPU per player once the horde starts grinding, so scale up deliberately rather than maxing the cap. For an honest look at slot counts and pricing see the Project Zomboid server hosting page.

Password does what it says on the tin. Empty means open.

PVP and the safety system

PVP defaults to true. What most people miss is the safety toggle – even with PVP on, players individually flip themselves "safe" or "unsafe" to other players. SafetySystem = true enables that, ShowSafety = true draws the little icon above heads.

SafetyToggleTimer and SafetyCooldownTimer are in seconds, not hours (defaults 2 and 3). Every old guide claims hours and it's nonsense – two hours to turn PVP on would make the system useless. Two seconds is the real number.

If you want proper hardcore "anyone can shoot anyone", set SafetySystem = false and be done with it.

Pause, sleep, chat

  • PauseEmpty defaults to false in a stock servertest.ini. If you want the world to stop ticking when nobody's online – which is usually what small groups want – flip it to true yourself.
  • SleepAllowed / SleepNeeded are off by default on MP because sleeping fast-forwards time, and on a shared server that's chaotic. Turn them on for 2-4 player servers where everyone's online at the same time.
  • GlobalChat on or off is taste. I leave it on.

Voice chat

VoiceEnable, VoiceMinDistance (default 10), VoiceMaxDistance (default 100), and Voice3D for directional audio. Defaults are fine for 99% of servers.

Anti-cheat

DoLuaChecksum = true and the AntiCheatProtectionType1 through AntiCheatProtectionType24 block are on by default. Don't touch them unless a specific mod's documentation tells you to disable a specific number – turning things off to "fix" mod errors usually just hides a real problem.

Workshop mods: use the Steam Workshop page first

PZ's sidebar now has a proper Steam Workshop browser: search or browse the Workshop, click Install, and the panel writes the entries into the WorkshopItems= and Mods= lines in servertest.ini for you. Two companion pages, Steam Workshop (installed) and Steam Workshop (updates), show what's on the server and what has an update waiting, and uninstalling from there removes both entries in step. Restart the server and the mods download on the next start.

Check the Mods= line before you start the server. This is the step to not skip. A mod's Workshop title and its internal id are two different things, and only the id loads: "Tsar's Common Library" on the Workshop is tsarslib on disk. Open servertest.ini in Configuration Files after installing, confirm each entry in Mods= matches the id= line from that mod's mod.info, and correct any that don't. Get it wrong and the mod silently doesn't load, with nothing in the log to tell you why, which is a miserable thing to debug at midnight.

If you'd rather manage the lines yourself (a modpack author has hardcoded a load order, say), drop into Configuration Files. Stop the server first, then two lines control everything:

WorkshopItems=2313387159;2392709985;2169435993
Mods=\tsarslib;\Arsenal(26)GunFighter;\BetterSortCC

WorkshopItems is a semicolon list of Steam Workshop IDs (the number at the end of each workshop URL). Mods is a semicolon list of each mod's internal id, taken from the id= line inside its mod.info file on disk.

Note the leading backslash on each mod entry. Build 42 needs it, and this is the single most common reason a mod list that looks perfectly correct loads nothing at all. Build 41 didn't, so any guide written before B42 (including older versions of this page) shows them without. If you're copying a mod list from anywhere, add the backslashes.

Backups

Setting Default What it does
SaveWorldEveryMinutes 0 In-game autosave interval (0 = only on shutdown)
BackupsCount 5 How many backup copies to retain
BackupsOnStart true Snapshot on server boot
BackupsOnVersionChange true Snapshot when PZ updates
BackupsPeriod 0 Minutes between periodic backups (0 = off)

I'd set SaveWorldEveryMinutes = 15 and BackupsPeriod = 60 on any server you care about. You've also got Cloud Backup in the sidebar on top of all this, and you can put it on a schedule with Scheduled Tasks, so even if PZ's in-game backups get mangled there's a safety net.

servertest.ini reference block

Everything else worth knowing at a glance:

Setting Default Notes
PublicName (empty) Name in the in-game browser
PublicDescription (empty) Tagline under the name
Public false Public listing on/off
Password (empty) Server password
MaxPlayers 32 Concurrent player cap (LOW.MS sets it to your plan's slots)
DefaultPort 16261 Primary UDP game port
UDPPort 16262 Secondary UDP (Steam)
Open true Accepting connections
ResetID (auto) Don't change unless wiping the world
PVP true PVP master switch
PauseEmpty false Pause when nobody's online
SafetySystem true Per-player PVP safety toggle
ShowSafety true Draw safety icon above heads
SafetyToggleTimer 2 Seconds to toggle safety (not hours)
SafetyCooldownTimer 3 Seconds cooldown after toggle
GlobalChat true Global chat channel
SleepAllowed false Let players sleep
SleepNeeded false Require sleep to avoid fatigue

servertest_SandboxVars.lua – where the game actually lives

This is a Lua file, not an ini. It looks like a big nested table and it will bite you if you forget a comma. The in-browser editor in Configuration Files handles it fine, but back it up before deep edits.

The single most important fact to get right: zombie behaviour settings are nested under ZombieLore, not top-level. Every guide that shows Speed = 2 as a top-level key is wrong.

ZombieLore = {
    Speed = 2,
    Strength = 3,
    Toughness = 3,
    Transmission = 1,
    Mortality = 5,
    Reanimate = 3,
    Cognition = 3,
    Memory = 2,
    Sight = 2,
    Hearing = 2,
},

Zombie population

The top-level population key is Zombies (not ZombieCount – another legacy typo floating around). The scale is inverted from what you'd expect:

  • 1 = Insane
  • 2 = Very High
  • 3 = High
  • 4 = Normal (this is what the stock Apocalypse preset uses)
  • 5 = Low

So Zombies = 4 is Normal, and Zombies = 1 is the "you are going to die in a parking lot" setting. If you're running 20+ players, I'd stay at 3 or 4 unless you've got the CPU headroom to burn – the AI cost of a packed city at Insane is no joke.

Distribution controls how zombies are spread across the map. It's 1–2: 1 is Urban Focused (heavy in towns, lighter in the countryside) and 2 is Uniform. There's no third option, despite what old forum posts say.

PopulationMultiplier is a straight scalar on top of Zombies (default 1.0). PopulationStartMultiplier lets you start lower and ramp up to PopulationPeakMultiplier by day PopulationPeakDay. If you want the classic PZ experience where week one is manageable and week four is hell, this trio is how you do it – try 0.71.5 peaking at day 28.

Respawn is its own nest of variables. RespawnHours is how many in-game hours between a cell respawning zombies, RespawnUnseenHours is how long a cell has to be unobserved before it's eligible, and RespawnMultiplier scales how many come back (0.0 disables respawns entirely). On a long-running server with fixed bases, I'd set RespawnMultiplier = 0.0 to keep player-cleared areas clean – otherwise your fortified gas station fills back up every few days.

RedistributeHours shuffles existing zombies around the world so groups drift instead of standing still forever. Leave it at default unless you have a specific reason.

ZombieUpdateDelta tunes how often distant zombies get updated by the simulation. Raising it reduces CPU cost at the expense of zombies feeling a bit more static far from players. Worth knowing about if you're seeing CPU pressure.

FollowSoundDistance, RallyGroupSize, and RallyTravelDistance control the horde-formation behaviour – how far a sound pulls zombies in, how many form a group, how far that group wanders. I almost never touch these, but they're the honest tuning knobs for "zombies don't feel threatening enough" or "zombies feel too clumpy."

Zombie behaviour (inside ZombieLore)

Quick reference for the nested block:

Key Scale Notes
Speed 1=Sprinters, 2=Fast Shamblers, 3=Shamblers The one setting that changes the whole game
Strength 1=Superhuman, 2=Normal, 3=Weak
Toughness 1=Tough, 2=Normal, 3=Fragile
Cognition 1=Navigate+Doors, 2=Navigate, 3=Basic
Memory 1=Long, 2=Normal, 3=Short, 4=None
Sight 1=Eagle, 2=Normal, 3=Poor
Hearing 1=Pinpoint, 2=Normal, 3=Poor
Transmission 1=Blood+Saliva, 2=Saliva Only, 3=Everyone's Infected, 4=None
Mortality Bite → death timing See PZwiki for the full ladder
Reanimate How fast corpses turn See PZwiki

Anything you're not sure about, cross-reference against PZwiki's Server Settings page – it's kept current by the community and tracks B41/B42 differences.

Loot – no such thing as LootRarity

Big one: there is no LootRarity key. Every guide on the first page of Google shows a single LootRarity scalar, and it doesn't exist in the file. Zomboid uses separate keys per loot category, and each one runs on a 1–4 scale:

  • 1 = Extremely Rare
  • 2 = Rare
  • 3 = Normal
  • 4 = Abundant

The categories you'll actually see are FoodLoot, CannedFoodLoot, WeaponLoot, RangedWeaponLoot, AmmoLoot, MechanicsLoot, OtherLoot, LiteratureLoot, SurvivalGearsLoot, and MedicalLoot. So if you want a "low loot" world but still want medical supplies findable, you can set FoodLoot = 2 but MedicalLoot = 3.

Loot respawn is controlled by a separate set of keys:

  • LootRespawn – when (or whether) loot respawns in a container. 0 = never, other values map to time brackets; see PZwiki for the exact list.
  • HoursForLootRespawn – in-game hours between a container being eligible for respawn.
  • MaxItemsForLootRespawn – caps how many items respawn back into a single container.
  • HoursForCorpseRemoval – how long zombie corpses sit around before cleanup. Lower values help with performance on dense servers.

If you set any loot respawn at all, I'd keep MaxItemsForLootRespawn low (4-8) so returning to a looted gun shop doesn't just reset it to day-one conditions.

Time, date, and the apocalypse clock

  • StartYear, StartMonth, StartDay, StartTimeOfDay – when the apocalypse starts. StartDay is 1–31 depending on month (this is another one old guides get wrong). The default is July 9, which is canon.
  • DayLength – real minutes per in-game day. Options are roughly 15 min, 30 min, 1 hour, 2 hours, 3 hours, 12 hours, and 24 hours. I run most servers at 1 hour, which is the sweet spot between "you never see night" and "you spend your whole session watching paint dry."
  • WaterShutModifier – days until the water mains shut off. -1 means never. Default is around 14-30 days depending on preset.
  • ElecShutModifier – same idea for power.

A common friendly-server mistake is setting both shutoff values to -1. The game is kind of pointless with infinite water and power – half the survival loop disappears. I'd set them to 30+ for relaxed groups and keep the tension.

XP and progression

The key is XpMultiplier with a lowercase p. This catches people out. Default is 1.0. Double it for friendlier servers, leave it alone for vanilla feel. I wouldn't go above 3.0 – past that, skills stop mattering within a week and the game loses its grip.

Build 42 – now the stable build

Build 42 went to the stable public branch on 29 July 2026, so it's what a new server installs by default. The new crafting tiers, expanded foraging, animals, and basements all come with it, and the B42 sandbox adds crafting-tier availability, animal spawn rates, basement frequency, and foraging density – all configurable, and most of them documented inside the sandbox file itself on first boot. Still finishing a Build 41 world? We can pin your server to the legacy41 branch – B41 saves won't load on B42, so take a backup before switching either way. I've got a deeper write-up over at the B42 multiplayer survival guide.

Three loadouts I actually run

None of these are magic – they're starting points. Tweak and save a backup of your sandbox file between edits.

Casual co-op (2-8 players)

Zombies = 5            -- Low
ZombieLore.Speed = 3   -- Shamblers
FoodLoot = 3
MedicalLoot = 3
WeaponLoot = 3
DayLength = 3          -- 1 hour
WaterShutModifier = 30
ElecShutModifier = 30
PVP = false
XpMultiplier = 2.0
RespawnMultiplier = 0.0

Standard survival (10-20 players)

Zombies = 4            -- Normal
ZombieLore.Speed = 2   -- Fast Shamblers
FoodLoot = 3
WeaponLoot = 2
MedicalLoot = 2
DayLength = 3
WaterShutModifier = 14
ElecShutModifier = 14
PVP = false
XpMultiplier = 1.5

Hardcore PVP (20+ players)

Zombies = 3            -- High
ZombieLore.Speed = 1   -- Sprinters
FoodLoot = 2
WeaponLoot = 2
AmmoLoot = 2
DayLength = 4          -- 2 hours
WaterShutModifier = 7
ElecShutModifier = 7
PVP = true
SafetySystem = false
XpMultiplier = 1.0

Applying changes

  1. Save the file in Configuration Files.
  2. Restart the server from Service Settings or the top control bar.
  3. New settings load on boot.

Three important gotchas. First, most sandbox changes – population, loot rarity, zombie speed – only affect cells that haven't been generated yet. Already-explored map areas keep the settings they were born with. If you want a clean sweep, you need a world wipe (back it up first via Cloud Backup). Second, if you edit while the server is running, it'll overwrite your changes on the next shutdown. Stop first, edit second. Third, if you change anything in Service Settings, come back and check Mods= and WorkshopItems= afterwards – neither line is managed by the settings form, and a config regeneration can leave them empty.

If you hit errors on boot after a sandbox edit, 95% of the time it's a missing comma or a stray quote in the Lua. Open Log Viewer in the TCAdmin sidebar and search for "SandboxVars" – the line number in the error is usually accurate.

For the canonical reference on every single variable, PZwiki's Server Settings page is the one I actually keep open in a tab while editing. For troubleshooting boot issues or mod conflicts, see our Project Zomboid troubleshooting guide.

Join our Discord to chat with our staff and community!
Join Discord