Skip to content

Server Config Files: Commands.dat, Players.dat, Config.json

A 57 Studios™ guide to the three core configuration files that govern every Unturned™ dedicated server. Understanding these files is foundational to running a stable, well-configured server — whether that server is a private allowlist environment, a public community server, or a roleplay environment with a curated workshop modlist.

This article covers what each file does, where it lives, which fields it exposes, the order in which the files are loaded at startup, and how to walk through a complete working configuration from scratch. Each file is covered in its own section with a full field reference, an annotated example, and a set of common operator mistakes and how to avoid them.

Unturned dedicated server folder structure showing the Servers directory and server-named subfolders

Overview

Unturned™ uses three primary configuration files for a dedicated server. Each file covers a distinct area of server management.

FileScopeFormatLocation (relative to server root)
Commands.datStartup commands executed line-by-line at server bootPlain text, one command per lineServers/<servername>/Server/Commands.dat
Players.datPlayer whitelist, bans, and admin privilegesBinary (managed by Unturned)Servers/<servername>/Server/Players.dat
Config.jsonServer settings: name, password, PvP mode, gameplay valuesJSONServers/<servername>/Server/Config.json

The server root directory is the folder where Unturned.exe or the SteamCMD-installed server binary lives. On a Windows installation this is typically C:\Program Files (x86)\Steam\steamapps\common\U3DS\ for a SteamCMD install, or a custom path for a manually placed install. On Linux the path follows the same U3DS/ convention, typically at /home/<user>/U3DS/.

Cross-reference

For an initial server installation walkthrough, see Setting Up Your Server Panel. That article covers SteamCMD installation, initial directory creation, and first-launch validation. This article assumes the server is already installed and the Servers/<servername>/Server/ directory exists.

File locations

All three configuration files live in the same directory:

<Unturned Server Root>/
└── Servers/
    └── <servername>/
        └── Server/
            ├── Commands.dat
            ├── Players.dat
            └── Config.json

The <servername> is whatever value you pass to the -batchmode launcher with the +secureserver or +lanserver argument. If you launch the server with +secureserver MySurvivalServer, the configuration files live at Servers/MySurvivalServer/Server/. If the Server/ directory does not exist on first launch, Unturned™ creates it and writes default versions of both Config.json and Commands.dat.

File encoding

Commands.dat is a UTF-8 plain-text file with Unix or Windows line endings. Do not save it with UTF-16 or UTF-16 LE encoding (which is the Windows PowerShell default for Out-File and Set-Content without -Encoding utf8). An incorrectly encoded Commands.dat will cause the server to silently skip all commands on startup.

Order-of-load semantics

The server loads configuration in this sequence:

  1. Config.json is read first. It establishes the server's name, password, player cap, PvP flag, cheat flag, and gameplay value overrides before any other subsystem initializes.
  2. Commands.dat is processed second. Each line is executed as a server console command in the order it appears in the file, top to bottom. This is where workshop content, map selection, difficulty, and cycle configuration are applied.
  3. Players.dat is loaded when the ban/whitelist subsystem initializes, after the map is loaded. Whitelist checks and ban enforcement start applying only after this load completes.

This sequence has operational implications:

  • A command in Commands.dat that references a map (e.g., Map PEI) must appear before any commands that depend on map-specific objects.
  • Config.json changes take effect on the next server restart. You cannot hot-reload Config.json without restarting.
  • Players.dat is written by the server whenever a ban, unban, admin grant, or whitelist change occurs at runtime. Do not edit Players.dat by hand while the server is running; the server will overwrite your changes when it next writes the file.

Do not edit Players.dat manually while the server is running

Players.dat is a binary file managed exclusively by the Unturned™ server process. Editing it with a hex editor or any other tool while the server is running will cause data corruption when the server next writes the file. Manage whitelist and ban entries through server console commands or through RCON. See the Server Commands Reference for the correct commands.


Commands.dat

Commands.dat is a plain-text file where each line is a server console command. The server executes each command in order at startup, exactly as if a server operator typed it into the console. This is the primary mechanism for configuring map, difficulty, max players, workshop content, and cycle parameters.

File format

# Lines beginning with # are comments. Comments are ignored.
# Blank lines are also ignored.

Map PEI
MaxPlayers 24
Mode Normal
Cycle 3600

Comments begin with #. Blank lines are ignored. Commands are case-insensitive. Arguments are separated by a single space. Arguments with spaces in them should be quoted — verify with the Smartly Dressed Games documentation whether specific commands support quoted arguments, as not all do.

Commands.dat field reference

The following table covers the most commonly used Commands.dat entries for a dedicated server. For the complete list of supported console commands, see the Smartly Dressed Games server documentation and the Server Commands Reference.

Map and game mode

CommandArgumentsExamplePurpose
Map<mapName>Map PEISets the map the server loads. Must match an installed map's folder name exactly (case-sensitive on Linux).
ModeEasy | Normal | HardMode NormalSets the global difficulty preset.
Cycle<seconds>Cycle 3600Sets the day/night cycle length in seconds. 3600 = 1 hour per full cycle.
Gold(none)GoldRestricts the server to Gold-tier players only. Remove this line to allow all players.
PerspectiveFirst | Third | Both | VehiclePerspective BothSets the allowed camera perspective.

Player limits and access

CommandArgumentsExamplePurpose
MaxPlayers<count>MaxPlayers 24Sets the maximum concurrent player count. The engine maximum is 48.
Password<password>Password mysecretpassSets a password for the server. Remove this line for a public server.
Cheats(none)CheatsEnables in-game cheat commands (e.g., @give, @teleport). Not recommended for public servers.
Whitelisted(none)WhitelistedEnables whitelist mode. Only players in Players.dat's whitelist can join.

Workshop content

CommandArgumentsExamplePurpose
Workshop_Download_ID<steamWorkshopID>Workshop_Download_ID 2480303126Adds a Workshop item to the server's download list. Repeat this line for each Workshop item.

Workshop loading

Workshop_Download_ID is covered in depth in the next article, Workshop Content on Dedicated Servers. That article covers autodownload behavior, WorkshopDownloadConfig.json, version pinning, and client-side sync.

Network and RCON

CommandArgumentsExamplePurpose
Port<port>Port 27015Sets the server's game port. The query port is automatically Port + 1.
RCON<password> <port>RCON mypassword 27016Enables RCON with the specified password and port.
Timeout<seconds>Timeout 30Sets the connection timeout. Players who do not respond within this window are kicked.

Miscellaneous

CommandArgumentsExamplePurpose
Name<serverName>Name My ServerOverrides the server's display name. This is separate from the Name field in Config.json. If both are set, this command takes precedence.
Welcome<message>Welcome Welcome to the server.Sets the join message displayed to players when they connect.
LoadOut<itemID> <itemID> ...LoadOut 363 255Grants all players the specified items on spawn. Separate multiple items with spaces.

Example Commands.dat walkthrough

The following is a complete annotated Commands.dat for a 24-player public survival server with a curated workshop modlist.

# =============================================
# Commands.dat for a 24-player public server
# Map: PEI | Mode: Normal | Cycle: 1 hour
# =============================================

# --- Core server identity ---
Name 57 Studios Survival | PEI | 24 Players
Welcome Welcome to the 57 Studios survival server. Read the rules at discord.gg/example.

# --- Map and game mode ---
Map PEI
Mode Normal
Perspective Both
Cycle 3600

# --- Player limits ---
MaxPlayers 24

# --- Network ---
Port 27015

# --- Workshop content ---
# Each Workshop_Download_ID line adds one item to the server's download queue.
# The server downloads and loads them in order before the map finishes loading.
Workshop_Download_ID 2480303126
Workshop_Download_ID 2312075082
Workshop_Download_ID 1991340199

# --- RCON for remote administration ---
RCON adminpasswordhere 27016

Order matters for Workshop_Download_ID

All Workshop_Download_ID lines must appear in Commands.dat before the server enters its map-load phase. Place them before any map-dependent commands. If a workshop item fails to download, the server logs a warning and continues; the item's content will not be available in-game.


Players.dat

Players.dat is a binary file that stores three categories of player data: the ban list, the whitelist, and the admin list. The Unturned™ server reads and writes this file; direct editing is not supported or recommended.

Managing Players.dat via console commands

All operations on Players.dat are performed through server console commands. The following commands are the ones that interact with Players.dat:

CommandPurposeExample
admin <steamID64>Grants admin privileges to the player. Writes to Players.dat.admin 76561198012345678
unadmin <steamID64>Removes admin privileges.unadmin 76561198012345678
ban <steamID64> <durationSeconds> <reason>Bans the player for the specified duration. 0 = permanent.ban 76561198012345678 0 Cheating
unban <steamID64>Removes the ban for the player.unban 76561198012345678
permit <steamID64>Adds the player to the whitelist. Requires Whitelisted in Commands.dat.permit 76561198012345678
unpermit <steamID64>Removes the player from the whitelist.unpermit 76561198012345678
slay <playerNameOrID>Kills the specified player immediately.slay PlayerName
kick <playerNameOrID> <reason>Kicks the specified player with a reason.kick PlayerName Violating rules

Where to find SteamID64

A player's SteamID64 is a 17-digit number beginning with 7656. You can look it up at steamid.io or steamidfinder.com using the player's Steam profile URL or custom username.

Whitelist mode

Whitelist mode restricts server joins to players who have been explicitly permitted. To enable whitelist mode:

  1. Add Whitelisted to Commands.dat.
  2. Restart the server.
  3. Add players to the whitelist with permit <steamID64> via the server console or RCON.

When Whitelisted is active and a non-permitted player attempts to join, the server rejects the connection with the message "You are not whitelisted on this server." This message appears on the client; the server logs the rejection with the player's SteamID64.

Permanent vs. temporary bans

Use permanent bans (0) for players caught cheating, using exploits, or engaging in harassment. Use temporary bans for first-time rule violations where you want to give the player an opportunity to return after a cooling-off period. Log ban reasons consistently — they are referenced if a player disputes a ban.

Ban duration examples

Duration valueBehavior
0Permanent ban. Does not expire.
36001-hour temporary ban.
8640024-hour temporary ban.
6048007-day temporary ban.
259200030-day temporary ban.

Admin levels

The admin command grants full server admin privileges. Admins can execute all console commands, spawn items, teleport, and bypass whitelist checks. There is no built-in admin role tiering in vanilla Unturned™ — all admins have equivalent permissions.

For tiered admin roles (e.g., moderator vs. full admin), the community convention is to use a plugin framework (RocketMod or OpenMod). See RocketMod and OpenMod Plugin Basics for the plugin setup walkthrough.

Admin SteamIDs are stored permanently

Once a SteamID64 is granted admin status, it persists in Players.dat until explicitly removed with unadmin. A server restart does not clear admin status. Review your admin list periodically and remove players who no longer need admin access.


Config.json

Config.json is a JSON file that sets the server's gameplay parameters, multipliers, and structural settings. Unlike Commands.dat, which is executed at startup as console commands, Config.json is parsed as a structured data file and its values are applied before the server enters its command-execution phase.

Config.json structure

The default Config.json is generated by the server on first startup. Its structure as of Unturned™ 3.x is:

json
{
  "Browser": {
    "Icon": "",
    "Thumbnail": "",
    "Desc_Hint": "",
    "Desc_Full": "",
    "Desc_Server_List": "",
    "Login_Token": ""
  },
  "Server": {
    "Name": "Unturned",
    "Map": "PEI",
    "Perspective": "Both",
    "PvP": true,
    "Cheats": false,
    "MaxPlayers": 24,
    "Password": "",
    "Mode": "Normal",
    "Timeout": 30.0,
    "Sync": false,
    "Chat_Rate": 0.25
  },
  "Gameplay": {
    "Spawn_Items": 1.0,
    "Timer_Spawn": 0,
    "Timer_Respawn": 0,
    "Timer_Home": 0,
    "Timer_V3": 0,
    "Allow_Shoulder": false,
    "Allow_Angling": false,
    "Allow_Freeze": false,
    "Allow_Diagonal_Roofs": false,
    "Allow_Skills_Overflow": false,
    "Allow_Per_Character_Saves": false,
    "Allow_Map_Gameplay_Config": true,
    "Allow_Killcam": false,
    "Allow_Airdrops": true,
    "Allow_Death_Menu": true,
    "Allow_Maintain_Dead_Players": false,
    "Allow_Vehicles": true,
    "Allow_Item_Spawns_In_Safezone": false,
    "Allow_Shared_Skin": false,
    "Allow_Stack_Trace": false,
    "Allow_Global_GUID_Spawns": false,
    "Allow_Manual_Gold_Purchases": false,
    "Allow_Roadkill": false
  }
}

Browser section field reference

The Browser section controls how the server appears in the Unturned™ server browser.

FieldTypeExamplePurpose
Iconstring (URL or path)https://example.com/icon.pngThe 64×64 PNG icon displayed in the server browser.
Thumbnailstring (URL or path)https://example.com/thumb.pngThe thumbnail image displayed in the server browser.
Desc_Hintstring"24-player survival"Short hint text (max ~64 chars) shown in the server list.
Desc_Fullstring"A 24-player survival server..."The full server description shown in the server detail panel.
Desc_Server_Liststring`"PEINormal
Login_Tokenstring<GSLTtoken>Game Server Login Token from the Steam Game Server Account page. Required for VAC-secured servers and for the server to appear in the server browser.

Generating a Login_Token (GSLT)

A Game Server Login Token is generated at https://steamcommunity.com/dev/managegameservers. Select App ID 304930 (Unturned), give the token a memo identifying the server, and copy the token string into Login_Token. Without a GSLT, the server will not appear in the Steam server browser, although direct connections still work.

Server section field reference

FieldTypeDefaultPurpose
Namestring"Unturned"The server name displayed in the browser. If Name is also set in Commands.dat, the Commands.dat value takes precedence.
Mapstring"PEI"The map to load. This is overridden by the Map command in Commands.dat if both are present.
Perspectivestring"Both"Allowed camera perspective: "First", "Third", "Both", "Vehicle".
PvPbooleantrueWhether player-versus-player damage is enabled.
CheatsbooleanfalseWhether cheat commands are enabled.
MaxPlayersinteger24Maximum concurrent players.
Passwordstring""Join password. Empty string = public.
Modestring"Normal"Difficulty preset: "Easy", "Normal", "Hard".
Timeoutfloat30.0Connection timeout in seconds.
SyncbooleanfalseWhether to sync player data to a master server. Typically false for private servers.
Chat_Ratefloat0.25Minimum seconds between player chat messages. Increasing this value reduces spam.

Gameplay section field reference

The Gameplay section controls individual gameplay parameters that modify the player and world experience independent of the difficulty preset.

FieldTypeDefaultPurpose
Spawn_Itemsfloat1.0Multiplier on world item spawn frequency. 0.5 = half as many spawns. 2.0 = twice as many.
Timer_Spawninteger0Override for initial spawn timer in seconds. 0 = use mode default.
Timer_Respawninteger0Override for respawn timer in seconds. 0 = use mode default.
Timer_Homeinteger0Override for home teleport cooldown in seconds.
Allow_ShoulderbooleanfalseWhether players can shoulder their weapon (melee weapon on back).
Allow_AnglingbooleanfalseWhether players can angle structures during placement.
Allow_FreezebooleanfalseWhether server-side freeze is permitted for admins.
Allow_Diagonal_RoofsbooleanfalseWhether diagonal roof placement is enabled.
Allow_Skills_OverflowbooleanfalseWhether players can exceed the skill cap with XP.
Allow_Per_Character_SavesbooleanfalseWhether per-character saves (multiple character slots) are enabled.
Allow_Map_Gameplay_ConfigbooleantrueWhether to apply the map's own gameplay config overrides. Disable if you want the map's defaults to not apply.
Allow_KillcambooleanfalseWhether players can view a killcam on death.
Allow_AirdropsbooleantrueWhether airdrops spawn in the world.
Allow_Death_MenubooleantrueWhether the death menu appears on player death.
Allow_VehiclesbooleantrueWhether vehicles spawn and can be driven.
Allow_Item_Spawns_In_SafezonebooleanfalseWhether items spawn inside safezone areas.
Allow_Shared_SkinbooleanfalseWhether all players see each other's cosmetic skins.
Allow_RoadkillbooleanfalseWhether vehicles can kill players by running them over.

Example Config.json for a PvE server

The following is a complete Config.json for a PvE survival server with relaxed spawn rates, disabled roadkill, and a GSLT token.

json
{
  "Browser": {
    "Icon": "https://cdn.57studios.net/servers/pve-server-icon.png",
    "Thumbnail": "https://cdn.57studios.net/servers/pve-server-thumb.png",
    "Desc_Hint": "PvE | Washington | 20 Players | Workshop Mods",
    "Desc_Full": "A PvE survival server running a curated workshop modlist. PvP is disabled. Airdrops active. Discord: discord.gg/57studios",
    "Desc_Server_List": "PvE | Washington | 20 Slots",
    "Login_Token": "REPLACE_WITH_YOUR_GSLT_TOKEN"
  },
  "Server": {
    "Name": "57 Studios PvE | Washington | Modded",
    "Map": "Washington",
    "Perspective": "Both",
    "PvP": false,
    "Cheats": false,
    "MaxPlayers": 20,
    "Password": "",
    "Mode": "Normal",
    "Timeout": 30.0,
    "Sync": false,
    "Chat_Rate": 0.5
  },
  "Gameplay": {
    "Spawn_Items": 1.5,
    "Timer_Spawn": 0,
    "Timer_Respawn": 5,
    "Timer_Home": 0,
    "Timer_V3": 0,
    "Allow_Shoulder": true,
    "Allow_Angling": true,
    "Allow_Freeze": false,
    "Allow_Diagonal_Roofs": true,
    "Allow_Skills_Overflow": false,
    "Allow_Per_Character_Saves": false,
    "Allow_Map_Gameplay_Config": true,
    "Allow_Killcam": false,
    "Allow_Airdrops": true,
    "Allow_Death_Menu": true,
    "Allow_Maintain_Dead_Players": false,
    "Allow_Vehicles": true,
    "Allow_Item_Spawns_In_Safezone": false,
    "Allow_Shared_Skin": false,
    "Allow_Stack_Trace": false,
    "Allow_Global_GUID_Spawns": false,
    "Allow_Manual_Gold_Purchases": false,
    "Allow_Roadkill": false
  }
}

Keep operational settings in Commands.dat

The 57 Studios™ recommendation is to treat Config.json as the browser-presentation layer (icon, thumbnail, descriptions, GSLT token) and Commands.dat as the operational layer (map, player cap, password, mode, workshop). This split makes it easier to update operational settings without touching the JSON file, which is more error-prone to edit manually.

Config.json vs. Commands.dat: which takes precedence?

When the same setting is configurable in both Config.json and Commands.dat, the following precedence rules apply:

SettingConfig.json fieldCommands.dat commandWinner
Server nameServer.NameName <serverName>Commands.dat wins
Max playersServer.MaxPlayersMaxPlayers <n>Commands.dat wins
PasswordServer.PasswordPassword <pw>Commands.dat wins
MapServer.MapMap <mapName>Commands.dat wins
ModeServer.ModeMode <mode>Commands.dat wins
CheatsServer.CheatsCheatsCommands.dat wins (if present)

In general, Commands.dat commands executed at startup override the corresponding Config.json fields because they are applied after Config.json is parsed. The cohort's recommendation for 57 Studios™ server operators is to maintain all operational settings in Commands.dat and to use Config.json only for browser-facing presentation fields (icon, thumbnail, descriptions, GSLT) and gameplay toggles that have no Commands.dat equivalent.


::: note About the precedence table The table above covers only fields that exist in both files. Fields that exist exclusively in Config.json (such as Browser.Icon, Browser.Login_Token, Gameplay.Allow_Roadkill) have no Commands.dat equivalent and are always read from Config.json. Fields that exist exclusively in Commands.dat (such as RCON, LoadOut, Welcome) have no Config.json equivalent and are always applied at startup. :::

Complete walkthroughs

Walkthrough 1: Configuring a 32-player public server from scratch

This walkthrough steps through creating a complete configuration for a 32-player public server on the Washington map with a workshop modlist.

Step 1: Create the server directory

If it does not already exist, create the directory:

<ServerRoot>/Servers/WashingtonPublic/Server/

Step 2: Create Config.json

json
{
  "Browser": {
    "Icon": "",
    "Thumbnail": "",
    "Desc_Hint": "Public PvP | Washington | 32 Players",
    "Desc_Full": "A competitive 32-player PvP server on Washington. Discord at discord.gg/example.",
    "Desc_Server_List": "PvP | Washington | 32 Slots",
    "Login_Token": "YOUR_GSLT_HERE"
  },
  "Server": {
    "Name": "Washington PvP 32",
    "Map": "Washington",
    "Perspective": "Both",
    "PvP": true,
    "Cheats": false,
    "MaxPlayers": 32,
    "Password": "",
    "Mode": "Normal",
    "Timeout": 30.0,
    "Sync": false,
    "Chat_Rate": 0.25
  },
  "Gameplay": {
    "Spawn_Items": 1.0,
    "Allow_Airdrops": true,
    "Allow_Vehicles": true,
    "Allow_Roadkill": true
  }
}

Step 3: Create Commands.dat

# Washington Public 32-Player Server

Name Washington PvP 32
Map Washington
MaxPlayers 32
Mode Normal
Perspective Both
Cycle 3600
Port 27015

# Workshop content
Workshop_Download_ID 2480303126
Workshop_Download_ID 2312075082

# RCON
RCON yourRCONpassword 27016

Step 4: Launch the server

Unturned.exe -batchmode +secureserver WashingtonPublic +nographics

Step 5: Verify in the console

Watch the server console for:

  • Loading map Washington... — confirms Map Washington was applied.
  • Max players: 32 — confirms MaxPlayers 32 was applied.
  • Workshop download lines for each Workshop_Download_ID — confirms workshop content queued.
  • Server is listening on port 27015 — confirms port binding.

Walkthrough 2: Enabling whitelist for a private allowlist server

Step 1: Add Whitelisted to Commands.dat

Map PEI
MaxPlayers 10
Mode Normal
Whitelisted
Password optionalprivatepassword

Step 2: Restart the server

Step 3: Add permitted players via console

permit 76561198012345678
permit 76561198087654321

Step 4: Verify

Attempt to join from a non-permitted Steam account. The server should reject the connection with "You are not whitelisted on this server."

Password + Whitelist together

You can combine Whitelisted and Password in Commands.dat. Players must both know the password and be on the whitelist to join. This double-layer approach is useful for private community servers where you want to ensure only authorized players with the correct credentials can connect.


Common operator mistakes

MistakeSymptomResolution
Saving Commands.dat as UTF-16All startup commands silently skippedSave as UTF-8 without BOM. In PowerShell: Out-File -Encoding utf8.
Setting Map in both Config.json and Commands.dat to different valuesCommands.dat value wins; Config.json Map field is ignoredUse Commands.dat as the single source of truth for Map.
Editing Players.dat while the server is runningCorruption when server next writes the fileUse console commands or RCON to manage players; never edit Players.dat directly.
Missing GSLTServer does not appear in the Steam server browserGenerate a GSLT at the Steam Game Server Account page and place it in Config.json's Login_Token.
Port already in useServer fails to start; Port already in use error in consoleChange Port in Commands.dat or stop the process holding the port.
Workshop items in wrong orderSome items fail to load because they depend on othersOrder Workshop_Download_ID lines so dependencies appear before dependents.
MaxPlayers set above 48Value silently clamped to 48 by the engineThe Unturned™ engine maximum is 48 players regardless of the value set.
Cheats enabled on a public serverPlayers can spawn any item, undermining the economyRemove the Cheats line from Commands.dat for all public servers.

Backup your configuration files before editing

Always back up Commands.dat and Config.json before making significant changes. Copy them to a Backups/ subfolder with a date suffix (e.g., Commands_2025-05-18.dat) before modifying. If a change breaks the server, the backup lets you restore to a known-working state in seconds.

Frequently asked questions

Where exactly do the configuration files live?

The three configuration files live at <ServerRoot>/Servers/<servername>/Server/. The <servername> is the value passed to +secureserver or +lanserver in the launch command. If you launch with +secureserver MySurvivalServer, the files are at Servers/MySurvivalServer/Server/.

Does the server auto-reload Commands.dat when I save changes?

No. Commands.dat is read once at startup. Changes take effect only after a server restart. To apply changes without a full restart, execute the equivalent console command via RCON or the server console directly.

Can I have multiple Commands.dat lines with the same command?

Yes. The server executes commands in order. If the same command appears twice with different arguments (e.g., Map PEI and then Map Washington), the last occurrence wins because it executes last. Use this intentionally for overrides; do not use it accidentally.

How do I view the current ban list?

The ban list is stored in Players.dat and is not directly human-readable. Some third-party server management tools can display it. The server console does not have a native listbans command; ban management is typically done through logs and RCON tooling.

What is the maximum value for MaxPlayers?

The Unturned™ engine enforces a maximum of 48 concurrent players regardless of the value set in Commands.dat or Config.json. Setting a higher value will be silently clamped to 48.

What happens if Config.json is malformed (invalid JSON)?

If Config.json contains invalid JSON, the server will fail to parse it and will generate a new default Config.json, overwriting the malformed file. Validate Config.json with a JSON linter before deploying changes to avoid losing your configuration.

Can I use environment variables or variables inside Commands.dat?

No. Commands.dat does not support variable substitution, environment variable expansion, or scripting constructs. It is a flat list of console commands. For dynamic configuration, use RCON from an external script.

How do I set up RCON for remote server management?

Add RCON <password> <port> to Commands.dat. The RCON port defaults to Port + 1 if not specified. RCON is compatible with any tool that supports the Source RCON protocol. The 57 Studios™ recommendation for lightweight RCON management is mcrcon or SRCDS RCON Client on Windows.

Is there a way to apply Config.json changes without restarting?

No hot-reload is supported for Config.json. A full server restart is required. For settings that have Commands.dat equivalents (Name, MaxPlayers, Map, Mode, Password, Cheats), you can change those settings at runtime via RCON console commands without restarting — but the changes will not persist across restarts unless you also update Commands.dat.

How do I create a server that allows building but disables PvP?

Set PvP: false in Config.json (under the Server key) and ensure the Cheats line is absent from Commands.dat. Structures and vehicles will function normally; player-to-player damage will be disabled.

What is the Chat_Rate field in Config.json?

Chat_Rate sets the minimum interval in seconds between chat messages for a player. The default is 0.25 seconds (four messages per second maximum). Increase this to reduce spam — for example, 2.0 allows at most one message per two seconds.

How do I test that my Config.json is valid before restarting?

Paste the contents of your Config.json into any online JSON validator (e.g., jsonlint.com) or validate locally with PowerShell: Get-Content Config.json | ConvertFrom-Json (this will throw an error if the JSON is malformed).

What is the difference between the Name field in Config.json and the Name command in Commands.dat?

Both set the server's display name. If both are present, the Commands.dat Name command overwrites the Config.json Server.Name value because Commands.dat is processed after Config.json. The practical recommendation is to set the name exclusively in one place — the cohort's preference is Commands.dat — to avoid confusion.


Appendix A: Full default Config.json

This is the default Config.json generated by Unturned™ on first startup as of version 3.x. Use it as a reset baseline if your configuration becomes corrupted.

json
{
  "Browser": {
    "Icon": "",
    "Thumbnail": "",
    "Desc_Hint": "",
    "Desc_Full": "",
    "Desc_Server_List": "",
    "Login_Token": ""
  },
  "Server": {
    "Name": "Unturned",
    "Map": "PEI",
    "Perspective": "Both",
    "PvP": true,
    "Cheats": false,
    "MaxPlayers": 24,
    "Password": "",
    "Mode": "Normal",
    "Timeout": 30.0,
    "Sync": false,
    "Chat_Rate": 0.25
  },
  "Gameplay": {
    "Spawn_Items": 1.0,
    "Timer_Spawn": 0,
    "Timer_Respawn": 0,
    "Timer_Home": 0,
    "Timer_V3": 0,
    "Allow_Shoulder": false,
    "Allow_Angling": false,
    "Allow_Freeze": false,
    "Allow_Diagonal_Roofs": false,
    "Allow_Skills_Overflow": false,
    "Allow_Per_Character_Saves": false,
    "Allow_Map_Gameplay_Config": true,
    "Allow_Killcam": false,
    "Allow_Airdrops": true,
    "Allow_Death_Menu": true,
    "Allow_Maintain_Dead_Players": false,
    "Allow_Vehicles": true,
    "Allow_Item_Spawns_In_Safezone": false,
    "Allow_Shared_Skin": false,
    "Allow_Stack_Trace": false,
    "Allow_Global_GUID_Spawns": false,
    "Allow_Manual_Gold_Purchases": false,
    "Allow_Roadkill": false
  }
}

Appendix B: Minimal Commands.dat templates

Template A: Single-player equivalent (private, no workshop)

Map PEI
MaxPlayers 4
Mode Normal
Perspective Both
Cycle 3600
Port 27015
Cheats

Template B: Standard public server

Name My Server
Map Washington
MaxPlayers 24
Mode Normal
Perspective Both
Cycle 3600
Port 27015
Welcome Welcome to my server.

Template C: Private allowlist server with workshop

Name Private Server
Map PEI
MaxPlayers 10
Mode Normal
Perspective First
Cycle 3600
Port 27015
Whitelisted
Workshop_Download_ID 2480303126
RCON adminpassword 27016

Appendix C: SteamID64 formats and lookup tools

Player identifiers in Unturned™ admin, ban, permit, and unpermit commands use SteamID64 format: a 17-digit decimal integer beginning with 7656. The following tools convert between Steam profile URLs, Steam vanity URLs, and SteamID64:

ToolURLNotes
steamid.iohttps://steamid.ioAccepts profile URL, vanity URL, or SteamID2/SteamID3.
Steamidfinderhttps://www.steamidfinder.comLookup by profile URL or username.
Steam APIVia https://api.steampowered.com/ISteamUser/ResolveVanityURL/v1/Programmatic lookup with a Steam Web API key.

Server logs record player join and leave events with SteamID64. Ban and permit commands always use SteamID64, not display names, to ensure the correct player is identified regardless of name changes.


Cross-references

Server console showing successful startup with Commands.dat commands applied


Document history

VersionDateAuthorNotes
1.02025-05-1857 StudiosInitial publication. Full field reference for Commands.dat, Players.dat, Config.json.