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.
- Log into control.low.ms.
- Open your Project Zomboid service.
- Click Configuration Files in the sidebar.
- Pick
servertest.iniorservertest_SandboxVars.luafrom 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 — you'll find the credentials under Service Settings. 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. PZ rewrites both files on shutdown and will happily clobber your changes if it's running 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.
MaxPlayers defaults to 64. That's the stock value from the game, not a LOW.MS quirk. In practice I'd size it to your plan — PZ is surprisingly heavy on CPU per player once the horde starts grinding, so "64 because that's the default" is rarely the right call. 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
PauseEmptydefaults tofalsein a stockservertest.ini. If you want the world to stop ticking when nobody's online — which is usually what small groups want — flip it totrueyourself.SleepAllowed/SleepNeededare 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.GlobalChaton 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 Mod Manager first
Here's where I'd steer you away from editing the ini at all. PZ's TCAdmin panel on LOW.MS has a proper Mod Manager in the sidebar, with a curated Steam Workshop browser and one-click install. It writes the WorkshopItems= and Mods= lines for you and keeps them in the right order, which matters more than you'd think.
Use Mod Manager as the primary path. Drop into Configuration Files and hand-edit servertest.ini only if you're doing something Mod Manager doesn't cover — like pinning a specific version or applying a load order that a modpack author has hardcoded.
For reference, the manual format looks like this:
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 the mod's internal folder name, which you'll find inside the mod's .info file on disk. These have to match exactly or the mod silently fails to load.
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. LOW.MS runs its own Cloud Backup on top of all this (also in the sidebar), so even if PZ's in-game backups get mangled you've got 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 |
64 | Concurrent player cap |
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= Insane2= Very High3= High4= 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.7 → 1.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 Rare2= Rare3= Normal4= 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.StartDayis 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.-1means 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 — a word of caution
Build 42 is still on the unstable branch as I'm writing this in early 2026. Indie Stone shipped MP support in 42.13 in December 2025, but it's very much a stress-test release and they've publicly said they'd recommend twenty players or fewer until things stabilise. It's not yet a drop-in replacement for B41.
If you want the new crafting tiers, expanded foraging, animals, and basements, B42 is where to be. If you want a stable 30-slot server you can leave running for a month without drama, stick with B41 for now. 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. 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
- Save the file in Configuration Files.
- Restart the server from Service Settings or the top control bar.
- New settings load on boot.
Two 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 PZ will overwrite your changes on the next shutdown. Stop first, edit second.
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.