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.

Overview
Unturned™ uses three primary configuration files for a dedicated server. Each file covers a distinct area of server management.
| File | Scope | Format | Location (relative to server root) |
|---|---|---|---|
Commands.dat | Startup commands executed line-by-line at server boot | Plain text, one command per line | Servers/<servername>/Server/Commands.dat |
Players.dat | Player whitelist, bans, and admin privileges | Binary (managed by Unturned) | Servers/<servername>/Server/Players.dat |
Config.json | Server settings: name, password, PvP mode, gameplay values | JSON | Servers/<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.jsonThe <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:
- 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.
- 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.
- 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.datthat references a map (e.g.,Map PEI) must appear before any commands that depend on map-specific objects. Config.jsonchanges take effect on the next server restart. You cannot hot-reloadConfig.jsonwithout restarting.Players.datis written by the server whenever a ban, unban, admin grant, or whitelist change occurs at runtime. Do not editPlayers.datby 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 3600Comments 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
| Command | Arguments | Example | Purpose |
|---|---|---|---|
Map | <mapName> | Map PEI | Sets the map the server loads. Must match an installed map's folder name exactly (case-sensitive on Linux). |
Mode | Easy | Normal | Hard | Mode Normal | Sets the global difficulty preset. |
Cycle | <seconds> | Cycle 3600 | Sets the day/night cycle length in seconds. 3600 = 1 hour per full cycle. |
Gold | (none) | Gold | Restricts the server to Gold-tier players only. Remove this line to allow all players. |
Perspective | First | Third | Both | Vehicle | Perspective Both | Sets the allowed camera perspective. |
Player limits and access
| Command | Arguments | Example | Purpose |
|---|---|---|---|
MaxPlayers | <count> | MaxPlayers 24 | Sets the maximum concurrent player count. The engine maximum is 48. |
Password | <password> | Password mysecretpass | Sets a password for the server. Remove this line for a public server. |
Cheats | (none) | Cheats | Enables in-game cheat commands (e.g., @give, @teleport). Not recommended for public servers. |
Whitelisted | (none) | Whitelisted | Enables whitelist mode. Only players in Players.dat's whitelist can join. |
Workshop content
| Command | Arguments | Example | Purpose |
|---|---|---|---|
Workshop_Download_ID | <steamWorkshopID> | Workshop_Download_ID 2480303126 | Adds 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
| Command | Arguments | Example | Purpose |
|---|---|---|---|
Port | <port> | Port 27015 | Sets the server's game port. The query port is automatically Port + 1. |
RCON | <password> <port> | RCON mypassword 27016 | Enables RCON with the specified password and port. |
Timeout | <seconds> | Timeout 30 | Sets the connection timeout. Players who do not respond within this window are kicked. |
Miscellaneous
| Command | Arguments | Example | Purpose |
|---|---|---|---|
Name | <serverName> | Name My Server | Overrides 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 255 | Grants 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 27016Order 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:
| Command | Purpose | Example |
|---|---|---|
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:
- Add
WhitelistedtoCommands.dat. - Restart the server.
- 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 value | Behavior |
|---|---|
0 | Permanent ban. Does not expire. |
3600 | 1-hour temporary ban. |
86400 | 24-hour temporary ban. |
604800 | 7-day temporary ban. |
2592000 | 30-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.
| Field | Type | Example | Purpose |
|---|---|---|---|
Icon | string (URL or path) | https://example.com/icon.png | The 64×64 PNG icon displayed in the server browser. |
Thumbnail | string (URL or path) | https://example.com/thumb.png | The thumbnail image displayed in the server browser. |
Desc_Hint | string | "24-player survival" | Short hint text (max ~64 chars) shown in the server list. |
Desc_Full | string | "A 24-player survival server..." | The full server description shown in the server detail panel. |
Desc_Server_List | string | `"PEI | Normal |
Login_Token | string | <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
| Field | Type | Default | Purpose |
|---|---|---|---|
Name | string | "Unturned" | The server name displayed in the browser. If Name is also set in Commands.dat, the Commands.dat value takes precedence. |
Map | string | "PEI" | The map to load. This is overridden by the Map command in Commands.dat if both are present. |
Perspective | string | "Both" | Allowed camera perspective: "First", "Third", "Both", "Vehicle". |
PvP | boolean | true | Whether player-versus-player damage is enabled. |
Cheats | boolean | false | Whether cheat commands are enabled. |
MaxPlayers | integer | 24 | Maximum concurrent players. |
Password | string | "" | Join password. Empty string = public. |
Mode | string | "Normal" | Difficulty preset: "Easy", "Normal", "Hard". |
Timeout | float | 30.0 | Connection timeout in seconds. |
Sync | boolean | false | Whether to sync player data to a master server. Typically false for private servers. |
Chat_Rate | float | 0.25 | Minimum 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.
| Field | Type | Default | Purpose |
|---|---|---|---|
Spawn_Items | float | 1.0 | Multiplier on world item spawn frequency. 0.5 = half as many spawns. 2.0 = twice as many. |
Timer_Spawn | integer | 0 | Override for initial spawn timer in seconds. 0 = use mode default. |
Timer_Respawn | integer | 0 | Override for respawn timer in seconds. 0 = use mode default. |
Timer_Home | integer | 0 | Override for home teleport cooldown in seconds. |
Allow_Shoulder | boolean | false | Whether players can shoulder their weapon (melee weapon on back). |
Allow_Angling | boolean | false | Whether players can angle structures during placement. |
Allow_Freeze | boolean | false | Whether server-side freeze is permitted for admins. |
Allow_Diagonal_Roofs | boolean | false | Whether diagonal roof placement is enabled. |
Allow_Skills_Overflow | boolean | false | Whether players can exceed the skill cap with XP. |
Allow_Per_Character_Saves | boolean | false | Whether per-character saves (multiple character slots) are enabled. |
Allow_Map_Gameplay_Config | boolean | true | Whether to apply the map's own gameplay config overrides. Disable if you want the map's defaults to not apply. |
Allow_Killcam | boolean | false | Whether players can view a killcam on death. |
Allow_Airdrops | boolean | true | Whether airdrops spawn in the world. |
Allow_Death_Menu | boolean | true | Whether the death menu appears on player death. |
Allow_Vehicles | boolean | true | Whether vehicles spawn and can be driven. |
Allow_Item_Spawns_In_Safezone | boolean | false | Whether items spawn inside safezone areas. |
Allow_Shared_Skin | boolean | false | Whether all players see each other's cosmetic skins. |
Allow_Roadkill | boolean | false | Whether 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:
| Setting | Config.json field | Commands.dat command | Winner |
|---|---|---|---|
| Server name | Server.Name | Name <serverName> | Commands.dat wins |
| Max players | Server.MaxPlayers | MaxPlayers <n> | Commands.dat wins |
| Password | Server.Password | Password <pw> | Commands.dat wins |
| Map | Server.Map | Map <mapName> | Commands.dat wins |
| Mode | Server.Mode | Mode <mode> | Commands.dat wins |
| Cheats | Server.Cheats | Cheats | Commands.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 27016Step 4: Launch the server
Unturned.exe -batchmode +secureserver WashingtonPublic +nographicsStep 5: Verify in the console
Watch the server console for:
Loading map Washington...— confirmsMap Washingtonwas applied.Max players: 32— confirmsMaxPlayers 32was 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 optionalprivatepasswordStep 2: Restart the server
Step 3: Add permitted players via console
permit 76561198012345678
permit 76561198087654321Step 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
| Mistake | Symptom | Resolution |
|---|---|---|
| Saving Commands.dat as UTF-16 | All startup commands silently skipped | Save as UTF-8 without BOM. In PowerShell: Out-File -Encoding utf8. |
Setting Map in both Config.json and Commands.dat to different values | Commands.dat value wins; Config.json Map field is ignored | Use Commands.dat as the single source of truth for Map. |
| Editing Players.dat while the server is running | Corruption when server next writes the file | Use console commands or RCON to manage players; never edit Players.dat directly. |
| Missing GSLT | Server does not appear in the Steam server browser | Generate a GSLT at the Steam Game Server Account page and place it in Config.json's Login_Token. |
| Port already in use | Server fails to start; Port already in use error in console | Change Port in Commands.dat or stop the process holding the port. |
| Workshop items in wrong order | Some items fail to load because they depend on others | Order Workshop_Download_ID lines so dependencies appear before dependents. |
| MaxPlayers set above 48 | Value silently clamped to 48 by the engine | The Unturned™ engine maximum is 48 players regardless of the value set. |
| Cheats enabled on a public server | Players can spawn any item, undermining the economy | Remove 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
CheatsTemplate 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 27016Appendix 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:
| Tool | URL | Notes |
|---|---|---|
| steamid.io | https://steamid.io | Accepts profile URL, vanity URL, or SteamID2/SteamID3. |
| Steamidfinder | https://www.steamidfinder.com | Lookup by profile URL or username. |
| Steam API | Via 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 Commands Reference — the previous article; complete list of Unturned™ server console commands.
- Workshop Content on Dedicated Servers — the next article;
Workshop_Download_ID,WorkshopDownloadConfig.json, and client sync in depth. - Setting Up Your Server Panel — initial server installation walkthrough.
- RocketMod and OpenMod Plugin Basics — plugin-based permission tiers.
- Smartly Dressed Games Unturned Server Documentation — the official server documentation.
- Unturned on Steam — Unturned™ Steam page.

Document history
| Version | Date | Author | Notes |
|---|---|---|---|
| 1.0 | 2025-05-18 | 57 Studios | Initial publication. Full field reference for Commands.dat, Players.dat, Config.json. |
