- Values are case-sensitive: write
true, notTrue. - A setting that is missing or has an invalid value is set to its default when the server starts.
- The server rewrites the file on startup, escaping some characters such as
:. The server.properties Generator writes values the same way. - Old settings such as
pvpandallow-netherare game rules now. See how to configure server.properties.
Basic server settings
| Setting | Default | Allowed values | What it does |
|---|---|---|---|
motd | A Minecraft Server | Text | The text shown under the server name in the server list. Supports § colour and formatting codes. |
max-players | 20 | 0 to 2,147,483,647 | How many players can be online at the same time. |
gamemode | survival | survival, creative, adventure, spectator | The game mode new players start in. |
force-gamemode | false | true, false | Put players back into the default game mode every time they join. |
difficulty | easy | peaceful, easy, normal, hard | How much damage mobs deal and how hunger affects players. |
hardcore | false | true, false | Create the world in hardcore mode: players who die can only spectate. |
World
| Setting | Default | Allowed values | What it does |
|---|---|---|---|
level-name | world | Text (required) | The folder the world is loaded from. If it doesn’t exist, a new world is generated there. |
level-seed | empty | Text | A number or any text. Leave it empty for a random seed. Only used when a new world is generated. |
level-type | minecraft:normal | minecraft:normal, minecraft:flat, minecraft:large_biomes, minecraft:amplified, minecraft:single_biome_surface | The world preset used when a new world is generated. |
generate-structures | true | true, false | Generate villages, temples and other structures in new chunks. Dungeons still generate when this is off. |
generator-settings | {} | A JSON object | A JSON object that customises Superflat and Single biome worlds. Leave as {} for other world types. |
max-world-size | 29999984 | 1 to 29,999,984 | The largest radius, in blocks from the centre, that the world border can have. |
initial-enabled-packs | vanilla | Text | Comma-separated data packs enabled when the world is created. Feature packs must be listed here to be enabled. |
initial-disabled-packs | empty | Text | Comma-separated data packs that aren’t enabled automatically when the world is created. |
region-file-compression | deflate | deflate, lz4, none | How chunks are compressed on disk. Existing chunks aren’t recompressed until they change. |
sync-chunk-writes | true | true, false | Write chunks to disk synchronously to avoid data loss after a crash, at some cost to speed. |
Gameplay
| Setting | Default | Allowed values | What it does |
|---|---|---|---|
view-distance | 10 | 3 to 32 | How many chunks the server sends around each player (radius). |
simulation-distance | 10 | 3 to 32 | How many chunks around each player keep updating mobs, crops and redstone (radius). |
spawn-protection | 16 | 0 to 2,147,483,647 | Non-operators can’t break or place blocks within this many blocks of spawn. 0 turns it off. It has no effect while there are no operators. |
allow-flight | false | true, false | Don’t kick players who fly in Survival mode, for example with a mod. Creative flight works either way. |
player-idle-timeout | 0 | 0 to 2,147,483,647 | Kick players who have been idle this many minutes. 0 never kicks idle players. |
pause-when-empty-seconds | 60 | 0 to 2,147,483,647 | How long the server waits after the last player leaves before it pauses the world. |
entity-broadcast-range-percentage | 100 | 10 to 1,000 | How far away entities are sent to players, as a percentage of the normal distance. |
max-chained-neighbor-updates | 1000000 | -2,147,483,648 to 2,147,483,647 | Limit on consecutive block updates before extra ones are skipped. A negative value removes the limit. |
op-permission-level | 4 | 0 to 4 | The permission level players get from /op, from 0 to 4. |
function-permission-level | 2 | 1 to 4 | The permission level data pack functions run with, from 1 to 4. |
enable-code-of-conduct | false | true, false | Show players a code of conduct from text files in the server’s codeofconduct folder. |
Network and security
| Setting | Default | Allowed values | What it does |
|---|---|---|---|
server-port | 25565 | 1 to 65,535 | The TCP port players connect to. 25565 is the standard Java Edition port. |
online-mode | true | true, false | Check every player against Microsoft’s account servers. |
white-list | true | true, false | Only let players listed in whitelist.json join. Operators can always join. |
enforce-whitelist | false | true, false | Kick online players who aren’t on the whitelist when it is reloaded. |
server-ip | empty | Text without spaces | Leave empty to listen on every network interface, which is right for almost every server. Only set an address if the machine has several and you want to use one. |
enforce-secure-profile | true | true, false | Only allow players with a Mojang-signed chat key, so chat messages can be reported. |
prevent-proxy-connections | false | true, false | Kick players whose network doesn’t match the one Mojang’s authentication servers saw. |
enable-status | true | true, false | Answer server list pings. When off, the server looks offline but players can still join. |
hide-online-players | false | true, false | Don’t send the list of online players in server list pings. |
accepts-transfers | false | true, false | Accept players sent here from another server with the /transfer command. |
log-ips | true | true, false | Include player IP addresses in the console and log files. |
rate-limit | 0 | 0 to 2,147,483,647 | Kick players who send more packets per second than this. 0 turns it off. |
chat-spam-threshold-seconds | 10 | 0 to 2,147,483,647 | Sensitivity of the automatic kick for sending chat messages too quickly. 0 turns it off. |
command-spam-threshold-seconds | 10 | 0 to 2,147,483,647 | Sensitivity of the automatic kick for sending commands too quickly. 0 turns it off. |
network-compression-threshold | 256 | -1 to 2,147,483,647 | Packets of at least this many bytes are compressed. -1 turns compression off, 0 compresses everything. |
use-native-transport | true | true, false | Use optimised networking on Linux. |
bug-report-link | empty | Text without spaces | A URL players can open from the pause menu to report bugs. Leave empty to show no link. |
Resource pack
| Setting | Default | Allowed values | What it does |
|---|---|---|---|
resource-pack | empty | Text without spaces | A direct download link to a server resource pack (up to 250 MiB). Leave empty for none. |
resource-pack-sha1 | empty | 40 hexadecimal characters, or empty | The pack’s SHA-1 hash in lowercase hex, so clients can check the download. |
resource-pack-id | empty | A UUID with dashes, or empty | An optional UUID that identifies the pack to clients. |
require-resource-pack | false | true, false | Disconnect players who decline the resource pack. |
resource-pack-prompt | empty | Text | A custom message for the resource pack prompt, as a text component. Leave empty for the default message. |
Remote access and monitoring
| Setting | Default | Allowed values | What it does |
|---|---|---|---|
enable-rcon | false | true, false | Allow remote console access. RCON isn’t encrypted, so only use it on a trusted network. |
rcon.port | 25575 | 1 to 65,535 | The TCP port RCON listens on. |
rcon.password | empty | Text | Required for RCON to start. It is stored as plain text in server.properties. This page doesn’t save or send it. |
broadcast-rcon-to-ops | true | true, false | Send the output of RCON commands to online operators. |
broadcast-console-to-ops | true | true, false | Send the output of console commands to online operators. |
enable-query | false | true, false | Answer GameSpy4 query requests with server information. |
query.port | 25565 | 1 to 65,535 | The UDP port query listens on. |
enable-jmx-monitoring | false | true, false | Expose tick times through Java Management Extensions. Also needs JVM flags. |
Server Management Protocol
| Setting | Default | Allowed values | What it does |
|---|---|---|---|
management-server-enabled | false | true, false | Start the Minecraft Server Management Protocol, an API for managing the server over a WebSocket. |
management-server-host | localhost | Text without spaces | The address the management server listens on. |
management-server-port | 0 | 0 to 65,535 | The port the management server listens on. |
management-server-secret | empty | 40 letters and digits, or empty | A 40-character letters-and-digits secret clients must send. Leave empty and the server generates one. |
management-server-tls-enabled | true | true, false | Use TLS for the management server. It won’t start with TLS on and no keystore. |
management-server-tls-keystore | empty | Text | Path to the keystore file used for TLS. |
management-server-tls-keystore-password | empty | Text | Stored as plain text. The MINECRAFT_MANAGEMENT_TLS_KEYSTORE_PASSWORD environment variable is an alternative. |
management-server-allowed-origins | empty | Text | Web origins allowed to connect to the management server. |
status-heartbeat-interval | 0 | 0 to 2,147,483,647 | How often the management server sends heartbeat notifications to clients. 0 turns them off. |
Other
| Setting | Default | Allowed values | What it does |
|---|---|---|---|
max-tick-time | 60000 | -1 to 9223372036854775807 | The watchdog stops the server if one tick takes longer than this. -1 turns the watchdog off. |
text-filtering-config | empty | Text | Chat filtering configuration used by Realms. Leave empty on your own server. |
text-filtering-version | 0 | 0 to 1 | The format version of the text filtering config (0 or 1). |