server.properties is the file that stores all the settings for a multiplayer (Minecraft or Minecraft Classic) server.
When editing server.properties, it is important that the same structure as the original is used, although the order of the lines is arbitrary. The text before the equal sign is the key, which should not be changed. The text after the equal sign is the property's value, which can be edited. Lines that begin with
# are comments – altering or removing these lines has no effect on the game.
After changes are made to the
server.properties file, the server must be restarted for them to take effect. Another option is to use the
/reload command in the server console or in-game, which will also allow changes to be reloaded.
server.properties file does not list all properties (such as if a new version of the server adds new properties, or if the file does not exist), then on startup, the server rewrites the server.properties file with the new properties listed and set them to their default values.
server.properties file is simply a normal text file with UTF-8 encoding, despite its extension, and can therefore be edited with any text editor such as Notepad for Windows, TextEdit for Mac, or nano and vim for Linux.
This file is automatically generated upon the first start of the server (if it does not exist).
|Windows||In the Working Directory (Defaults to the same folder as
||If the player starts the server by clicking on either |
|Path of Working Directory (pwd)||
If the player starts it from their home directory (
This file is downloaded with bedrock_server.exe
|Windows||Same directory as bedrock_server.exe|
|Linux||Same directory as bedrock_server|
These are the default settings for a newly installed Minecraft server:
#Minecraft server properties #(last boot timestamp) spawn-protection=16 max-tick-time=60000 query.port=25565 generator-settings= sync-chunk-writes=true force-gamemode=false allow-nether=true enforce-whitelist=false gamemode=survival broadcast-console-to-ops=true enable-query=false player-idle-timeout=0 text-filtering-config= difficulty=easy broadcast-rcon-to-ops=true spawn-monsters=true op-permission-level=4 pvp=true entity-broadcast-range-percentage=100 snooper-enabled=true level-type=default enable-status=true resource-pack-prompt= hardcore=false enable-command-block=false network-compression-threshold=256 max-players=20 max-world-size=29999984 resource-pack-sha1= function-permission-level=2 rcon.port=25575 server-port=25565 server-ip= spawn-npcs=true require-resource-pack=false allow-flight=false level-name=world view-distance=10 resource-pack= spawn-animals=true white-list=false rcon.password= generate-structures=true online-mode=true level-seed= prevent-proxy-connections=false use-native-transport=true enable-jmx-monitoring=false motd=A Minecraft Server rate-limit=0 enable-rcon=false
Default as of 21w15a.
server-name=Dedicated Server # Used as the server name # Allowed values: Any string without semicolon symbol. gamemode=survival # Sets the game mode for new players. # Allowed values: "survival", "creative", or "adventure" force-gamemode=false # force-gamemode=false (or force-gamemode is not defined in the server.properties) # prevents the server from sending to the client gamemode values other # than the gamemode value saved by the server during world creation # even if those values are set in server.properties after world creation. # # force-gamemode=true forces the server to send to the client gamemode values # other than the gamemode value saved by the server during world creation # if those values are set in server.properties after world creation. difficulty=easy # Sets the difficulty of the world. # Allowed values: "peaceful", "easy", "normal", or "hard" allow-cheats=false # If true then cheats like commands can be used. # Allowed values: "true" or "false" max-players=10 # The maximum number of players that can play on the server. # Allowed values: Any positive integer online-mode=true # If true then all connected players must be authenticated to Xbox Live. # Clients connecting to remote (non-LAN) servers will always require Xbox Live authentication regardless of this setting. # If the server accepts connections from the Internet, then it's highly recommended to enable online-mode. # Allowed values: "true" or "false" white-list=false # If true then all connected players must be listed in the separate whitelist.json file. # Allowed values: "true" or "false" server-port=19132 # Which IPv4 port the server should listen to. # Allowed values: Integers in the range [1, 65535] server-portv6=19133 # Which IPv6 port the server should listen to. # Allowed values: Integers in the range [1, 65535] view-distance=32 # The maximum allowed view distance in number of chunks. # Allowed values: Positive integer equal to 5 or greater. tick-distance=4 # The world will be ticked this many chunks away from any player. # Allowed values: Integers in the range [4, 12] player-idle-timeout=30 # After a player has idled for this many minutes they will be kicked. If set to 0 then players can idle indefinitely. # Allowed values: Any non-negative integer. max-threads=8 # Maximum number of threads the server will try to use. If set to 0 or removed then it will use as many as possible. # Allowed values: Any positive integer. level-name=Bedrock level # Allowed values: Any string without semicolon symbol or symbols illegal for file name: /\n\r\t\f`?*\\<>|\": level-seed= # Use to randomize the world # Allowed values: Any string default-player-permission-level=member # Permission level for new players joining for the first time. # Allowed values: "visitor", "member", "operator" texturepack-required=false # Force clients to use texture packs in the current world # Allowed values: "true" or "false" content-log-file-enabled=false # Enables logging content errors to a file # Allowed values: "true" or "false" compression-threshold=1 # Determines the smallest size of raw network payload to compress # Allowed values: 0-65535 server-authoritative-movement=server-auth # Allowed values: "client-auth", "server-auth", "server-auth-with-rewind" # Enables server authoritative movement. If "server-auth", the server will replay local user input on # the server and send down corrections when the client's position doesn't match the server's. # If "server-auth-with-rewind" is enabled and the server sends a correction, the clients will be instructed # to rewind time back to the correction time, apply the correction, then replay all the player's inputs since then. This results in smoother and more frequent corrections. # Corrections will only happen if correct-player-movement is set to true. player-movement-score-threshold=20 # The number of incongruent time intervals needed before abnormal behavior is reported. # Disabled by server-authoritative-movement. player-movement-distance-threshold=0.3 # The difference between server and client positions that needs to be exceeded before abnormal behavior is detected. # Disabled by server-authoritative-movement. player-movement-duration-threshold-in-ms=500 # The duration of time the server and client positions can be out of sync (as defined by player-movement-distance-threshold) # before the abnormal movement score is incremented. This value is defined in milliseconds. # Disabled by server-authoritative-movement. correct-player-movement=false # If true, the client position will get corrected to the server position if the movement score exceeds the threshold. server-authoritative-block-breaking=false # If true, the server will compute block mining operations in sync with the client so it can verify that the client should be able to break blocks when it thinks it can.
Default as of 1.16.220.02.
Minecraft server properties
|allow-flight||boolean||false||Allows users to use flight on the server while in Survival mode, if they have a mod that provides flight installed.
With allow-flight enabled, griefers may become more common, because it makes their work easier. In Creative mode, this has no effect.
|allow-nether||boolean||true||Allows players to travel to the Nether.|
|broadcast-console-to-ops||boolean||true||Send console command outputs to all online operators.|
|broadcast-rcon-to-ops||boolean||true||Send rcon console command outputs to all online operators.|
|difficulty||string||easy||Defines the difficulty (such as damage dealt by mobs and the way hunger and poison affects players) of the server.
If a legacy difficulty number is specified, it is silently converted to a difficulty name.
|enable-command-block||boolean||false||Enables command blocks|
|enable-jmx-monitoring||boolean||false||Exposes an MBean with the Object name |
In order for enabling JMX on the Java runtime you also need to add a couple of JVM flags to the startup as documented here.
|enable-rcon||boolean||false||Enables remote access to the server console.
|sync-chunk-writes||boolean||true||Enables synchronous chunk writes.|
|enable-status||boolean||true||Makes the server appear as "online" on the server list.
If set to false, it will suppress replies from clients. This means it will appear as offline, but will still accept connections.
|enable-query||boolean||false||Enables GameSpy4 protocol server listener. Used to get information about server.|
|entity-broadcast-range-percentage||integer (10-1000)||100||Controls how close entities need to be before being sent to clients. Higher values means they'll be rendered from farther away, potentially causing more lag. This is expressed the percentage of the default value. For example, setting to 50 will make it half as usual. This mimics the function on the client video settings (not unlike Render Distance, which the client can customize so long as it's under the server's setting).|
|force-gamemode||boolean||false||Force players to join in the default game mode.
|function-permission-level||integer (1-4)||2||Sets the default permission level for functions.
See permission level for the details on the 4 levels.
|gamemode||string||survival||Defines the mode of gameplay.
If a legacy gamemode number is specified, it is silently converted to a gamemode name.
|generate-structures||boolean||true||Defines whether structures (such as villages) can be generated.
Note: Dungeons still generate if this is set to false.
|generator-settings||string||blank||The settings used to customize world generation. Follow its format and write the corresponding JSON string. Remember to escape all |
|hardcore||boolean||false||If set to true, server difficulty is ignored and set to hard and players are set to spectator mode if they die.|
|level-name||string||world||The "level-name" value is used as the world name and its folder name. The player may also copy their saved game folder here, and change the name to the same as that folder's to load it instead.
|level-seed||string||blank||Sets a world seed for the player's world, as in Singleplayer. The world generates with a random seed if left blank.
|level-type||string||default||Determines the type of map that is generated.
|max-build-height||integer||256||The maximum height allowed for building. Terrain may still naturally generate above a low height limit. 256 is the maximum possible, it also has to be a multiple of 8.|
|max-players||integer (0-(2^31 - 1))||20||The maximum number of players that can play on the server at the same time. Note that more players on the server consume more resources. Note also, op player connections are not supposed to count against the max players, but ops currently cannot join a full server. However, this can be changed by going to the file called ops.json in the player's server directory, opening it, finding the op that the player wants to change, and changing the setting called bypassesPlayerLimit to true (the default is false). This means that that op does not have to wait for a player to leave in order to join. Extremely large values for this field result in the client-side user list being broken.|
||integer (0–(2^63 - 1))||60000||The maximum number of milliseconds a single tick may take before the server watchdog stops the server with the message, A single server tick took 60.00 seconds (should be max 0.05); Considering it to be crashed, server will forcibly shutdown. Once this criterion is met, it calls System.exit(1).
||integer (1-29999984)||29999984||This sets the maximum possible size in blocks, expressed as a radius, that the world border can obtain. Setting the world border bigger causes the commands to complete successfully but the actual border does not move past this block limit. Setting the max-world-size higher than the default doesn't appear to do anything.
|motd||string||A Minecraft Server||This is the message that is displayed in the server list of the client, below the name.|
||integer||256||By default it allows packets that are n-1 bytes big to go normally, but a packet of n bytes or more gets compressed down. So, a lower number means more compression but compressing small amounts of bytes might actually end up with a larger result than what went in.
Note: The Ethernet spec requires that packets less than 64 bytes become padded to 64 bytes. Thus, setting a value lower than 64 may not be beneficial. It is also not recommended to exceed the MTU, typically 1500 bytes.
|online-mode||boolean||true||Server checks connecting players against Minecraft account database. Set this to false only if the player's server is not connected to the Internet. Hackers with fake accounts can connect if this is set to false! If minecraft.net is down or inaccessible, no players can connect if this is set to true. Setting this variable to off purposely is called "cracking" a server, and servers that are present with online mode off are called "cracked" servers, allowing players with unlicensed copies of Minecraft to join.
|op-permission-level||integer (0-4)||4||Sets the default permission level for ops when using |
|player-idle-timeout||integer||0||If non-zero, players are kicked from the server if they are idle for more than that many minutes.|
|prevent-proxy-connections||boolean||false||If the ISP/AS sent from the server is different from the one from Mojang Studios' authentication server, the player is kicked
|pvp||boolean||true||Enable PvP on the server. Players shooting themselves with arrows receive damage only if PvP is enabled.
|query.port||integer (1-(2^16 - 2))||25565||Sets the port for the query server (see enable-query).|
|rate-limit||integer||0||Sets the maximum amount of packets a user can send before getting kicked. Setting to 0 disables this feature.|
|rcon.password||string||blank||Sets the password for RCON: a remote console protocol that can allow other applications to connect and interact with a Minecraft server over the internet.|
|rcon.port||integer (1-(2^16 - 2))||25575||Sets the RCON network port.|
|resource-pack||string||blank||Optional URI to a resource pack. The player may choose to use it.
Note that (in some versions before 1.15.2), the ":" and "=" characters need to be escaped with a backslash (\), e.g. http\://somedomain.com/somepack.zip?someparam\=somevalue
The resource pack may not have a larger file size than 100 MiB (Before 1.15: 50 MiB (≈ 50.4 MB)). Note that download success or failure is logged by the client, and not by the server.
Optional, adds a custom message to be shown on resource pack prompt when
Expects chat component syntax, can contain multiple lines.
||string||blank|| Optional SHA-1 digest of the resource pack, in lowercase hexadecimal. It is recommended to specify this, because it is used to verify the integrity of the resource pack.
Note: If the resource pack is any different, a yellow message "Invalid sha1 for resource-pack-sha1" appears in the console when the server starts. Due to the nature of hash functions, errors have a tiny probability of occurring, so this consequence has no effect.
|require-resource-pack||boolean||false||When this option is enabled (set to true), players will be prompted for a response and will be disconnected if they decline the required pack.|
|server-ip||string||blank||The player should set this if they want the server to bind to a particular IP. It is strongly recommended that the player leaves server-ip blank.
|server-port||integer (1-(2^16 - 2))||25565||Changes the port the server is hosting (listening) on. This port must be forwarded if the server is hosted in a network using NAT (if the player has a home router/firewall).|
|snooper-enabled||boolean||true||Sets whether the server sends snoop data regularly to http://snoop.minecraft.net.
|spawn-animals||boolean||true||Determines if animals can spawn.
If the player has major lag, it is recommended to turn this off/set to false.
|spawn-monsters||boolean||true||Determines if monsters can spawn.
This setting has no effect if difficulty = 0 (peaceful). If difficulty is not = 0, a monster can still spawn from a spawner.
If the player has major lag, it is recommended to turn this off/set to false.
|spawn-npcs||boolean||true||Determines whether villagers can spawn.
|spawn-protection||integer||16||Determines the side length of the square spawn protection area as 2x+1. Setting this to 0 disables the spawn protection. A value of 1 protects a 3×3 square centered on the spawn point. 2 protects 5×5, 3 protects 7×7, etc. This option is not generated on the first server start and appears when the first player joins. If there are no ops set on the server, the spawn protection is disabled automatically as well.|
|text-filtering-config||[more information needed]||[more information needed]||[more information needed]|
|use-native-transport||boolean||true||Linux server performance improvements: optimized packet sending/receiving on Linux
|view-distance||integer (3-32)||10||Sets the amount of world data the server sends the client, measured in chunks in each direction of the player (radius, not diameter). It determines the server-side viewing distance.
10 is the default/recommended. If the player has major lag, this value is recommended to be reduced.
|white-list||boolean||false||Enables a whitelist on the server.
With a whitelist enabled, users not on the whitelist cannot connect. Intended for private servers, such as those for real-life friends or strangers carefully selected via an application process, for example.
Note: Ops are automatically whitelisted, and there is no need to add them to the whitelist.
|enforce-whitelist||boolean||false||Enforces the whitelist on the server.
When this option is enabled, users who are not present on the whitelist (if it's enabled) get kicked from the server after the server reloads the whitelist file.
|Option name||Possible values||Default value||When is it used||Use||Notes|
|server-name||Any string||Dedicated Server||Always||Used as the server name. Cannot contain a ":" (colon).||This is the server name shown in the in-game server list.|
|gamemode||survival, creative, adventure||survival||Always||Sets the game mode for new players.||This is applied at the time the player first joins the server. Changing this setting will not change the gamemode for existing players.
|force-gamemode||true, false||false||Always||False (or not defined) prevents the server from sending to the client gamemode values other than the gamemode value saved by the server during world creation even if those values are set in server.properties after world creation. True forces the server to send to the client gamemode values other than the gamemode value saved by the server during world creation if those values are set in server.properties after world creation.|
|difficulty||peaceful, easy, normal, hard||easy||Always||Sets the difficulty of the world.||Values correlate to the integer gamemodes as follows:
|allow-cheats||true, false||false||Always||If true then cheats like commands can be used.|
|max-players||Positive integer||10||Always||The maximum number of players that can play on the server.||Higher values have performance impact.|
|online-mode||true, false||true||Always||If true then all connected players must be authenticated to Xbox Live.|
|white-list||true, false||false||Always||If true then all connected players must be listed in the separate
|server-port||Integers in the range [1, 65535]||19132||Always||Which IPv4 port the server should listen to.|
|server-portv6||Integers in the range [1, 65535]||19133||Always||Which IPv6 port the server should listen to.|
|view-distance||Any positive integer greater than or equal to 5||32||Always||The maximum allowed view distance in number of chunks.||Higher values have performance impact.|
|tick-distance||An integer in the range [4, 12]||4||Always||The world is ticked this many chunks away from any player.||Higher values have performance impact.|
|player-idle-timeout||Any integer||30||Always||After a player has idled for this many minutes they get kicked.||After a player has idled for this many minutes they get kicked.|
|max-threads||Any integer||8||Always||Maximum number of threads the server tries to use. If set to 0 or removed then it uses as many as possible.||Maximum number of threads the server tries to use.|
|level-name||Any string||Bedrock level||Always||The "level-name" value is used as the world name and its folder name. The player may also copy their saved game folder here, and change the name to the same as that folder's to load it instead. Cannot contain illegal filename characters: /\n\r\t\f`?*\\<>|\":||The name of level to be used/generated. Each level has its own folder in |
|level-seed||Any string||Defaults to empty (th34f1ju34facjn5f871df312h)||World creation||Use to randomize the world||The seed to be used for randomizing the world. If left empty, a seed is chosen at random.|
|level-type||FLAT, LEGACY, DEFAULT||DEFAULT||World creation||Determines the type of map that is generated.|
|default-player-permission-level||visitor, member, operator||member||Always||Permission level for new players joining for the first time.||Permission level that new players have when they join for the first time.|
|texturepack-required||true, false||false||Always||Force clients to use texture packs in the current world||If the world uses any specific texture packs then this setting forces the client to use it.|
|content-log-file-enabled||true, false||false||Always||Enables logging content errors to a file|
|compression-threshold||Integers in the range [1, 65535]||1||Always||Determines the smallest size of raw network payload to compress|
|server-authoritative-movement||client-auth, server-auth, server-auth-with-rewind||server-auth||Always||Enables server authoritative movement. If server-auth, the server will replay local user input on the server and send down corrections when the client's position doesn't match the server's. If "server-auth-with-rewind" is enabled and the server sends a correction, the clients will be instructed to rewind time back to the correction time, apply the correction, then replay all the player's inputs since then. This results in smoother and more frequent corrections.||Corrections will only happen if correct-player-movement is set to server-auth.|
|player-movement-score-threshold||Any positive integer||20||Always||The number of incongruent time intervals needed before abnormal behavior is reported.||Disabled by server-authoritative-movement.|
|player-movement-distance-threshold||Any positive number||0.3||Always||The difference between server and client positions that needs to be exceeded before abnormal behavior is detected.||Disabled by server-authoritative-movement.|
|player-movement-duration-threshold-in-ms||Any positive integer||500||Always||The duration of time the server and client positions can be out of sync (as defined by player-movement-distance-threshold) before the abnormal movement score is incremented. This value is defined in milliseconds.||Disabled by server-authoritative-movement.|
|correct-player-movement||true, false||false||Always||If true, the client position will get corrected to the server position if the movement score exceeds the threshold.|
|server-authoritative-block-breaking||true, false||false||Always||If true, the server will compute block mining operations in sync with the client so it can verify that the client should be able to break blocks when it thinks it can.|
Minecraft Classic server properties
|verify-names||boolean||true||If enabled, the server ensures that the client is logged in with the same IP address seen on Minecraft.net. This has caused problems for people trying to play on the same computer they are hosting the server on as the server sees the local IP (127.0.0.1) while Minecraft.net sees the external IP. It is recommended that this is enabled unless the player want to play on the player's server from the same computer the player is hosting it on.
|admin-slot||boolean||false||Allow ops to join even if the server is full.|
|public||boolean||Whether the server should be displayed in the server list, or not.
|server-name||string||The name of the server. This is displayed in the server list and when someone is joining the server
|max-players||integer (0-256)||The max numbers of players that can play on the server at the same time. Note that if more players are on the server it uses more resources. Note also, admin connections are not counted against the max players.|
|max-connections||integer (1-3)||The max number of connections the server accepts from the same IP.
Note: If set higher than 3, it is changed back to 3.
|motd||string||MOTD is short for Message of the day, though the player does not need to change it every day. The MOTD is displayed when people join the server.|
|grow-trees||boolean||Whether or not the server allows planted saplings to grow into trees.
Reason: Many settings are not first introduced.
|Java Edition Classic|
|server 1.2||Currently earliest archived version.|
|Current options include |
|server 1.3||Added |
|server 1.5||Added |
|server 1.9.1||Added |
|server 1.10||Added a warning when |
|Java Edition Alpha|
|server 0.2.0||Added |
|server 0.2.4||Added |
|server 0.2.5||Added |
|Java Edition Beta|
|1.0.0||Beta 1.9 Prerelease 4||Added |
|1.7.2||13w38a||Added option to disable achievement announcements in chat.|
|14w28a||Added option to customize network compression.|
|1.12||17w18a||Removed option |
|1.14.4||Pre-Release 4||Added |
|1.15||Pre-Release 5||Increased server resourcepack size limit to 100 MB.|
|1.16.4||Pre-release 1||Added |
|1.6.1||Initial release of Bedrock Dedicated Server.|
|Current options include |
|1.16.100||Changed default |
|1.16.210||Added new properties |