The server.properties file controls the basic behavior of every Minecraft server: difficulty, player count, whitelist, view distance, the description in the server list and remote management. We'll go through every setting in the same order as in the customer area and, for each one, explain what it does, what to set and when to change it.
What you'll need
- A Minecraft server at StormHost (or another Java server where you have access to the files)
- The Server settings permission if you don't own the server (RCON also needs the Secrets permission)
- About 20 minutes
How the file works#
server.properties is a plain text file in the server's main folder. Each line has the form key=value; lines starting with # are comments:
#Minecraft server properties
motd=Muj server
max-players=20
difficulty=normal
white-list=true- Values come in three kinds: switches (
true= on,false= off), whole numbers and text. - The server only reads the file on startup. Every change takes effect only after a server restart.
- The server rewrites the file itself on startup. It adds missing keys with their default value. Keys its version doesn't know stay in the file, but they're not used. That's why a key that no longer does anything can remain in the file after an update (see keys moved to game rules).
- Accented characters in text (MOTD) work. When you save, the customer area converts them to the
\u00E1notation (for á), which Minecraft understands in every version.
Where to change the settings#
In the customer area, open My services, click your Minecraft server and go to the Server properties tab.
Choose the editing mode at the top:
- Form – settings split into the Game, Players, World, Network and RCON and Advanced groups, with value checks.
- Text – the whole file as text. Useful for keys the form doesn't know.
Change the values. At the top you'll see a counter such as
Unsaved changes: 3.Click Save and restart. The server restarts and the changes take effect right away.
If you click only Save, you'll see the message
Saved. Changes take effect after a server restart.and the change applies on the next start.
Other buttons and messages:
| Element | What it does |
|---|---|
| Add setting | The form only shows keys that are already in the file. Use this button to add a known key that's missing from the file. |
Other keys (5) can be edited in text mode. | The file contains keys the form doesn't know. Edit them in Text mode. |
| Discard changes | Resets the form to the saved state. |
| Reload | Loads the file from the server again. Use it when a message about the file having changed appears (see Troubleshooting). |
| Create from defaults | Appears when the server has never run and the file doesn't exist. It creates the file so you can edit it before the first start. |
What you can't change
We set the server-ip, server-port and query.port keys automatically based on the server's address and port, so you won't find them in the form. You'll see them in text mode, but if you change them, we put them back when you save and you'll see the message Locked keys were restored to their original value: server-port.
On your own VPS, edit the file with a text editor, for example nano server.properties in the server folder, and then restart the server.
Game group#
| Setting | What it does | Recommended value | When to change |
|---|---|---|---|
motd (Server description) | Text under the server name in the server list. Supports colors via § codes (see Colors in the MOTD). | A short description, for example §aSurvival §7- §f26.3 | Any time. About 59 characters fit on one line; longer text may not show in full in the list. |
difficulty (Difficulty) | Difficulty: peaceful (no monsters), easy, normal, hard. Affects damage from monsters, hunger and some mechanics (for example, zombies can only break doors on hard). | normal | easy for kids and beginners, hard for experienced players. Older files use the numbers 0–3, which also work. |
gamemode (Game mode) | Default mode for new players: survival, creative, adventure (you can't break or place blocks without the right tool), spectator. | survival | creative for a building server, adventure for maps and minigames. Players who have already been on the server keep their mode (unless you turn on force-gamemode). |
hardcore | After death, players become spectators and can't return to the game. Difficulty is locked to the hardest. | false | Only for “one life” challenges. Applies to a world created with hardcore turned on. |
pvp | Whether players can hurt each other. | true | false for a friendly survival. From version 1.21.9 this key does nothing; it's set with a game rule (see below). |
force-gamemode (Force game mode) | Every time players join, they get the default mode from gamemode. | false | true on lobbies and minigames where nobody should stay in creative. |
enable-command-block (Command blocks) | Enables command blocks. | false | true when you build maps with command blocks. From version 1.21.9 this key does nothing; it's set with a game rule. |
Players group#
| Setting | What it does | Recommended value | When to change |
|---|---|---|---|
max-players (Maximum players) | How many players can be connected at once. Only an operator with "bypassesPlayerLimit": true in ops.json can join a full server. | Depends on your plan's performance, for example 20–50 | The number says nothing about performance. If the server lags when full, lower it or move to a bigger plan. |
online-mode (Account authentication) | The server checks with Microsoft that the player owns genuine Minecraft and that the name belongs to them. | true | Only on a server behind a proxy (Velocity) that authenticates players itself. See the warning below. |
white-list (Whitelist) | Only whitelisted players can join. | true for a private server | false for a public server. From version 26.3 the default is true, so a new server only lets in whitelisted players. Exception: a file created with the Create from defaults button has false. |
enforce-whitelist (Enforce whitelist) | When the whitelist reloads (for example with the whitelist reload command), players who aren't on it are kicked. | true if you use the whitelist | Has no effect with white-list=false. |
spawn-protection (Spawn protection) | A square around the spawn point where only operators can build and break blocks. A value of 16 protects a 33 × 33 block square (2 × 16 + 1). 0 turns protection off. If there are no operators on the server, protection doesn't apply. | 16 (default) | 0 when a plugin protects the spawn (for example WorldGuard), or when players should be able to build near spawn too. If players complain that they can't build or break blocks near spawn, this setting is why. |
allow-flight (Allow flight) | The server won't kick a player who is “flying” in survival. | false | true when flying is enabled by plugins (/fly), mods or jetpacks. Otherwise players get kicked with Flying is not enabled on this server. |
player-idle-timeout (Kick idle players) | After how many idle minutes the server kicks a player. 0 = never. | 0 | On a busy public server, for example 15, so AFK players don't take up slots. |
op-permission-level (Operator permission level) | The level a player gets with the op command: 1 bypasses spawn protection, 2 game commands and command blocks, 3 player management (kick, ban, op), 4 everything including stop. | 4 | Lower it if you give op to people who shouldn't be able to stop the server. LuckPerms is the better option, though. |
hide-online-players (Hide player list) | The server list won't show the names of connected players (the count stays). | false | true if you don't want to reveal who's playing. |
enforce-secure-profile (Require signed chat) | Only lets in players with a chat signing key from Mojang. | true | false when you use Geyser – otherwise Bedrock players couldn't chat. |
online-mode=false
With authentication off, anyone can join under any name, including operators' names. An attacker can log in as you and get all your rights. The customer area shows a warning for this setting. Only turn it off on a server behind a Velocity proxy with forwarding enabled (guide), never on a server that's reachable directly.
You manage the whitelist and operators with commands, covered in detail in Whitelist, operators and bans.
World group#
| Setting | What it does | Recommended value | When to change |
|---|---|---|---|
level-name (World folder) | The name of the world folder. If the folder doesn't exist, the server creates a new world. Allowed are letters without accents, digits, spaces, _ and -. | world | When you want to switch to another world (for example an uploaded one). The old world stays on the disk. See Upload your own world. |
level-seed (Seed) | The terrain generator seed. Empty = random seed. | Empty | When you want a specific world (a seed from the internet or from single-player). Only applies to a newly created world. You can get the seed of the running world with the seed command. |
level-type (World type) | Generator: minecraft:normal, minecraft:flat (flat), minecraft:large_biomes (large biomes), minecraft:amplified (amplified, very demanding), minecraft: (single biome). | minecraft:normal | Only before a new world is created. Has no effect on an existing world. |
view-distance (View distance) | How many chunks around the player the server sends to the client (radius, 1 chunk = 16 × 16 blocks). Players never see further, even if their game is set higher. | 10 | Lower it to 8 or 6 when the server lags. The performance impact is big: 10 means 441 chunks per player, 8 only 289. A sensible range is 3–32. |
simulation-distance (Simulation distance) | Within what radius (in chunks) around the player entities, redstone, crop growth and farms run. | 8–10 | Lower it to 6 when the server lags. Anything further from the player than the simulation reaches stops (farms, redstone, growth). Below 5, most larger farms stop working. It should be less than or equal to view-distance. |
allow-nether (Nether) | Whether players can go to the Nether through a portal. | true | From version 1.21.9 this key does nothing; it's set with a game rule. |
generate-structures (Generate structures) | Villages, temples, strongholds and other structures in newly generated terrain. | true | false for clean terrain (building servers). Doesn't change terrain that's already generated. |
spawn-monsters (Monsters) | Whether monsters spawn naturally. | true | From version 1.21.9 this key does nothing; it's set with a game rule. |
spawn-npcs (Villagers) | Whether villagers spawn. | true | From version 1.21.2 this key does nothing and has no replacement. |
max-world-size (Maximum world size) | The radius in blocks from the center where the world border sits. The maximum is 29999984. | Leave the default | To limit the world, use the worldborder command instead – you can change it while the server runs and it has its own center. |
Performance
You save the most performance with view and simulation distance and by pre-generating the world. Details are in Minecraft server performance.
Network and RCON group#
| Setting | What it does | Recommended value | When to change |
|---|---|---|---|
network-compression-threshold (Compression threshold) | Packets larger than this many bytes are compressed. -1 turns compression off, 0 compresses everything. | 256 | Don't change it. A higher value saves CPU but increases data transfer. |
enable-status (Show in the server list) | The server answers server list queries (MOTD, player count). With false the server looks offline in the list, but players can still join. | true | Practically never. |
enable-rcon (RCON) | Turns on RCON – a remote console over the network (TCP). | false | When you need to send commands from another program (a Discord bot, an admin tool). |
rcon.password (RCON password) | The password for connecting to RCON. RCON won't start without a password. | A long random password from the password generator | If you suspect it has leaked. |
rcon.port (RCON port) | The port RCON listens on. It must be one of the server's additional ports. | An additional port from the Network tab | When you remove or replace the port. |
enable-query (Query) | Turns on Query (the GameSpy4 protocol over UDP), which websites and tools use to get the list of players and plugins. | false | When a statistics website requires it. Query answers on the query.port port, which we set automatically. |
RCON and Query on the game port
The customer area warns you: RCON and Query need their own port. So always put RCON on an additional server port. Query uses UDP and must not share a port with another UDP program, typically Geyser or a voice chat plugin. If Geyser runs on the game port, don't turn Query on.
How to turn on RCON#
Open the Network tab and, under Additional ports, click Add port. Note the number of the new port.
Open the Server properties tab, Form mode, Network and RCON group.
Turn on Remote console (RCON).
Enter the new port number in RCON port. A port that doesn't belong to the server won't be saved and you'll see the message
Use one of the server's ports: ….Paste a long random password into RCON password.
Click Save and restart.
After startup, the console shows a line
RCON running on …with the address and your port. If you seeNo rcon password set in server.properties, rcon disabled!instead, the password is missing.
Only the service owner and members with the Secrets permission can turn on RCON, change it and see its password. Everyone else sees the password as ********, and saving doesn't change it.
RCON isn't encrypted
The password and commands travel over the network unencrypted. Use a long random password, don't put it into public tools and turn RCON off when you don't need it.
Advanced group#
| Setting | What it does | Recommended value | When to change |
|---|---|---|---|
resource-pack (Resource pack) | A direct link to a .zip resource pack that the server offers players when they join. | Empty | When you have custom textures or sounds. For the steps, see Resource pack step by step. |
resource-pack-sha1 (Resource pack SHA-1) | The pack's checksum (40 characters). It lets clients detect that the pack has changed and download it again. | Always fill it in when you use a resource pack | After every change to the pack. |
require-resource-pack (Require resource pack) | Players who decline the pack are disconnected. | false | true when the game isn't playable without the pack (custom items, maps). |
sync-chunk-writes (Synchronous chunk writes) | Chunk saving waits for the disk to confirm the write. Protects data in a crash but slows down saving. | true | Don't change it. On Paper this key does nothing by default. |
Other keys (text mode only)#
The form doesn't know these keys. Edit them in Text mode. If they're missing from the file, the server adds them with their default value on startup.
| Setting | What it does | Recommended value | When to change |
|---|---|---|---|
accepts-transfers | Accepts players redirected from another server with the transfer command. | false | true when you move players between your own servers without a proxy. |
broadcast-console-to-ops | Operators in the game see the output of commands typed in the console. | true | false when it bothers you in the game. |
broadcast-rcon-to-ops | The same for commands sent over RCON. | true | false when RCON is used by a bot that sends lots of commands. |
bug-report-link | A bug report link in the server links menu in the game. | Empty | When you have a website or Discord for bug reports. |
chat-spam-threshold-seconds | Automatically kicks players for chat spam (from version 26.2). 0 turns the check off. | 10 | Lower it if the check on fast typing is too strict. |
command-spam-threshold-seconds | The same for commands (from version 26.2). | 10 | See above. |
enable-code-of-conduct | The server shows rules from the codeofconduct folder (<language>.txt files, for example en_us.txt) and players have to accept them (from version 1.21.9). | false | true when you want players to agree to the rules before playing. |
enable-jmx-monitoring | Exposes tick times over JMX for monitoring tools. | false | Only with your own monitoring on a VPS. |
entity-broadcast-range-percentage | From what distance the server sends entities to players, as a percentage of the default (10–1000). | 100 | Lowering it (for example to 75) eases the load on the network and clients on servers with many entities. |
function-permission-level | The permission level that datapack functions run with (1–4). | 2 | Only when a datapack explicitly requires it. |
generator-settings | Generator settings for a flat world in JSON format. | {} | Only for a custom flat world, before it's created. |
initial-enabled-packs / initial-disabled-packs | Datapacks enabled or disabled when a new world is created (comma-separated). | vanilla / empty | When you want experimental features from the moment the world is created. |
log-ips | Writes players' IP addresses to the console and the log. | true | false when you don't want IP addresses in the log (privacy, streaming). |
max-chained-neighbor-updates | A limit on chained block updates. Protects the server from freezing because of huge redstone circuits. | 1000000 | Don't change it. |
max-tick-time | After how many milliseconds of a single tick the server decides it has frozen and shuts down (the watchdog). -1 turns the watchdog off. Not used on Paper and Purpur – there the watchdog is controlled by settings.timeout-time in spigot.yml (in seconds, default 60). | 60000 | Don't change it. With the watchdog off, a frozen server hangs forever. |
pause-when-empty-seconds | After how many seconds without players the server pauses the world (from version 1.21.2). | Vanilla 60, Paper off by default (-1) | On Vanilla, set -1 if farms and chunk loaders should keep running without players. |
prevent-proxy-connections | Kicks a player whose internet provider differs from the one the authentication server sees. Weak protection against VPNs. | false | Leave it at false, otherwise it kicks regular players too. |
rate-limit | How many packets a player may send before the server kicks them. 0 = no limit. | 0 | Only when you have problems with packet spam. |
region-file-compression | World compression on disk: deflate, lz4, none (Paper also supports gzip). | deflate | lz4 is faster, but the world takes up more space. The change only applies to newly saved chunks. |
resource-pack-id | An optional resource pack UUID. | Empty | Only with several packs at once. |
resource-pack-prompt | Custom text in the resource pack prompt. | Empty | When you want to explain to players why they need the pack. |
text-filtering-config, text-filtering-version | Chat filtering used by Realms. | Empty / 0 | Don't change them. |
use-native-transport | A faster network layer on Linux. | true | Don't change it. |
For advanced users: Server Management Protocol
From version 1.21.9 the server has a remote management interface (JSON-RPC over WebSocket) for managing players, the whitelist, operators and stopping the server. It's controlled by the keys management-server-enabled, management-server-host, management-server-port, management-server-secret, management-server-tls-enabled, management-server-tls-keystore, management-server-tls-keystore-password, management-server-allowed-origins and status-heartbeat-interval. It's off by default and only listens inside the server. The port must be one of the server's ports, and with TLS the server won't start without a certificate file (keystore). Only the owner and members with the Secrets permission can change these keys. If you don't need the interface, leave it off.
Keys moved to game rules#
In version 1.21.9, Mojang moved several keys from server.properties to game rules (gamerules). On a server running 1.21.9 or newer, these keys have no effect. A newly created file no longer contains them. If they're left in the file from an earlier version, the server ignores them – and changing them in the form does nothing. You set them with the gamerule command in the console (without a slash), and they're saved in the world.
| Original key | Game rule from version 1.21.11 (and 26.x) | Example command |
|---|---|---|
pvp | pvp | gamerule pvp false |
allow-nether | allow_ | gamerule allow_ |
spawn-monsters | spawn_monsters | gamerule spawn_monsters false |
enable-command-block | command_blocks_work | gamerule command_blocks_work true |
gamerule– the command for reading and changing a game rule.- The second word is the rule name, the third the new value (
true/falseor a number). Without a value, the command prints the current setting.
Paper and Purpur: rules apply to each world separately
On Paper and Purpur, each dimension (Overworld, Nether, End) has its own game rules. A gamerule command typed in the console only changes the Overworld. To turn off PvP everywhere, for example, also type in the console:
execute in minecraft:the_nether run gamerule pvp false
execute in minecraft:the_end run gamerule pvp falseexecute in minecraft:the_nether– the next command runs in the Nether (minecraft:the_end= the End).run gamerule pvp false– the command that runs in that dimension.
On Vanilla, Fabric and NeoForge, rules apply to the whole server and one command is enough.
In versions 1.21.9 and 1.21.10 the rules still had their old names (allowEnteringNetherUsingPortals, spawnMonsters, commandBlocksEnabled, pvp). In version 1.21.11 all rules got new names with underscores. The spawn-animals and spawn-npcs keys were already removed in version 1.21.2 with no replacement.
You'll find a list of other rules in Console and commands.
Colors and formatting in the MOTD#
You set color and style with the § character and a code. A code applies to all text after it until you change it or reset it with §r.
| Code | Color |
|---|---|
§0 | black |
§1 | dark blue |
§2 | dark green |
§3 | dark aqua |
§4 | dark red |
§5 | dark purple |
§6 | gold |
§7 | gray |
§8 | dark gray |
§9 | blue |
§a | green |
§b | aqua |
§c | red |
§d | light purple |
§e | yellow |
§f | white |
| Code | Style |
|---|---|
§l | bold |
§o | italic |
§n | underlined |
§m | strikethrough |
§k | “obfuscated” text (characters keep changing randomly) |
§r | reset color and style |
Example:
motd=§6§lStormCraft §r§7| §aSurvival §7| §fEnglishResult: a bold gold name, gray separators, the word Survival in green and the word English in white.
- Write the style after the color (
§6§l). A new color resets the style. - Copy the
§character from this page. On Windows you can also type it by holding Alt and entering0167on the numeric keypad. - Second line: both the form and text mode in the Server properties tab replace line breaks with a space. To get a two-line MOTD, write it directly in the file: stop the server, open
server.propertiesin the Files tab and put\nbetween the lines, for examplemotd=§6First line\n§7Second line. Save (Ctrl+S) and start the server.
Server icon#
The icon in the server list comes from the server-icon.png image in the server's main folder. It must be a PNG of exactly 64 × 64 pixels. Upload it in the Files tab and restart the server.
Resource pack step by step#
- Prepare the resource pack as a
.zip. Thepack.mcmetafile must be directly in the root of the archive, not in a subfolder. - Upload the archive to storage that offers a direct download link. The link must point straight to the
.zipfile, not to a page with a “Download” button. The pack can be at most 250 MiB. - Calculate the archive's SHA-1 checksum:
Windows
Open PowerShell in the folder with the archive and run:
(Get-FileHash .\<FILE>.zip -Algorithm SHA1).Hash.ToLower()Get-FileHash– calculates the file's checksum.-Algorithm SHA1– uses the SHA-1 algorithm that Minecraft requires..Hash.ToLower()– prints only the checksum, in lowercase.
macOS
In Terminal, in the folder with the archive, run:
shasum -a 1 <FILE>.zipshasum -a 1– calculates the SHA-1 checksum. The checksum is the first column of the output.
Linux
In a terminal, in the folder with the archive, run:
sha1sum <FILE>.zipsha1sum– calculates the SHA-1 checksum. The checksum is the first column of the output.
Replace <FILE> with the archive name without the extension and without the angle brackets – so <FILE>.zip becomes, for example, textures.zip. The result is 40 characters made of digits and the letters a–f.
- In the Server properties tab, open the Advanced group.
- Paste the direct link into Resource pack. It must start with
http://orhttps://(we recommendhttps://). - Paste the calculated checksum into Resource pack SHA-1.
- If the game isn't playable without the pack, turn on Require resource pack.
- Click Save and restart.
When players join, they'll be offered the pack to download. Every time you change the pack, calculate a new checksum and save it, otherwise players will stay on the old cached version.
Verify it works#
- After saving, wait for the restart and for the
Done (…)! For help, type "help"line in the Console. - In the Server properties tab, click Reload and check that the values stayed.
- In the game, open the server list and refresh it (Refresh). You'll see the new MOTD and slot count.
- For game rules, type the rule name without a value in the console, for example
gamerule pvp, and check the output.
Troubleshooting#
The file changed in the meantime (the server rewrites it on start).#
Between opening the form and saving, the server rewrote the file (typically on startup). Click Reload and make your changes again. The safest way is to edit the settings while the server is stopped, or to use Save and restart straight away.
The change didn't take effect#
- The server only reads the file on startup. Restart it.
- The value may have been invalid and the server replaced it with the default on startup. Check for typos,
true/falsein lowercase and numbers without spaces. level-seed,level-typeandgenerate-structuresonly apply to a new world. They have no effect on an existing world.
Changing pvp, allow-nether or spawn-monsters did nothing (or the key is missing from the form)#
The server runs version 1.21.9 or newer, where these keys don't work. Set a game rule instead, see Keys moved to game rules.
You are not white-listed on this server!#
The whitelist is on (from version 26.3 also on a new server). Add the player with whitelist add <NICK> in the console, or turn the whitelist off (white-list=false). Details are in Whitelist, operators and bans.
Locked keys were restored to their original value: server-port.#
You tried to change the server's address or port. We set those automatically. You can see the server port in the Network tab; add more ports with the Add port button.
Use one of the server's ports: …#
The RCON (or Server Management Protocol) port must belong to the server. Add a port in the Network tab and enter it.
Players get disconnected after joining because of the resource pack#
- The link doesn't point directly to a
.zip. Open it in a private browser window – the file should start downloading right away. - The SHA-1 doesn't match the pack (you changed the pack but not the checksum). Calculate it again.
- The pack is larger than 250 MiB.
Flying is not enabled on this server#
The player is flying (plugin, mod; an elytra with fireworks doesn't count) and allow-flight is false. Turn on Allow flight.
Summary
- Changes to
server.propertiesonly take effect after a restart – use Save and restart. - We set
server-ip,server-portandquery.portautomatically; always put RCON on an additional port from the Network tab. online-mode=falseonly behind a proxy with forwarding, otherwise anyone can log in as an operator.- From version 1.21.9,
pvp,allow-nether,spawn-monstersandenable-command-blockare game rules (thegamerulecommand). - From version 26.3 the whitelist is on by default on a new server.
view-distanceandsimulation-distancesave the most performance.