CraftRank
New Server Swipe, a stock market for servers, weekly quests that pay and your own Minecraft passport. See what's new

Minecraft server.properties explained

What each important server.properties setting does on a Java server: ports, online-mode, view and simulation distance, whitelist, RCON, resource packs and more.

8 min read · Updated

server.properties is the main settings file of a Java Edition server. It sits in the server folder, is created on first start, and controls the port, world, difficulty, security and performance. This guide explains the keys that matter, with sensible values and what goes wrong when you change them.

How the file works

  • Each line is key=value, with no spaces around the equals sign.
  • Stop the server before editing. Most changes only apply after a restart, and the server can overwrite the file when it shuts down.
  • Lines starting with # are comments.
  • If you delete the file, the server makes a new one with default values on next start.
  • Paper, Spigot and Purpur read this file too, and add their own settings in other files such as spigot.yml and the Paper config folder.

Values below are for Java 1.20 and 1.21. Since 1.21.9, pvp, allow-nether, spawn-monsters and enable-command-block are no longer server properties: they became game rules that you change in game with /gamerule. On older versions they are still in this file.

Connection settings

KeyDefaultWhat it does
server-port25565The TCP port players connect to.
server-ip(empty)Binds to one network address. Leave empty unless your host tells you otherwise.
max-players20Maximum players online at once.
motdA Minecraft ServerThe text shown under your server name in the multiplayer list.
enable-statustrueWhether the server answers the multiplayer list ping.
hide-online-playersfalseHides the list of player names when someone hovers over the player count.
network-compression-threshold256Packets larger than this many bytes are compressed.

server-port: if you change it, players must add the port to the address (play.example.com:25570), unless you set up an SRV record. You also need to forward the new port. See Minecraft server IP and port.

max-players: setting it very high does not make the server faster or more popular. Set a number your hardware can actually handle, so the server refuses players instead of lagging for everyone.

motd: supports colour codes written as \u00A7 followed by a code, for example \u00A7a for green, and \n for the second line. Writing this by hand is fiddly; our MOTD generator builds the line for you.

enable-status: if you set it to false, the server shows as offline in the multiplayer list and on server lists, even though players can still join. Leave it on for a public server.

network-compression-threshold: leave it at 256 for most servers. -1 turns compression off, which only makes sense when the server and players (or a proxy) are on the same fast local network. Very low values use more CPU without real benefit.

World settings

  • level-name (default world): the world folder name. Change it to load a different world folder.
  • level-seed: the seed for a new world. It does nothing for a world that already exists.
  • level-type (default minecraft:normal): other values are minecraft:flat, minecraft:large_biomes, minecraft:amplified and minecraft:single_biome_surface. Like the seed, it only applies when the world is first created. Amplified worlds are much heavier on the CPU.
  • generator-settings: JSON for custom flat worlds. Leave it empty unless you know you need it.
  • generate-structures (default true): villages, temples and other structures.
  • max-world-size: the world border radius in blocks. For public servers, a smaller border set with a pre-generated world keeps disk use and lag under control.
  • allow-nether (1.21.8 and older): turns the Nether off when false. On Bukkit-based servers the End is controlled by allow-end in bukkit.yml.

To start a new world with a new seed or type, stop the server, change the value, and rename or remove the old world folders. Back up first.

Gameplay settings

KeyDefaultNotes
gamemodesurvivalGame mode for new players: survival, creative, adventure or spectator.
force-gamemodefalseIf true, players are put in the default game mode every time they join.
difficultyeasypeaceful, easy, normal or hard.
hardcorefalsePlayers are put in spectator mode when they die. Difficulty is locked to hard.
pvptruePlayers can damage each other. A game rule since 1.21.9.
allow-flightfalseIf false, players who fly in survival are kicked.
spawn-protection16Radius around world spawn where non-operators cannot build.
player-idle-timeout0Kicks players idle for this many minutes. 0 turns it off.

difficulty: most survival servers use normal or hard. Peaceful removes hostile mobs and hunger damage, which breaks mob farms and many survival goals.

allow-flight: set it to true if you use flight plugins, elytra-heavy gameplay with lag, or certain mounts. Otherwise players can be kicked for "flying" when the server is just lagging. Anti-cheat plugins do a better job of catching real fly hacks than this setting.

spawn-protection: the protected area is a square around world spawn, and operators ignore it. It only works when at least one player is an operator. Many servers set it to 0 and protect spawn with WorldGuard instead, which gives finer control over what players can do there.

Performance settings

KeyDefaultTypical value
view-distance106 to 10
simulation-distance104 to 8
entity-broadcast-range-percentage10050 to 100
sync-chunk-writestruetrue
max-tick-time6000060000

view-distance vs simulation-distance: view distance is how many chunks around each player are sent to their client, so they can see them. Simulation distance is how many chunks around each player actually run: mobs move, crops grow, redstone and furnaces work. Simulation is the expensive part, so a common setup is a moderate view distance with a lower simulation distance. Players still see far, but the server only does work close to them. Setting simulation distance very low breaks farms that need the player nearby, so do not go below 4 on a survival server.

entity-broadcast-range-percentage: how far away players can see entities, as a percentage of the default range (10 to 1000). Lowering it reduces network traffic on busy servers, but players see mobs and other players pop in later, which matters for PvP.

sync-chunk-writes: when true, chunks are saved synchronously, which is safer if the server crashes. Setting it to false can make saving faster, but you risk losing recent changes on a crash. Leave it on unless you know why you are changing it.

max-tick-time: if one tick takes longer than this many milliseconds, the watchdog stops the server, because it is probably frozen. -1 disables the watchdog. Do not disable it to hide crashes; find the cause with a profiler instead. How to reduce lag on a Minecraft server explains how.

On 1.21.2 and newer, pause-when-empty-seconds pauses the server after it has been empty for that many seconds. That saves resources on a private server, but on a public server some plugins and timers expect the world to keep running.

Security settings

online-mode

online-mode=true (the default) makes the server check every player's account with Mojang. Keep it on.

With online-mode=false (offline mode), the server trusts whatever name the client sends. Anyone can join as any player, including you or your staff, and get their inventory, claims and permissions. Plugins that use UUIDs also see different UUIDs than in online mode, so switching later scrambles player data.

The one normal exception is a server behind a proxy such as Velocity: there, the proxy runs in online mode and the backend servers run in offline mode with player info forwarding, and the backends must only accept connections from the proxy. See how to set up a Velocity network.

enforce-secure-profile

Default true. Players must have a profile key signed by Mojang to join, which is used for signed chat. If some players cannot join with a message about a missing public key, or you use certain chat or proxy setups, owners sometimes set it to false. Leave it at true unless you have a specific reason.

Whitelist

  • white-list (default false): only players on the whitelist can join.
  • enforce-whitelist (default false): when true, players who are online but not on the list are kicked as soon as the whitelist is reloaded.

You can also turn it on in game with /whitelist on. Full steps are in how to whitelist a Minecraft server.

Query and RCON

enable-query (default false) turns on the GameSpy4 query protocol on query.port (UDP, 25565 by default). Some tools and lists use it to read plugins and player names. It is optional; status pings work without it.

enable-rcon (default false) allows remote console access on rcon.port (TCP, 25575 by default) with rcon.password. RCON sends commands with full console power and the password is not encrypted. If you use it:

  • Use a long, random password.
  • Never forward or expose the RCON port to the internet. Only allow it from the same machine or a private network.
  • If you do not need it, leave it off.

Other security keys

  • op-permission-level (default 4): what operators can do. 4 allows everything, including stopping the server.
  • prevent-proxy-connections (default false): kicks players whose connection seems to come through a VPN or proxy, by comparing addresses with Mojang. It can block legitimate players.
  • rate-limit (default 0): kicks clients that send too many packets per second. 0 turns it off.
  • log-ips (default true, 1.20.2+): whether player IP addresses are written to the log.
  • accepts-transfers (default false, 1.20.5+): whether the server accepts players sent from another server with the transfer packet.

Resource pack settings

  • resource-pack: a direct download URL to a zip file. Links to download pages do not work; the URL must return the file itself.
  • resource-pack-sha1: the SHA-1 hash of the zip. It lets clients cache the pack and notice when it changed. Update it every time you change the file.
  • require-resource-pack: if true, players who decline the pack are disconnected.
  • resource-pack-prompt: a custom message shown in the download prompt.

Only require a pack if your server really needs it, and keep it small. A large required pack is one more reason for a new player to give up. Bedrock players joining through Geyser need a converted pack.

For a small public survival server on Paper:

server-port=25565
online-mode=true
enforce-secure-profile=true
max-players=50
difficulty=normal
view-distance=8
simulation-distance=6
spawn-protection=0
white-list=false
enable-status=true
enable-query=false
enable-rcon=false
network-compression-threshold=256
max-tick-time=60000
sync-chunk-writes=true

Adjust max-players, view-distance and simulation-distance to your hardware and watch how the server behaves with players online. After changing settings, restart and check that the server still appears correctly with the server status checker.

We use cookies to measure how our ads perform. Privacy