// Minecraft

server.properties explained: the settings that really matter

server.properties explained: the settings that really matter

server.properties is the configuration file in the root folder of your Minecraft server: every line is one setting, written as key=value. The two lines with by far the biggest performance impact are view-distance and simulation-distance, both set to 10 by default. Almost every change only takes effect after a full restart, and a handful of fields such as level-seed and level-type only do anything at the moment the world is first generated.

Where is server.properties and how do you edit it safely?

The file sits next to your server jar in the root folder, and in a Pterodactyl panel you will find it under the file manager. It is only created after the server has fully started once, so if it is missing after a fresh install, boot the server up first.

  1. Stop the server completely. A running server rewrites server.properties as it shuts down and overwrites whatever you just typed in.
  2. Open the file in your panel's file manager, or over SFTP.
  3. Only change the value after the equals sign. No spaces around it, no quotation marks, and true and false in lower case.
  4. Save the file and start the server.
  5. Read the first lines in the console. An invalid value is quietly reset to the default.

Two things to watch. Lines that start with a hash are comments, so accidentally commenting out a setting means falling straight back to its default. And server-port, server-ip and query.port are managed by your panel; editing those by hand usually leaves your server unreachable.

What is the difference between view-distance and simulation-distance?

view-distance sets the radius, in chunks, that the server sends to each client to draw. simulation-distance sets the radius within which the world is actually alive: mobs spawn and move, crops grow, redstone runs, hoppers shift items. Both default to 10.

They cost you different things. View-distance mainly costs memory and bandwidth, because every loaded chunk sits in RAM and travels down the wire to the player. At view-distance 10 that means 21 by 21 chunks per player, so 441 of them; at 6 it is 13 by 13, or 169 chunks, well over sixty percent fewer. Simulation-distance costs CPU time per tick, and that is exactly what drags your TPS down. A server stuck at 14 TPS is nearly always simulating too much, not drawing too much.

In practice: on a survival server with dozens of players, view-distance=7 with simulation-distance=5 almost always beats leaving both on 10. On a five-player server for friends, view-distance can happily stay at 10. With heavy modpacks such as All the Mods 10, which needs at least 10 GB of RAM, start low and only raise the numbers once your TPS holds steady. Setting simulation-distance higher than view-distance makes little sense. Our article on optimising your Minecraft server also covers the settings that live outside this file.

Which lines do what, and what is a sensible value?

SettingDefaultSensible valueWhat it does
view-distance106 to 8 when busyRadius in chunks sent to every client
simulation-distance104 to 6Radius within which mobs and redstone tick
max-players20Whatever your hardware handlesMaximum number of players at once
online-modetruetrueVerifies every login with Mojang
difficultyeasynormalpeaceful, easy, normal or hard
gamemodesurvivalsurvivalMode new players join in
pvptruefalse on a build serverWhether players can damage each other
spawn-protection160 with a region pluginBlocks around spawn where only ops build
white-listfalsetrue while you are still buildingOnly names in whitelist.json may join
enable-command-blockfalsefalseAllows command blocks
max-tick-time60000Leave it at 60000Milliseconds before the watchdog steps in
level-seedemptyOnce only, or emptySeed, used only when the world is created
level-typeminecraft:normalminecraft:normalGeneration type, only at creation
motdA Minecraft ServerOne short line of your ownText shown in the server list
network-compression-threshold256256, or higher behind a proxyByte size from which packets are compressed

max-players is a cap, not a reservation: setting it to 200 will not slow your server down, but it will not help either if 200 people genuinely turn up. For difficulty, normal is the usable choice on survival servers; peaceful makes hostile mobs disappear entirely and breaks every mob farm.

Why should you never casually set online-mode to false?

With online-mode=true your server checks on every login whether the account really exists and whether the player is who they claim to be. Set to false, your server accepts any name somebody types in. A random visitor can then literally enter the name of your head admin and walk in with full permissions. Bans become worthless too, because the banned player simply changes their name.

There is one legitimate reason to turn it off: a backend behind a proxy such as BungeeCord or Velocity, where the proxy handles authentication. That backend then has to be unreachable from the internet and must use modern forwarding (Velocity) or BungeeGuard. Otherwise your backend port is an open door. With Minecraft hosting from MC-Node, a proxy like that starts at EUR 0.50 for 512 MB.

For Bedrock players on your Java server you do not need to disable online-mode at all: Geyser with Floodgate handles that while online-mode stays on true. Be careful if you do switch, because offline and online accounts get different UUIDs. After the change players lose their inventory, position and claims.

Which fields only apply when a world is created?

level-seed, level-type and generate-structures are only read when the server generates a world that does not yet exist. Change them later and everything already generated stays exactly as it was. With level-type you even get a visible seam in the terrain, because new chunks are built differently from the old ones.

If you really want those fields applied, you need a new world. Deleting is not the safest route, renaming is: take a backup, set level-name to a new name such as world2 and restart. The server generates a fresh world and your old folder stays put, so you can go back if it disappoints.

motd does not belong in that list, but it is often misunderstood: that line is purely cosmetic, shows up in the server list and costs no performance at all.

How do you secure your server with spawn-protection, white-list and command blocks?

spawn-protection is a radius of 16 blocks by default around the spawn point where only operators may build or break. That is where the reports come from that new players cannot place anything at spawn. If you use a region plugin such as WorldGuard, set it to 0 and let the plugin handle protection entirely. An overview of plugins like that can be found in our article on the best Minecraft plugins.

white-list=true only lets players listed in whitelist.json in, and for a server for friends or an early build phase it is the simplest protection there is. Pair it with enforce-whitelist=true, otherwise players who were already online keep playing after you remove them from the list. What a whitelist does not do is protect your connection from attack: those arrive before any login happens. For that you need DDoS protection at network level.

enable-command-block is false by default, and that is a deliberate choice. Command blocks can only be placed by operators, but they are also a performance risk: a badly tuned clock that runs a command with a huge selector every tick costs more TPS than an entire group of players combined. Only set it to true if you are building adventure maps or minigames.

When should you change max-tick-time and network-compression-threshold?

max-tick-time sits at 60000 milliseconds. If a single tick takes longer than a minute, the watchdog assumes the server has frozen and kills it, leaving a thread dump in the console. That is useful, because the dump usually tells you which mod or plugin is hanging. On heavy modpacks it sometimes fires unfairly during world generation on slow storage: All the Mods 10 takes a good ten minutes to load on an HDD and two to three minutes on SSD. The fix there is faster storage, not disabling the watchdog. Setting it to -1 is fine temporarily while debugging, but after that a frozen server just hangs in silence.

network-compression-threshold is 256 bytes: anything larger gets compressed. For a standalone public server, leave it alone. If your backends and your proxy run on the same network, you can raise the value or set it to -1, trading bandwidth you have to spare for less CPU work. Never do that on a server reachable directly from the internet.

Frequently asked questions

Do I have to restart after every change to server.properties? Yes, for practically everything. The server only reads the file at startup. Commands such as /whitelist on and /difficulty do work instantly in game, but at the next start the file sets the value again.

Which view-distance suits 20 players? Start at view-distance=7 with simulation-distance=5 and see whether your TPS stays at 20. View-distance 10 means 441 chunks per player against 169 at view-distance 6, and you see that difference immediately in memory use.

Can I still change the seed of my existing world? No, level-seed is only used when generating a new world. Set level-name to a new name and restart, and you get a fresh world while the old folder is kept.

Why can nobody build around the spawn point? That is spawn-protection, by default a radius of 16 blocks where only operators may change anything. Set it to 0 if you leave protection to a plugin such as WorldGuard.

Does online-mode have to be off for Bedrock players? No. With Geyser and Floodgate, Bedrock players join while online-mode=true stays in place. Turning it off means anyone can use any name they like, including those of your admins.

Further reading

// TRY IT YOURSELF
Your server online in 60 seconds
MC-Node →