A Complete server.properties Reference
Every current Java Edition server.properties setting explained.
Every current Java Edition server.properties setting explained.
Introduction
Every Minecraft Java Edition server reads its core configuration from server.properties on startup. This reference covers the full current set of properties current as of Java Edition 26.2, organized by what they affect. Changes to any of these require a full server restart.
Note: Bedrock Dedicated Servers use their own, completely separate and incompatible server.properties format. This guide covers Java Edition only.
World Generation & Identity
| Property | Default | What It Does |
|---|---|---|
level-name |
world | Name of the world save folder |
level-seed |
(random) | Seed used to generate the world |
level-type |
minecraft:normal | World type: normal, flat, large_biomes, amplified or single_biome_surface |
generator-settings |
{} | Customization data used by the flat and single-biome world types |
generate-structures |
true | Whether structures like villagers and strongholds generate |
hardcore |
false | Enables Hardcore Mode for the entire server |
max-world-size |
29999984 | Distance from world center the border is allowed to reach |
initial-enabled-packs |
vanilla | Data packs enabled automatically on world creation |
initial-disabled packs |
(blank) | Data packs excluded from auto-enabling on world creation |
Gameplay & Permission
| Property | Default | What It Does |
|---|---|---|
difficulty |
easy | Peaceful, Easy Normal or Hard |
gamemode |
survival | Default game mode assigned to new players |
force-gamemode |
false | Forces players back to the default gamemode every time they join |
spawn-protection |
16 | Radius around spawn that only operators can edit |
op-permission-level |
4 | Permission level granted to newly-opped players |
function-permission-level |
2 | Default permission level required to run functions |
enable-code-of-conduct |
false | Shows players a custom code-of-coduct file on join, if one is provided |
Performance & World Simulation
| Property | Default | What It Does |
|---|---|---|
view-distance |
10 | Chunks sent to each client, as a radius |
simulation-distance |
10 | Chunks actively ticked around each player |
entity-broadcast-range-percentage |
100 | How far entity updates are sent to clients, as a percentage |
max-tick-time |
60000 | Milliseconds before the watchdog assumes the server has frozen and shuts it down |
max-chained-neighbor-updates |
1000000 | Cap on consecutive block-update chains, relevant to large redstone builds |
sync-chunk-writes |
true | Writes chunk data synchronously to reduce corruption risk after a crash |
use-native-transport |
true | Uses Linux-optimized networking where the OS supports it |
network-compression-threshold |
256 | Packet size, in bytes, above which compression is applied |
region-file-compression |
deflate | Compression algorithm for saved chunk data: deflate, lz4, none |
pause-when-empty-seconds |
60 | How long to wait with no players online before the server pauses itself |
Players & Moderation
| Property | Default | What It Does |
|---|---|---|
max-players |
20 | Maximum concurrent player slots |
online-mode |
true | Verifies joining players against Microsoft's account system |
white-list |
false | Restricts joining to approved players |
enforce-whitelist |
false | Immediately kicks non-whitelisted players once the list reloads |
player-idle-timeout |
0 | Minutes of inactivity before a player is kicked (0 disables this) |
prevent-proxy-connections |
false | Kicks players whose connecting ISP doesn't match Microsoft's Authentication record |
rate-limit |
0 | Maximum packets per player before they're kicked (0 disables the limit) |
chat-spam-threshold-seconds |
10 | Anti-spam threshold for commands |
enforce-secure-profile |
true | Requires a Microsoft-required key to join, enabling reportable signed chat |
hide-online-players |
false | Hides the player list from public server-list queries |
log-ips |
true | Logs player IP addresses to the console and log files |
Heads up: white-list currently defaults to false, but that default is set to flip to true starting in Java Edition 26.3. Existing servers keep whatever value is already in their file since this only affects freshly generated properties files or ones that get reset.
Server Identity & Connection
| Property | Default | What It Does |
|---|---|---|
server-ip |
(blank) | IP address to bind to; leave blank to listen on all interfaces |
| `server-port | 25565 | TCP port players connect through |
motd |
A Minecraft Server | Message shown in the multiplayer server list |
bug-report-link |
(blank) | Optional custom bug-report URL shown to players |
accepts-transfers |
false | Whether the server accepts incoming player transfers sent from other servers |
enable-status |
true | Whether the server responds to server-list ping requests |
Resource Packs
| Property | Default | What It Does |
|---|---|---|
resource-pack |
(blank) | Download URL for a server-side resource pack |
resource-pack-id |
(blank) | UUID identifying the resource pack |
resource-pack-sha1 |
(blank) | SHA-1 checksum used to verify the pack's integrity |
resource-pack-prompt |
(blank) | Custom message shown when prompting players to accept the pack |
require-resource-pack |
false | Disconnects players who decline the resource pack |
Remote Access & Monitoring
| Property | Default | What It Does |
|---|---|---|
enable-query |
false | Enables the Query protocol for external server-status tools |
query.port |
25565 | UDP port used by Query |
enable-rcon |
false | Enables remote console access |
rcon.port |
25575 | TCP port used by RCON |
rcon.password |
(blank) | Password for RCON. It will refuse to start if left blank |
broadcast-console-to-ops |
true | Sends console output to online operators |
broadcast-rcon-to-ops |
true | Sends RCON output to online operators |
enable-jmx-monitoring |
false | Exposes tick-time metrics for external Java monitoring tools |
Advanced/Rarely Used
| Property | Default | What It Does |
|---|---|---|
management-server-enabled |
false | Enables the newer Server Management Protocol for external tooling |
management-server-allowed-origins |
(blank) | Comma-separated list of origins allowed to connect. If left empty, no browser-based client can connect at all |
management-server-host |
localhost | Host address the management server binds to |
management-server-port |
0 | Port the management server listens on |
management-server-secret |
(auto-generated) | Auth secret clients use to reach the management server |
management-server-tls-enabled |
true | Whether the management server requires TLS |
management-server-tls-keystore / -password |
(blank) | TLS certificate keystore and its password |
status-heartbeat-interval |
0 | How often the management server sends heartbeat pings (0 disables this) |
text-filtering-config / -version |
(blank) / 0 | Internal chat filtering configuration, primarily used by Realms |
debug |
false | Enables additional debug-level logging. Undocumented by Microsoft and rarely needed outside active troubleshooting |
Properties Removed from Older Versions
Putting these in your server.properties file will do nothing. The server will silently ignore it and leave the lines in the file on every rewrite, which is why old advice keeps circulating. These will only work if you're running version 1.21.8 or earlier.
Moved to game rules (removed in 1.21.9):
| Old Property | Current Replacement |
|---|---|
pvp |
/gamemode pvp false |
enable-command-block |
gamerule command_blocks_work false |
allow-nether |
/gamerule allow_entering_nether_using_portals false |
spawn-monsters |
/gamerule spawn_monsters false |
All four game rules default to true. Note that's a behavior change for command blocks specifically since the old property defaulted to 'false'.
Removed with no replacement (in 1.21.2):
spawn-animals: Used to toggle Passive mob spawning.spawn-npcs: Used to toggle villager spawning.
Neither has an equivalent setting anywhere else. If you need to stop passive mobs or villagers from spawning, it takes a datapack or plugin rather than a single flag.
Closing Notes
- Changes only take effect after a full restart.
level-seedonly applies the first time a world generates. Editing it afterwards won't regenerate an existing world.- If you're on Paper, Spigot or Purpur, these forks layer their own additional config files on top of vanilla's
server.propertiesfile, offering far more granular tuning (paper-global.yml,paper-world-defaults.yml).
Related guides
- How to Migrate your old MCServerHost account.: How to Migrate your old MCServerHost account to the new MCServerHost.
- How to Upload Files to Your MCServerHost Server: Learn how to upload files to your Minecraft server.
- Complete Guide to Server Snapshots on MCServerHost: Learn how MCServerHost Snapshots work, how they differ from backups, and how to create, manage, and restore them safely.
- How to Set Up PL-Hide on Your Minecraft Server: Stop players seeing your plugin list and clean up tab-completion of plugin commands.