Server.properties Generator
Every setting in a Java server's server.properties, with what it does and the default your version's own server writes. Change what you need, then copy or download the file. Java Edition 1.17 to 26.3.
Load the file your server already has, or a preset. Everything stays editable.
Who can join, how many, and the default game mode and difficulty.
motdThe text under the server name in the multiplayer list. Use the MOTD Generator for colors and two lines. Open the MOTD Generator.
A Minecraft Servermax-playersHow many players can be online at once. Operators cannot join a full server either, unless ops.json lets them bypass the limit.
20online-modeChecks every player against Mojang's account servers. Turn it off only behind a proxy that checks accounts itself: without it anyone can join under any name.
truewhite-listOnly players in whitelist.json can join. Operators can always join.
trueenforce-whitelistKicks online players who are not on the whitelist when it is reloaded. Has no effect unless the whitelist is on.
falsedifficultyThe world's difficulty. Old number values (0 to 3) are still read and turned into these names.
easygamemodeThe game mode new players start in.
survivalforce-gamemodePuts players back in the default game mode every time they join, instead of the mode they left in.
falsehardcoreLocks the difficulty to Hard, and players who die become spectators.
falseUsed when the world is first created. Changing them later does not regenerate existing chunks.
level-nameThe world folder the server loads, or creates if it is missing.
worldlevel-seedThe seed for a new world. Leave it empty for a random one.
(empty)level-typeThe world preset for a new world.
minecraft:normalgenerator-settingsJSON settings for the flat and single-biome world types. Leave as it is for a normal world.
{}generate-structuresVillages, temples and other structures in new chunks. Dungeons still generate when it is off.
truemax-world-sizeThe largest radius, in blocks, the world border can be set to.
29999984spawn-protectionNon-operators cannot build within this many blocks of spawn (a square 2 × this + 1 wide). 0 turns it off. It only applies while the server has at least one operator.
16Permissions, idle kicks, chat signing and what the server announces.
allow-flightStops the server kicking Survival players who hover for over 5 seconds. Turn it on if players use flight mods or plugins. Creative flying is never affected.
falseop-permission-levelWhat /op gives: 1 bypasses spawn protection, 2 adds cheat commands and command blocks, 3 adds player management (kick, ban, op), 4 adds server management (stop, save).
4function-permission-levelThe permission level functions in data packs run with.
2player-idle-timeoutKicks players who have not moved for this many minutes. 0 never kicks.
0enforce-secure-profileNew in 1.19Players need a Mojang-signed chat key to join. Turn it off only if players without one (some launchers) cannot get in.
truehide-online-playersNew in 1.18Leaves the player list out of the server list status, so nobody can see who is online.
falseprevent-proxy-connectionsKicks players whose connection comes from a different network than the one Mojang's login saw (a VPN or proxy).
falselog-ipsNew in 1.20.2Writes players' IP addresses to the log when they join.
truebroadcast-console-to-opsOnline operators see the output of commands typed in the console.
truebroadcast-rcon-to-opsOnline operators see the output of commands sent over RCON.
truetext-filtering-configNew in 1.16.4Settings for an external chat filter service. Used by Mojang's Realms; leave empty.
(empty)text-filtering-versionNew in 1.21.2Which version of the external chat filter service the server talks to. Only matters with a text filtering config; leave it at 0.
0accepts-transfersNew in 1.20.5Lets another server send players here with /transfer.
falsebug-report-linkNew in 1.21A web page where players can report bugs on your server. The server sends it to players, who can open it from the game.
(empty)enable-code-of-conductNew in 1.21.9Shows players a code of conduct to accept when they join, from text files in a codeofconduct folder beside server.properties, named by language (en_us.txt).
falsechat-spam-threshold-secondsNew in 26.2Kicks a player who sends chat messages faster than this allows. 0 turns the chat spam kick off.
10command-spam-threshold-secondsNew in 26.2The same for commands typed by players. 0 turns the command spam kick off.
10How far the server loads and simulates, and how it saves and sends data.
view-distanceHow many chunks around each player the server sends, as a radius. Lower is lighter on the server.
10simulation-distanceNew in 1.18How many chunks around each player keep ticking: mobs move, crops grow, redstone runs. Lower is lighter on the server.
10entity-broadcast-range-percentageHow far away entities are sent to players, as a percentage of the normal distance. Higher shows mobs from further off but costs more.
100max-tick-timeIf one tick takes longer than this, the server decides it has frozen and stops. -1 turns the watchdog off.
60000network-compression-thresholdPackets this many bytes or larger are compressed. -1 turns compression off, 0 compresses everything.
256rate-limitNew in 1.16.2Kicks a player who sends more packets than this per second. 0 turns the limit off.
0sync-chunk-writesWaits for each chunk to be written to disk. Safer if the server crashes; turning it off can speed up saving.
trueuse-native-transportUses Linux's faster network code when the server runs on Linux.
truemax-chained-neighbor-updatesNew in 1.19Limits how many block updates can chain in a row before the rest are skipped. A negative number removes the limit.
1000000enable-jmx-monitoringPublishes tick times for Java monitoring tools (JMX). Also needs JVM flags.
falseregion-file-compressionNew in 1.20.5How newly saved chunks are compressed. Changing it does not recompress chunks already saved.
deflatepause-when-empty-secondsNew in 1.21.2Pauses the world once nobody has been online for this many seconds, so an empty server uses almost no CPU. 0 or less never pauses.
60A pack players download on join, and the data packs a new world starts with.
initial-enabled-packsNew in 1.19.3Data packs a NEW world starts with, comma separated. Experimental feature packs must be listed here to be on.
vanillainitial-disabled-packsNew in 1.19.3Data packs a NEW world does not turn on automatically, comma separated.
(empty)resource-packA direct download link to a .zip players are offered on join.
(empty)resource-pack-sha1The SHA-1 hash of the .zip, lowercase hex. Lets players reuse a cached copy and catches a wrong download.
(empty)require-resource-packNew in 1.17Players who decline the pack are disconnected.
falseresource-pack-promptNew in 1.17A custom message on the download prompt, as a JSON text component.
(empty)resource-pack-idNew in 1.20.3A UUID that names the pack, so players keep one cached copy across URL changes. Left empty, it is made from the URL.
(empty)Ports, RCON, query and status replies.
server-portThe port players connect to. Forward it on your router if you host from home.
25565server-ipListen on one IP address only. Leave it empty unless you know you need it.
(empty)enable-statusWhen off, the server shows as offline in the multiplayer list but players can still join.
trueenable-queryAnswers GameSpy4 query requests (player lists for server sites and bots).
falsequery.portThe UDP port for query.
25565enable-rconRemote console: run commands from another program. It is not encrypted, so never open its port to the internet.
falsercon.portThe TCP port for RCON.
25575rcon.passwordRCON does not start without one.
(empty)The server management protocol for remote tools. Off by default.
status-heartbeat-intervalNew in 1.21.9How often the management server sends connected tools a status notification. 0 sends none.
0management-server-enabledNew in 1.21.9Starts the server management protocol (JSON-RPC over WebSocket) for remote admin tools.
falsemanagement-server-hostNew in 1.21.9The address it listens on. Keep localhost unless a tool on another machine needs it.
localhostmanagement-server-portNew in 1.21.9Its port. 0 picks a free port each time the server starts.
0management-server-secretNew in 1.21.9The token tools sign in with: exactly 40 letters and digits. Left out, the server makes a random one and writes it to the file. Any other value stops the server starting while the management server is on.
made by the servermanagement-server-tls-enabledNew in 1.21.9Encrypts the connection. The server will not start with TLS on and no keystore.
truemanagement-server-tls-keystoreNew in 1.21.9Path to a PKCS12 keystore with the TLS certificate.
(empty)management-server-tls-keystore-passwordNew in 1.21.9The keystore's password. The environment variable MINECRAFT_MANAGEMENT_TLS_KEYSTORE_PASSWORD wins over this if set.
(empty)management-server-allowed-originsNew in 1.21.11Web pages allowed to sign in from a browser, comma separated. Empty blocks browser sign-in.
(empty)Every server.properties setting in Java 26.3
The default is what the 26.3 server itself writes to a new file.
Server basics
| Key | Default | What it does |
|---|---|---|
| motd | A Minecraft Server | The text under the server name in the multiplayer list. Use the MOTD Generator for colors and two lines. |
| max-players | 20 | How many players can be online at once. Operators cannot join a full server either, unless ops.json lets them bypass the limit. |
| online-mode | true | Checks every player against Mojang's account servers. Turn it off only behind a proxy that checks accounts itself: without it anyone can join under any name. |
| white-list | true | Only players in whitelist.json can join. Operators can always join. |
| enforce-whitelist | false | Kicks online players who are not on the whitelist when it is reloaded. Has no effect unless the whitelist is on. |
| difficulty | easy | The world's difficulty. Old number values (0 to 3) are still read and turned into these names. |
| gamemode | survival | The game mode new players start in. |
| force-gamemode | false | Puts players back in the default game mode every time they join, instead of the mode they left in. |
| hardcore | false | Locks the difficulty to Hard, and players who die become spectators. |
World
| Key | Default | What it does |
|---|---|---|
| level-name | world | The world folder the server loads, or creates if it is missing. |
| level-seed | (empty) | The seed for a new world. Leave it empty for a random one. |
| level-type | minecraft:normal | The world preset for a new world. |
| generator-settings | {} | JSON settings for the flat and single-biome world types. Leave as it is for a normal world. |
| generate-structures | true | Villages, temples and other structures in new chunks. Dungeons still generate when it is off. |
| max-world-size | 29999984 | The largest radius, in blocks, the world border can be set to. |
| spawn-protection | 16 | Non-operators cannot build within this many blocks of spawn (a square 2 × this + 1 wide). 0 turns it off. It only applies while the server has at least one operator. |
Players and chat
| Key | Default | What it does |
|---|---|---|
| allow-flight | false | Stops the server kicking Survival players who hover for over 5 seconds. Turn it on if players use flight mods or plugins. Creative flying is never affected. |
| op-permission-level | 4 | What /op gives: 1 bypasses spawn protection, 2 adds cheat commands and command blocks, 3 adds player management (kick, ban, op), 4 adds server management (stop, save). |
| function-permission-level | 2 | The permission level functions in data packs run with. |
| player-idle-timeout | 0 | Kicks players who have not moved for this many minutes. 0 never kicks. |
| enforce-secure-profile | true | Players need a Mojang-signed chat key to join. Turn it off only if players without one (some launchers) cannot get in. Added in 1.19. |
| hide-online-players | false | Leaves the player list out of the server list status, so nobody can see who is online. Added in 1.18. |
| prevent-proxy-connections | false | Kicks players whose connection comes from a different network than the one Mojang's login saw (a VPN or proxy). |
| log-ips | true | Writes players' IP addresses to the log when they join. Added in 1.20.2. |
| broadcast-console-to-ops | true | Online operators see the output of commands typed in the console. |
| broadcast-rcon-to-ops | true | Online operators see the output of commands sent over RCON. |
| text-filtering-config | (empty) | Settings for an external chat filter service. Used by Mojang's Realms; leave empty. Added in 1.16.4. |
| text-filtering-version | 0 | Which version of the external chat filter service the server talks to. Only matters with a text filtering config; leave it at 0. Added in 1.21.2. |
| accepts-transfers | false | Lets another server send players here with /transfer. Added in 1.20.5. |
| bug-report-link | (empty) | A web page where players can report bugs on your server. The server sends it to players, who can open it from the game. Added in 1.21. |
| enable-code-of-conduct | false | Shows players a code of conduct to accept when they join, from text files in a codeofconduct folder beside server.properties, named by language (en_us.txt). Added in 1.21.9. |
| chat-spam-threshold-seconds | 10 | Kicks a player who sends chat messages faster than this allows. 0 turns the chat spam kick off. Added in 26.2. |
| command-spam-threshold-seconds | 10 | The same for commands typed by players. 0 turns the command spam kick off. Added in 26.2. |
Performance
| Key | Default | What it does |
|---|---|---|
| view-distance | 10 | How many chunks around each player the server sends, as a radius. Lower is lighter on the server. |
| simulation-distance | 10 | How many chunks around each player keep ticking: mobs move, crops grow, redstone runs. Lower is lighter on the server. Added in 1.18. |
| entity-broadcast-range-percentage | 100 | How far away entities are sent to players, as a percentage of the normal distance. Higher shows mobs from further off but costs more. |
| max-tick-time | 60000 | If one tick takes longer than this, the server decides it has frozen and stops. -1 turns the watchdog off. |
| network-compression-threshold | 256 | Packets this many bytes or larger are compressed. -1 turns compression off, 0 compresses everything. |
| rate-limit | 0 | Kicks a player who sends more packets than this per second. 0 turns the limit off. Added in 1.16.2. |
| sync-chunk-writes | true | Waits for each chunk to be written to disk. Safer if the server crashes; turning it off can speed up saving. |
| use-native-transport | true | Uses Linux's faster network code when the server runs on Linux. |
| max-chained-neighbor-updates | 1000000 | Limits how many block updates can chain in a row before the rest are skipped. A negative number removes the limit. Added in 1.19. |
| enable-jmx-monitoring | false | Publishes tick times for Java monitoring tools (JMX). Also needs JVM flags. |
| region-file-compression | deflate | How newly saved chunks are compressed. Changing it does not recompress chunks already saved. Added in 1.20.5. |
| pause-when-empty-seconds | 60 | Pauses the world once nobody has been online for this many seconds, so an empty server uses almost no CPU. 0 or less never pauses. Added in 1.21.2. |
Resource pack and data packs
| Key | Default | What it does |
|---|---|---|
| initial-enabled-packs | vanilla | Data packs a NEW world starts with, comma separated. Experimental feature packs must be listed here to be on. Added in 1.19.3. |
| initial-disabled-packs | (empty) | Data packs a NEW world does not turn on automatically, comma separated. Added in 1.19.3. |
| resource-pack | (empty) | A direct download link to a .zip players are offered on join. |
| resource-pack-sha1 | (empty) | The SHA-1 hash of the .zip, lowercase hex. Lets players reuse a cached copy and catches a wrong download. |
| require-resource-pack | false | Players who decline the pack are disconnected. Added in 1.17. |
| resource-pack-prompt | (empty) | A custom message on the download prompt, as a JSON text component. Added in 1.17. |
| resource-pack-id | (empty) | A UUID that names the pack, so players keep one cached copy across URL changes. Left empty, it is made from the URL. Added in 1.20.3. |
Network and remote access
| Key | Default | What it does |
|---|---|---|
| server-port | 25565 | The port players connect to. Forward it on your router if you host from home. |
| server-ip | (empty) | Listen on one IP address only. Leave it empty unless you know you need it. |
| enable-status | true | When off, the server shows as offline in the multiplayer list but players can still join. |
| enable-query | false | Answers GameSpy4 query requests (player lists for server sites and bots). |
| query.port | 25565 | The UDP port for query. |
| enable-rcon | false | Remote console: run commands from another program. It is not encrypted, so never open its port to the internet. |
| rcon.port | 25575 | The TCP port for RCON. |
| rcon.password | (empty) | RCON does not start without one. |
Management server
| Key | Default | What it does |
|---|---|---|
| status-heartbeat-interval | 0 | How often the management server sends connected tools a status notification. 0 sends none. Added in 1.21.9. |
| management-server-enabled | false | Starts the server management protocol (JSON-RPC over WebSocket) for remote admin tools. Added in 1.21.9. |
| management-server-host | localhost | The address it listens on. Keep localhost unless a tool on another machine needs it. Added in 1.21.9. |
| management-server-port | 0 | Its port. 0 picks a free port each time the server starts. Added in 1.21.9. |
| management-server-secret | random | The token tools sign in with: exactly 40 letters and digits. Left out, the server makes a random one and writes it to the file. Any other value stops the server starting while the management server is on. Added in 1.21.9. |
| management-server-tls-enabled | true | Encrypts the connection. The server will not start with TLS on and no keystore. Added in 1.21.9. |
| management-server-tls-keystore | (empty) | Path to a PKCS12 keystore with the TLS certificate. Added in 1.21.9. |
| management-server-tls-keystore-password | (empty) | The keystore's password. The environment variable MINECRAFT_MANAGEMENT_TLS_KEYSTORE_PASSWORD wins over this if set. Added in 1.21.9. |
| management-server-allowed-origins | (empty) | Web pages allowed to sign in from a browser, comma separated. Empty blocks browser sign-in. Added in 1.21.11. |
How to use the Server.properties Generator
Every setting in a Java server's server.properties, with what it does and the default its own version writes, read from each version's real server. Settings added, removed or moved to game rules follow the version you pick.
Quick steps
- 1Pick your server's version at the top
- 2Open your current server.properties, or start from a preset
- 3Change what you need; search finds a setting by name
- 4Download the file, or copy it, and put it in your server folder
Example use cases
- Setting up a new server without guessing what each key does
- Moving a server to a new version and seeing which settings changed or became game rules
- A whitelisted server for friends, or a lighter one for a small machine