server.properties Explained: Every Setting That Matters
A complete walkthrough of server.properties - what each setting does, its default value, which ones only apply at world creation, and which ones have been removed from the game.
What is server.properties?
server.properties sits in your server root directory and is Minecraft's own configuration file. It controls everything from port number and difficulty to how far players can see.
Three things are worth knowing before you start:
- The file is only read at startup. You have to restart the server for changes to take effect.
/reloaddoes not reload it. - Some settings only apply at world creation. Change them later and nothing happens to the existing world.
- Edit it while the server is stopped. The server rewrites the file when it shuts down, overwriting your changes.
Server and network
| Setting | Default | Description |
|---|---|---|
motd |
A Minecraft Server |
The text under the server name in the player's server list |
max-players |
20 |
How many players may be online at once |
online-mode |
true |
Verifies that the player owns their Minecraft account. Leave this on true |
enable-status |
true |
Whether the server answers pings and appears online in the list |
hide-online-players |
false |
Hides the player list from the outside |
network-compression-threshold |
256 |
Packet size in bytes before compression. Only set -1 behind a local proxy |
enforce-secure-profile |
true |
Requires a Mojang-signed chat key |
World and gameplay
| Setting | Default | Description |
|---|---|---|
level-name |
world |
The name of the world folder the server loads |
level-seed |
empty | Seed for the world. World creation only |
level-type |
minecraft:normal |
minecraft:flat, minecraft:large_biomes, minecraft:amplified. World creation only |
generate-structures |
true |
Whether villages, temples and so on generate. World creation only |
gamemode |
survival |
Default mode for new players |
force-gamemode |
false |
Resets players to the default mode every time they join |
difficulty |
easy |
peaceful, easy, normal or hard |
hardcore |
false |
World creation only. Forces hard difficulty and permadeath |
max-world-size |
29999984 |
Distance in blocks from the centre to the world border |
allow-flight |
false |
Does not grant flight. It only removes the "Flying is not enabled" anti-cheat kick |
player-idle-timeout |
0 |
Minutes of inactivity before a player is kicked. 0 = never |
pause-when-empty-seconds |
60 |
The server stops ticking once it has been empty this long. Set 0 if you run AFK farms |
Performance
| Setting | Default | Description |
|---|---|---|
view-distance |
10 |
How many chunks are sent to players. Costs bandwidth |
simulation-distance |
10 |
How many chunks are actually ticked. Costs CPU |
entity-broadcast-range-percentage |
100 |
How far away entities are sent to the client |
max-tick-time |
60000 |
Watchdog: milliseconds a tick may take before the server is killed. -1 disables it |
sync-chunk-writes |
true |
Write chunks synchronously. Safer but slower |
region-file-compression |
deflate |
Compression for new region files: deflate, lz4 or none |
If you want more TPS,
simulation-distanceis the most important line in the whole file. See our guide on fixing lag.
Access and permissions
| Setting | Default | Description |
|---|---|---|
white-list |
false |
Only players on the list may join |
enforce-whitelist |
false |
Also kicks players already online when the list is reloaded |
op-permission-level |
4 |
The level new operators get (0-4) |
function-permission-level |
2 |
The level data pack functions run at |
spawn-protection |
16 |
Square around spawn where only ops may build. 0 disables it |
broadcast-console-to-ops |
true |
Show console commands to operators in-game |
prevent-proxy-connections |
false |
Kicks players whose network does not match Mojang data. Also hits VPN users |
Remote access
| Setting | Default | Description |
|---|---|---|
enable-rcon |
false |
Enables the RCON remote console |
rcon.port |
25575 |
The port RCON listens on |
rcon.password |
empty | RCON will not start without a password |
enable-query |
false |
The query protocol used to fetch server info |
query.port |
25565 |
UDP port for query. It does not follow server-port automatically |
Resource pack
| Setting | Default | Description |
|---|---|---|
resource-pack |
empty | Direct download URL for the pack |
resource-pack-sha1 |
empty | SHA-1 of the file. Without it players redownload the pack every join |
resource-pack-prompt |
empty | Your own text in the download dialog |
require-resource-pack |
false |
Players who decline are disconnected |
Settings that no longer exist
As of Minecraft 1.21.9 a number of old settings were removed from server.properties and replaced by game rules. Setting them in the file today does nothing - the server ignores them:
| Old setting | Replaced by |
|---|---|
pvp |
A game rule for PvP |
allow-nether |
A game rule for Nether portals |
spawn-monsters |
A game rule for monster spawning |
enable-command-block |
A game rule for command blocks |
Game rules are set in-game or in the console with /gamerule and are stored in the world, not in the file. Type /gamerule and press tab to see the exact names on your version - the spelling has changed along the way.
If you run a version older than 1.21.9, the settings still work in the file. Many control panels and guides still show them even though they are dead on newer versions.
The five most misunderstood
difficultyvshardcore.hardcoreonly applies at world creation and forces hard difficulty regardless of thedifficultyline. You cannot make an existing world hardcore by editing it.allow-flightdoes not grant flight. Creative and spectator always fly. The setting only removes the anti-cheat kick so plugins and elytra edge cases do not throw people out.view-distancevssimulation-distance. Chunks between the two numbers are visible but frozen. Simulation distance is what costs CPU.spawn-protectiondoes not apply to operators. If you test it as an op, you will never notice it.level-typeuses namespaced names. It isminecraft:flat, notFLAT. In the file the colon is written with a backslash in front:level-type=minecraft\:normal. That is correct and should not be "fixed".
How to edit the file
- Stop the server in the Potionhost control panel.
- Open Files and edit
server.propertiesin the root folder. - Change the value after the equals sign - no spaces around it.
- Save and start the server.
- Check Console for errors during startup.
Did something go wrong? Delete
server.propertieswhile the server is stopped. It is recreated with default values on the next startup - but note thatlevel-namethen resets toworldas well.
Unsure about a setting? Contact our support before changing anything on a server with players on it.