PROJECT ZOMBOID · SERVER SETTINGS GUIDE · OCTOBER 2026

Project Zomboid servertest.ini Settings Explained (Build 42)

servertest.ini decides how your Project Zomboid server runs: who can find it, who can join, what anti-cheat does and which mods load. Here is what to set first, how changes take effect, and a searchable reference for every line in the file.

Know which file does what

servertest.ini handles server, network and admin behaviour. servertest_SandboxVars.lua controls the actual world rules.

Live change or restart?

Names, listing, chat, PvP and many rule toggles can reload live. Ports, Mods, WorkshopItems and Map get a full restart.

Set the first ten lines early

Privacy, player cap, save cadence, PvP stance, backups and RCON are the lines that shape how the server behaves from day one.

Back up the identity lines

Losing ResetID, ServerPlayerID, Seed or your mod and map lines causes far more trouble than a cosmetic setting ever will.

Where servertest.ini lives, and what the four server files do

On Windows, the default config folder is C:\Users\<you>\Zomboid\Server. On Linux, it is ~/Zomboid/Server. If you start the dedicated server without extra launch flags, it uses the default server name servertest, which means it will read and write files named servertest.ini, servertest_SandboxVars.lua, servertest_spawnpoints.lua and servertest_spawnregions.lua.

The important bit is that servertest is not special beyond being the default. Start the server with -servername NAME and the whole config set changes with it: a different .ini, a different SandboxVars file, a different save folder and a different account database. That is why a server can look as if its settings vanished when in fact it simply booted a different named profile. If you still need install and launch basics, the dedicated server setup guide covers the dedicated app, launch flags and folder layout.

  • servertest.ini: server identity, browser listing, ports, passwords, player cap, access rules, anti-cheat, backups, RCON, mods, Workshop IDs and map load order.
  • servertest_SandboxVars.lua: world rules such as zombie population, loot, farming, vehicles and progression. Those are covered separately in the sandbox settings guide.
  • servertest_spawnpoints.lua: exact spawn coordinates.
  • servertest_spawnregions.lua: which regions or professions feed the spawn menu.

Your live world save is separate again, under Zomboid/Saves/Multiplayer/servertest. Accounts and whitelist data are in Zomboid/db/servertest.db. Character records live in players.db inside the save folder. For troubleshooting, the main server log is server-console.txt.

.ini syntax is simple: one setting per line, written as key=value. Toggles use true or false. Some lines take lists, often separated by semicolons, such as WorkshopItems=. Map= uses semicolons as well, but there the order matters, and the comma in the default Muldraugh, KY is part of the map’s name, not a separator. The format of Mods= has changed during Build 42, so let the game or your panel write that line once and copy its format when you add more.

The four files in Zomboid/Server
For the default server name, servertest
servertest.ini
Name, listing, ports, passwords, access, anti-cheat, backups, mods and map order
How the server runs
servertest_SandboxVars.lua
Zombies, loot, utilities, time, XP and world rules
How the world plays
spawnpoints and spawnregions
servertest_spawnpoints.lua
servertest_spawnregions.lua
Where players start
Kept elsewhere
  • World save: Zomboid/Saves/Multiplayer/servertest
  • Accounts and whitelist: Zomboid/db/servertest.db
  • Server log: server-console.txt
Start with -servername NAME and every servertest above becomes NAME.
Edit the file set that matches your -servername. Settings that “vanish” are usually sitting in a different named set.

How changes take effect: live reload, command change, or full restart

Most servertest.ini values can be changed on a running server, then applied with reloadoptions. That is useful for rule toggles and text fields because the server re-reads its options without replacing the save. To change a single option from the console or admin chat, use changeoption and check the result with showoptions.

reloadoptions
showoptions

/changeoption PublicName "Fresh World EU"
/changeoption PauseEmpty "true"
/showoptions

Use the server console without a leading slash, or in-game admin chat with one. If you need the exact syntax for other admin tools, the full admin command list has the syntax for every other command.

Some changes deserve a full stop and start instead, because they affect how clients connect or what they must download:

  • DefaultPort, UDPPort and RCONPort: the server opens its ports when it starts.
  • Mods, WorkshopItems and Map: the server has to mount the right content, Steam has to fetch it if needed, and clients need to reconnect against the same list.
  • Anything in SandboxVars.lua: sandbox changes need a restart.

For hand edits, the safe habit is simple: stop the server, edit, start it again. A running server or a panel can write its own copy of the file and quietly undo a good edit.

Changed a line: how do you apply it?
You changed something in the server config
Is it in SandboxVars.lua?
Yes
RestartSandbox changes need a full stop and start.
No
Is it a port, Mods=, WorkshopItems= or Map=?
Yes
RestartPorts open at start-up, and players must download the same content.
No
Did you edit the file by hand?
Yes
reloadoptionsRe-reads servertest.ini on the running server. Check with showoptions.
No
Change a single option live with
changeoption OptionName “value”
Most servertest.ini lines apply live. Sandbox, ports and content lists are the ones that need a restart.

The first ten lines worth setting on any new server

These are the settings that define privacy, safety, persistence and admin control before anyone builds anything valuable. The defaults work, but they already make choices for you: anyone can register, PvP is on and the world only saves when players leave an area. Settle these before players build on one set of rules and find them changed later.

Public=false
PublicName=My PZ Server
Open=true
Password=
MaxPlayers=32
PauseEmpty=true
SaveWorldEveryMinutes=0
PVP=true
SafetySystem=true
RCONPassword=
Setting Default Private friends server Public community server Why set it now
PublicName My PZ Server Set a recognisable group name Set your community name This is the identity players see in browsers and admin tools. Clear naming prevents people joining the wrong world or saving the wrong favourite.
Public false false true Listing controls discovery. Once it is on, strangers can find you, so sort access out first.
Open true false true Open=false makes access admin-managed instead of self-registration. That is the cleanest way to keep a friends-only world closed.
Password blank Set one Usually leave blank once the server is truly public This is a join password, separate from accounts and whitelist rules. It keeps out anyone who doesn’t know it.
MaxPlayers 32 32 or lower Start at 32 The official notes warn that more than 32 can cause poor map streaming and desync. Admins don’t count towards the cap.
PauseEmpty true true false if you want an always-moving world This decides whether time and simulation stop when nobody is online. It changes how far crops, fuel and the clock move between sessions.
SaveWorldEveryMinutes 0 0 60 At 0 the map only saves when players leave a loaded area, so a crash can lose progress in busy spots. A timed save limits how much you can lose.
PVP / SafetySystem true / true PVP=false, SafetySystem=true PVP=true, SafetySystem=true These lines define the default risk model. If you do not want accidental friend-on-friend damage, decide that before the first firefight.
BackupsPeriod / BackupsCount 0 / 5 60 / 5 60 / 10 Minutes between automatic backup zips (0 is off) and how many to keep. They sit on the same disk as the world, so they protect against mistakes, not a lost server.
RCONPassword blank Leave blank unless you actively use RCON Set a strong password RCON is remote console access. Anyone with the password and port has admin console access.

If you close the server with Open=false, remember the access workflow changes as well: admins must create accounts, and on current Build 42 servers that also means adding the player’s SteamID. The admin and whitelist guide covers that process cleanly.

Every servertest.ini setting, by group

The reference tables below list every key, its default and what it does, grouped by job so you can scan server identity, networking, access, safehouses, anti-cheat, logging and the rest without hunting through one long alphabetic dump.

Access and joining (19)
SettingDefaultRangeWhat it does
Opentruetrue / falseClients may join without already having an account in the whitelist. If set to false, administrators must manually create username/password combos.
Passwordempty–Clients must know this password to join the server. (Ignored when hosting a server via the Host button)
Publicfalsetrue / falseShows the server on the in-game browser. (Note: Steam-enabled servers are always visible in the Steam server browser)
PublicNameMy PZ Server–Name of the server displayed in the in-game browser and, if applicable, the Steam browser
PublicDescriptionempty–Description displayed in the in-game public server browser. Typing will create a new line in your description
MaxPlayers321 to 100Maximum number of players that can be on the server at one time. This excludes admins. Default: 32
MaxAccountsPerUser00 to 2147483647Limits the number of different accounts a single Steam user may create on this server. Ignored when using the Hosts button.
DropOffWhiteListAfterDeathfalsetrue / falseRemove player accounts from the whitelist after death. This prevents players creating a new character after death on Open=false servers
PingLimit00 to 2147483647Ping limit, in milliseconds, before a player is kicked from the server. (Set to 0 to disable)
DenyLoginOnOverloadedServertruetrue / falseRefuses new logins while the server is overloaded.
LoginQueueEnabledfalsetrue / falseHolds joining players in a login queue.
LoginQueueConnectTimeout6020 to 1200Seconds a queued player has to connect once their turn comes.
AllowNonAsciiUsernamefalsetrue / falseAllow use of non-ASCII (cyrillic etc) characters in usernames
AllowCooptruetrue / falseAllow co-op/splitscreen players
ServerWelcomeMessageWelcome to Project Zomboid Multi…–First message players see in chat after logging in. Supports colour tags such as <RGB:1,0,0> and <LINE> for a new line.
SpawnPoint0,0,0–Force every new player to spawn at these set x,y,z world coordinates. (Ignored when 0,0,0)
SpawnItemsempty–Item types new players spawn with. Separate multiple item types with commas. Example: Base.Axe,Base.Bag_BigHikingBag
PlayerRespawnWithSelffalsetrue / falsePlayers can respawn in-game at the coordinates where they died
PlayerRespawnWithOtherfalsetrue / falsePlayers can respawn in-game at a split screen / Remote Play player's location
Network, ports and remote console (10)
SettingDefaultRangeWhat it does
DefaultPort162610 to 65535Default starting port for player data. If UDP, this is this one of two ports used.
UDPPort162620 to 65535Second UDP port the server uses (direct connection port). Needs to be open on your router and firewall.
UPnPtruetrue / falseAttempt to configure a UPnP-enabled internet gateway to automatically setup port forwarding rules. The server will fall back to default ports if this fails
server_browser_announced_ipempty–Set the IP from which the server is broadcast. This is for network configurations with multiple IP addresses, such as server farms
RCONPort270150 to 65535The port for the RCON (Remote Console)
RCONPasswordempty–RCON password (Pick a strong password)
SteamVACtruetrue / falseEnable the Steam VAC system
SteamScoreboardfalsetrue / falseShow Steam usernames and avatars in the Players list.
MaxPacketsPerSecond300100 to 1000Sets the limit for processing network packets from each client on the server.
MultiplayerStatisticsPeriod10 to 10Sets the multiplayer update period in seconds. Statistics is disabled if value is 0.
Mods, world identity and saving (12)
SettingDefaultRangeWhat it does
Modsempty–Mod IDs to enable (the id= line in each mod.info), separated by semicolons.
WorkshopItemsempty–List Workshop Mod IDs for the server to download. Each must be separated by a semicolon. Example: WorkshopItems=514427485;513111049
MapMuldraugh, KY–Map folder names to load, top to bottom, separated by semicolons. Muldraugh, KY goes last.
DoLuaChecksumtruetrue / falseKicks players whose game files don’t match the server’s. Known to give false positives on Linux servers, where it is often set to false.
ResetIDrandom number0 to 2147483647Marks a soft reset. If it no longer matches what a player has, they must make a new character. Back it up with the file.
ServerPlayerIDempty–Identifies characters as belonging to this server. If it changes, players must make new characters. Back it up with the file.
Seedrandom text–The worldgen seed used to generate the world. If you want to change this, put a new value in and delete map_worldgen.bin in your save directory.
PauseEmptytruetrue / falseGame time stops when there are no players online
SaveWorldEveryMinutes00 to 2147483647Loaded parts of the map are saved after this set number of real-world minutes have passed. (The map is usually saved only after clients leave a loaded area)
FastForwardMultiplier40.01.00 to 100.00Governs how fast time passes while players sleep. Value multiplies the speed of the time that passes during sleeping.
SleepAllowedfalsetrue / falsePlayers are allowed to sleep when their survivor becomes tired, but they do not NEED to sleep
SleepNeededfalsetrue / falsePlayers get tired and need to sleep. (Ignored if SleepAllowed=false)
Built-in backups (4)
SettingDefaultRangeWhat it does
BackupsCount51 to 300How many backups of each type are kept before the oldest is replaced.
BackupsOnStarttruetrue / falseMakes a backup each time the server starts.
BackupsOnVersionChangetruetrue / falseMakes a backup when the game version changes.
BackupsPeriod00 to 1500Minutes between automatic backups while the server runs. 0 turns periodic backups off.
PvP and the safety system (12)
SettingDefaultRangeWhat it does
PVPtruetrue / falsePlayers can hurt and kill other players
SafetySystemtruetrue / falsePlayers can enter and leave PVP on an individual basis. A player can only hurt another player when at least one of them is in PVP mode – as shown by the unobscured skull and crossbones on the left of the screen. When SafetySystem=false, players are free to hurt each other at any time if PVP is enabled.
ShowSafetytruetrue / falseDisplay a skull icon over the head of players who have entered PVP mode
SafetyToggleTimer20 to 1000The time it takes for a player to enter and leave PVP mode
SafetyCooldownTimer30 to 1000The delay before a player can enter or leave PVP mode again, having recently done so
PVPMeleeDamageModifier30.00.00 to 500.00Damage multiplier for PVP melee attacks.
PVPFirearmDamageModifier50.00.00 to 500.00Damage multiplier for PVP ranged attacks.
PVPMeleeWhileHitReactionfalsetrue / falseIf true, player can hit again when struck by another player.
PVPLogToolChattruetrue / falsePVP is logged to admin chat
PVPLogToolFiletruetrue / falsePVP is logged by the server
PlayerBumpPlayerfalsetrue / falseGoverns whether players bump (and knock over) other players when running through them.
KnockedDownAllowedfalsetrue / falseWIP: Activating this setting may cause visual desynchronization of player positions.
Safehouses, factions and war (20)
SettingDefaultRangeWhat it does
PlayerSafehousefalsetrue / falseBoth admins and players can claim safehouses
AdminSafehousefalsetrue / falseOnly admins can claim safehouses
SafehouseAllowTrepasstruetrue / falseAllow non-members to enter a safehouse without being invited
SafehouseAllowFiretruetrue / falseAllow fire to damage safehouses
SafehouseAllowLoottruetrue / falseAllow non-members to take items from safehouses
SafehouseAllowRespawnfalsetrue / falsePlayers will respawn in a safehouse that they were a member of before they died
SafehouseDaySurvivedToClaim00 to 2147483647Players must have survived this number of in-game days before they are allowed to claim a safehouse
SafeHouseRemovalTime1440 to 2147483647Players are automatically removed from a safehouse they have not visited for this many real-world hours
SafehouseAllowNonResidentialfalsetrue / falseGoverns whether players can claim non-residential buildings.
SafehousePreventsLootRespawntruetrue / falseItems will not respawn in buildings that players have claimed as a safehouse
DisableSafehouseWhenOwnerConnectedfalsetrue / falseSafehouse acts like a normal house if an owner of the safehouse is connected (so secure when the owner is offline)
AllowDestructionBySledgehammertruetrue / falseAllow players to destroy world objects with sledgehammers
SledgehammerOnlyInSafehousefalsetrue / falseAllow players to destroy world objects only in their safehouse (require AllowDestructionBySledgehammer to true).
Warfalsetrue / falseTurns on safehouse wars, controlled by the three War settings.
WarStartDelay60060 to 2147483647Time in seconds before the war starts.
WarDuration360060 to 2147483647War duration in seconds.
WarSafehouseHitPoints30 to 2147483647Safehouse hit points limit.
Factiontruetrue / falsePlayers can create factions when true
FactionDaySurvivedToCreate00 to 2147483647Players must survive this number of in-game days before being allowed to create a faction
FactionPlayersRequiredForTag11 to 2147483647Number of players required as faction members before the faction owner can create a group tag
Chat, voice, radio and Discord (26)
SettingDefaultRangeWhat it does
GlobalChattruetrue / falseToggles global chat on or off.
ChatStreamss,r,a,w,y,sh,f,all–Chat channels players can use: s say, r radio, a admin, w whisper, y yell, sh safehouse, f faction, all everyone. Remove one to disable it.
ChatMessageCharacterLimit20064 to 1024Maximum length of a single chat message.
ChatMessageSlowModeTime31 to 30Slow-mode delay for chat, in seconds between messages.
AnnounceDeathfalsetrue / falseIf checked, every time a player dies a global message will be displayed in the chat
AnnounceAnimalDeathfalsetrue / falseIf checked, every time an animal dies a global message will be displayed in the chat
VoiceEnabletruetrue / falseVOIP is enabled when checked
VoiceMinDistance10.00.00 to 100000.00The minimum tile distance over which VOIP sounds can be heard.
VoiceMaxDistance100.00.00 to 100000.00The maximum tile distance over which VOIP sounds can be heard.
Voice3Dtruetrue / falseToggle directional audio for VOIP
DiscordEnablefalsetrue / falseEnables global text chat integration with a Discord channel
DiscordTokenempty–Discord bot access token
DiscordChatChannelempty–The Discord chat channel name
DiscordLogChannelempty–The Discord logs channel name
DiscordCommandChannelempty–The Discord commands channel name
WebhookAddressempty–The Slack incoming webhook URL
BadWordListFileempty–Path to the file with the list of words to be prohibited. Each word must be on a separate line
GoodWordListFileempty–Path to the file with the list of words that should be allowed, even if they contain bad word. Each word should be on a separate line.
BadWordPolicy3–What to do with the sender of a bad word in the chat: 1 – ban, 2 – kick, 3 – record the violation in the database, 4 – mute
BadWordReplacement[HIDDEN]–The symbol or piece of text that will replace the bad word
DisableRadioStafffalsetrue / falseDisables radio transmissions from players with an access level
DisableRadioAdmintruetrue / falseDisables radio transmissions from players with 'admin' access level
DisableRadioGMtruetrue / falseDisables radio transmissions from players with 'gm' access level
DisableRadioOverseerfalsetrue / falseDisables radio transmissions from players with 'overseer' access level
DisableRadioModeratorfalsetrue / falseDisables radio transmissions from players with 'moderator' access level
DisableRadioInvisibletruetrue / falseDisables radio transmissions from invisible players
Names, map and player list (8)
SettingDefaultRangeWhat it does
DisplayUserNametruetrue / falseDisplay usernames above player's heads in-game.
ShowFirstAndLastNamefalsetrue / falseDisplay first & last name above player's heads.
MouseOverToSeeDisplayNametruetrue / falseIf true, players will have to mouse over someone to see their display name.
HidePlayersBehindYoutruetrue / falseIf true, automatically hide the player you can't see (like zombies).
MapRemotePlayerVisibility11 to 4Controls display of remote players on the in-game map. 1=Hidden 2=Friends 3=Friends and nearby players 4=Everyone
ShowCoordinatesfalsetrue / falseShows player character coordinates in the lower right corner.
DisableScoreboardfalsetrue / falseDisables scoreboard.
HideAdminsInPlayerListfalsetrue / falseHides admins in the player list.
World objects, vehicles and clutter (9)
SettingDefaultRangeWhat it does
NoFirefalsetrue / falseAll forms of fire are disabled – except for campfires
CarEngineAttractionModifier0.50.00 to 10.00Modify the range of zombie attraction to cars. (Lower values can help with lag.)
ItemNumbersLimitPerContainer00 to 9000Maximum number of items in one container, counting every small item such as each nail. 0 means no limit.
BloodSplatLifespanDays00 to 365Number of days before old blood splats are removed. Removal happens when map chunks are loaded. Zero means they will never disappear
RemovePlayerCorpsesOnCorpseRemovalfalsetrue / falseIf enabled, when HoursForCorpseRemoval triggers, it will also remove player's corpses from the ground.
TrashDeleteAllfalsetrue / falseIf true, player can use the "delete all" button on bins.
DisableVehicleTowingfalsetrue / falseDisables vehicle towing
DisableTrailerTowingfalsetrue / falseDisables trailer towing
DisableBurntTowingfalsetrue / falseDisables burnt vehicle towing
Logs and anti-cheat (13)
SettingDefaultRangeWhat it does
ClientCommandFilter-vehicle.*;+vehicle.damageWindow…–Semicolon-separated list of commands that will not be written to the cmd.txt server log. For example: -vehicle. Inputting * means do NOT write any vehicle command. Inputting: +vehicle.installPart means DO write that command
ClientActionLogsISEnterVehicle;ISExitVehicle;IST…–Semicolon-separated list of actions that will be written to the ClientActionLogs.txt server log.
PerkLogstruetrue / falseTrack changes in player perk levels in PerkLog.txt server log
AntiCheatSafety2 (Kick)1 Ban, 2 Kick, 3 Log, 4 DisableResponse mode for safety-system anti-cheat checks.
AntiCheatSpeed2 (Kick)1 Ban, 2 Kick, 3 Log, 4 DisableResponse mode for character-speed anti-cheat checks.
AntiCheatNoClip4 (Disable)1 Ban, 2 Kick, 3 Log, 4 DisableResponse mode for character no-clipping anti-cheat checks.
AntiCheatHit2 (Kick)1 Ban, 2 Kick, 3 Log, 4 DisableResponse mode for character-hit anti-cheat checks.
AntiCheatPacketException4 (Disable)1 Ban, 2 Kick, 3 Log, 4 DisableResponse mode for packet-exception anti-cheat checks.
AntiCheatPermission2 (Kick)1 Ban, 2 Kick, 3 Log, 4 DisableResponse mode for player-permission anti-cheat checks.
AntiCheatXP2 (Kick)1 Ban, 2 Kick, 3 Log, 4 DisableResponse mode for player-XP anti-cheat checks.
AntiCheatSafeHouse2 (Kick)1 Ban, 2 Kick, 3 Log, 4 DisableResponse mode for safehouse anti-cheat checks.
AntiCheatPlayer2 (Kick)1 Ban, 2 Kick, 3 Log, 4 DisableResponse mode for player anti-cheat checks.
AntiCheatChecksum2 (Kick)1 Ban, 2 Kick, 3 Log, 4 DisableResponse mode for checksum anti-cheat checks.
Other lines in the file (11)
SettingDefaultRangeWhat it does
UsernameDisguisesfalsetrue / falseLeave at the default unless a mod or guide for that feature tells you to change it.
HideDisguisedUserNamefalsetrue / falseLeave at the default unless a mod or guide for that feature tells you to change it.
SwitchZombiesOwnershipEachUpdatefalsetrue / falseLeave at the default unless a mod or guide for that feature tells you to change it.
SafetyDisconnectDelay600 to 60Leave at the default unless a mod or guide for that feature tells you to change it.
SafehouseDisableDisguisestruetrue / falseLeave at the default unless a mod or guide for that feature tells you to change it.
MaxSafezoneSize200000 to 2147483647Leave at the default unless a mod or guide for that feature tells you to change it.
SneakModeHideFromOtherPlayerstruetrue / falseLeave at the default unless a mod or guide for that feature tells you to change it.
UltraSpeedDoesnotAffectToAnimalsfalsetrue / falseLeave at the default unless a mod or guide for that feature tells you to change it.
SpeedLimit70.010.00 to 150.00Leave at the default unless a mod or guide for that feature tells you to change it.
BanKickGlobalSoundtruetrue / falseLeave at the default unless a mod or guide for that feature tells you to change it.
UsePhysicsHitReactionfalsetrue / falseLeave at the default unless a mod or guide for that feature tells you to change it.

Settings that change performance or network load

Not every lag complaint is a hardware problem. A handful of lines change how much the server has to simulate, store or send, and they are worth checking before you buy more RAM.

  • MaxPlayers: more players means more loaded areas, more zombie simulation, more inventory updates and more map streaming. That compounded load is why the official notes warn about going above 32.
  • SaveWorldEveryMinutes: periodic saves reduce rollback after a crash, but they also create regular disk work. If freezes line up with the save timer, lengthen the interval.
  • MaxPacketsPerSecond: this caps how many packets per client the server will process. Raising it can admit more network chatter and CPU work; lowering it can reject abusive or noisy traffic, but too low can punish legitimate busy clients.
  • CarEngineAttractionModifier (default 0.5): how far car noise pulls zombies. The game’s own notes say lower values can help with lag, because fewer zombies are dragged into active pathfinding around drivers.
  • ItemNumbersLimitPerContainer (default 0, no limit): caps items per container, counting every nail separately. It stops giant hoarder crates, but a limit of 50 really does mean 50 nails, so set it generously.
  • BloodSplatLifespanDays (default 0, never): removes old blood splats when chunks load, which keeps long-running worlds tidier.

If these settings are already sensible and the save still stutters as the world grows, check the Java heap as well. Heap that is too small causes constant garbage collection and worsening stutter; heap set too close to the machine limit risks the process being killed with no clean save because Java also uses memory outside the heap. For broader diagnosis, including when to tune the config and when the machine simply needs more headroom, use the Project Zomboid server lag guide.

When tuning is no longer enough

A tidy servertest.ini helps, but it can’t fix a machine that is out of CPU, memory or disk. If your player count, world age and mod list are all growing, compare hosts and plans before the next season.

Compare the best Project Zomboid server hosts

Safehouse, faction and PvP settings work as one rules system

Treat these lines as a single policy, not separate toggles. PVP decides whether player damage exists at all. If PVP=false, the safety settings are largely irrelevant because nobody can hurt anyone anyway. If PVP=true and SafetySystem=true, each player can toggle safety status; at least one of the two players has to be in PvP mode for damage to happen. That is why this system feels forgiving for mixed groups but still allows consensual fights.

ShowSafety exposes that state in-world so players can read intent. SafetyToggleTimer (default 2) is how long it takes to switch PvP mode on or off, which stops instant flips mid-fight, and SafetyCooldownTimer (default 3) is the wait before a player can switch again.

Safehouses then decide where those PvP rules should be softened or hardened. PlayerSafehouse and AdminSafehouse decide who can claim. SafehouseDaySurvivedToClaim gates how quickly players lock down property. SafehouseAllowTrepass, SafehouseAllowLoot and SafehouseAllowFire determine whether a safehouse is simply a home marker or an actual protection layer. DisableSafehouseWhenOwnerConnected makes a safehouse behave like a normal house while an owner is online, so it is only secure while they are away. That suits raid-focused communities and feels odd on casual co-op worlds.

Factions add the social layer on top. Faction=true allows formal groups; the day-survived and tag requirements slow down instant clan branding on a fresh wipe. War lets safehouses be attacked during a declared war: WarStartDelay (600 seconds) is the warning time, WarDuration (3,600 seconds) is how long it lasts and WarSafehouseHitPoints (3) is the safehouse hit point limit. It makes conflict scheduled rather than random vandalism.

When can one player hurt another?
SettingsBoth players in safe modeAt least one in PvP mode
PVP=falseNoNo
PVP=true, SafetySystem=trueNoYes
PVP=true, SafetySystem=falseYesYes
With SafetySystem on, players switch PvP mode themselves. ShowSafety puts a skull over anyone in PvP mode.
PVP decides whether player damage exists at all. SafetySystem decides whether each player gets to opt in.

Anti-cheat response modes: what the numbers mean, and how strict to start

All AntiCheat* lines use the same response scale: 1 Ban, 2 Kick, 3 Log and 4 Disable. Most checks default to 2, a sensible middle ground: the cheater is removed at once, but a false positive costs an innocent player a reconnect rather than a ban. AntiCheatNoClip and AntiCheatPacketException ship at 4, switched off.

For a new public community, start conservative. Kick or log first, watch the pattern in the server logs, and only move a check to ban once you know what normal play triggers on your server. Permanent bans are admin work: appeals, mistaken matches and trust damage all cost more than a short kick.

Keep DoLuaChecksum=true in mind here too. It is not one of the numbered anti-cheat lines, but it does kick clients whose Lua files do not match the server. That protects against tampered files, yet it is also a known source of false positives on some Linux setups, so if players start failing with file-mismatch errors after a clean update, rule that out before assuming cheating.

The lines you must never lose

Some settings are replaceable. These are not. Back up your .ini together with the save and the database, and keep a copy outside the live machine. The backup and restore guide goes through the process, but the short version is simple: if these lines change unexpectedly, players feel it immediately.

  • ResetID and ServerPlayerID: if the numbers no longer match what a player’s client expects, that player has to create a new character. The game’s own notes advise backing them up somewhere safe.
  • Seed: this is the world generation seed. Changing it does nothing to an existing world; to generate with a new seed you also need to remove map_worldgen.bin from the save after backing it up.
  • Mods, WorkshopItems and Map: these define the content set and map load order. They decide what the server loads, what clients must download and, with map mods, which cells win when two maps overlap.

On map load order, later entries overwrite earlier ones where they intersect, and the default Muldraugh, KY belongs at the end. On a live save, adding or removing mods is the point where discipline matters most: back up first, restart fully, and do not remove a mod casually if its items or tiles already exist in the world. Removed content can leave broken objects behind in the save. For the messy bits of Build 42 mod formatting and map order, the Workshop and map mods guide covers it in detail.

Symptom, likely cause, first fix

When something feels wrong, start with the setting that explains the behaviour before touching half the file. This table covers the failures that come up most often after a rules change, migration or fresh Build 42 setup.

Symptom Likely cause First fix
Server does not show in the in-game browser Public=false Set Public=true, give it a PublicName, reload or restart, and remember Steam-enabled servers still appear in the Steam browser even when not public in-game.
Strangers can create accounts and join Open=true Set Open=false, add the players you want manually, and add a join Password if you want a second layer.
World time keeps moving when nobody is online PauseEmpty=false Set PauseEmpty=true if you want crops, fuel and the clock to stop between sessions.
Players are kicked after a mod update with file mismatch errors DoLuaChecksum=true is rejecting clients, or the mod list differs between server and client Make sure Mods and WorkshopItems match, restart fully, and if the server is on Linux and the errors look false, try DoLuaChecksum=false as a diagnostic step.
Changed mods or map, but clients still load the old state The server reloaded options instead of restarting after Mods, WorkshopItems or Map edits Stop the server and start it cleanly so Steam downloads and client content checks happen from scratch.
Players suddenly have to create new characters ResetID or ServerPlayerID changed Restore the backed-up values from the previous .ini before letting more people join.
Whitelist server still rejects a valid player The account exists, but the SteamID was not added (needed since 42.13.2) Add the username and SteamID, then have the player reconnect with the same account details.
New seed appears to do nothing Seed was changed without removing map_worldgen.bin Back up the save, delete map_worldgen.bin, then start the server again.
Edits looked correct, then vanished after restart The wrong -servername was used, or another tool wrote over the file on shutdown Stop the server, confirm the active server name, edit that file set, then start the server again.

Project Zomboid server FAQ

Where is servertest.ini on a dedicated server?

By default it lives in the user’s Zomboid server config folder: C:\Users\<you>\Zomboid\Server on Windows and ~/Zomboid/Server on Linux. If you start the server with -servername NAME, the file name changes to NAME.ini. Make sure you edit the file that matches the server name actually used at launch.

Do I need to restart after changing servertest.ini?

Not always. Many options can be applied live with reloadoptions or changed directly with /changeoption, then checked with showoptions. Use a full restart for port changes and for Mods, WorkshopItems or Map changes, because clients and Steam need to pick up the same content set.

What is the difference between servertest.ini and SandboxVars.lua?

servertest.ini covers server operation: listing, access, ports, admin, anti-cheat, backups, mod loading and similar non-world rules. SandboxVars.lua controls the world itself, such as zombie population, loot and many survival rules. In practice, if a setting changes how the world plays, it is usually Sandbox; if it changes how the server runs, it is usually the .ini.

How do I make my server private?

Set Public=false so it is not listed in the in-game browser, set Open=false so players cannot self-register, and add a join Password if you want a simple shared gate as well. Then create the allowed accounts manually and add their SteamIDs before they join. That gives you browser privacy, account control and a password gate together instead of relying on only one layer.

Why did my settings reset after a restart?

The usual cause is that the file was edited while the server, a panel or the Host screen later wrote its own copy over it, or the server started with a different -servername and loaded another file set. Stop the server, confirm the active server name, edit the correct files, then start it again. If it keeps happening on a rented server, make the change in the panel’s own settings page instead of the file.

More Project Zomboid server guides

The rest of our Project Zomboid server guides, plus the host comparison.

Defaults are from the Build 42 stable server files (42.20 onwards). Swap servertest for your own -servername if you use one.

About the author
Linus Pierre – founder of Game Server Hosting
GSH Founder

Lifelong survival gamer · Server nerd · Sweden/UK

I'm an avid gamer from Sweden with a lot of time spent in England in the last 5 years who loves survival games — ARK, Palworld, Valheim, Sons of the Forest, V Rising and plenty of WoW and Dota 2 on the side. I created this site to help other gamers find the best server hosting without wasting money on laggy providers.

I've been hosting my own game servers since Minecraft first came out, from Hamachi LAN nights with friends to modded survival worlds and dedicated servers for ARK, Valheim and Palworld. Years of running, breaking and fixing servers taught me what actually makes a host worth paying for, and that's what I share here.

How we compare: Prices, specs and server locations are checked against each provider's own website and compared on price-to-performance.

Similar Posts