{{lowercase}}
[[File:Server.properties.png|thumb|The default server.properties file for Java Edition.]]

'''<code>server.properties</code>''' is a file that specifies settings for the Minecraft [[server]] software. There exists a variant for the [[Java Edition]] [[server.jar]], as well as for the [[Bedrock Edition]] [[Bedrock Dedicated Server]]. Those variants are not compatible, but serve a similar purpose and feature similar syntax.

==Java Edition==

<code>server.properties</code> is located in the current working directory of the server process. That means if the server is started from some directory, the file will be also placed in that directory.

The file is UTF-8 encoded text using the Properties syntax, as defined for <code>[https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Properties.html#load(java.io.Reader) Properties.load(Reader)]</code>. It can be edited with a text editor, such as Notepad, TextEdit, Kate, nano or Vim.

The software first attempts to load the file as UTF-8, but if that fails, ISO-8859-1 is used as a fallback.

The syntax generally consists of line (LF, CR or CRLF) separated key-value pairs, separated by an <code>=</code> sign. The key is the setting identifier, and the value is used for that setting. All values are strings, but they might be interpreted as integers or other types by the software, depending on the key. Lines starting with <code>#</code> are comments and are ignored.

The <code>server.properties</code> file is regenerated by the server software on startup:

# If the file already exists, existing values are copied from it. Comments are ignored.
# Any missing keys or keys with invalid values are set to the defaults.
# The file is rewritten with UTF-8 encoding. This has the effects of <code>[https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Properties.html#store(java.io.Writer,java.lang.String) Properties.store(Writer, String)]</code>, including:
#* On the first line, a comment <code>Minecraft server properties</code> is written. The text of the comment is provided by the server software.
#* On the second line, a comment containing the timestamp of the file's generation in the format <code>dow mon dd hh:mm:ss zzz yyyy</code> in Java's <code>[https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/time/format/DateTimeFormatter.html DateTimeFormatter]</code> pattern syntax is written.
#* Some characters such as <code>:</code> are escaped in values with <code>\</code>.
#* Line endings are written as LF on Unix-like systems, and as CRLF on Windows.

After changes are made to the file, the server must be restarted for them to take effect.

===Default content===

As of [[Java Edition 1.21.3|1.21.3]], the server software generates the following <code>server.properties</code> file if it is not found:
<syntaxhighlight lang="properties">
#Minecraft server properties
#[Generation time]
accepts-transfers=false
allow-flight=false
allow-nether=true
broadcast-console-to-ops=true
broadcast-rcon-to-ops=true
bug-report-link=
difficulty=easy
enable-command-block=false
enable-jmx-monitoring=false
enable-query=false
enable-rcon=false
enable-status=true
enforce-secure-profile=true
enforce-whitelist=false
entity-broadcast-range-percentage=100
force-gamemode=false
function-permission-level=2
gamemode=survival
generate-structures=true
generator-settings={}
hardcore=false
hide-online-players=false
initial-disabled-packs=
initial-enabled-packs=vanilla
level-name=world
level-seed=
level-type=minecraft\:normal
log-ips=true
max-chained-neighbor-updates=1000000
max-players=20
max-tick-time=60000
max-world-size=29999984
motd=A Minecraft Server
network-compression-threshold=256
online-mode=true
op-permission-level=4
pause-when-empty-seconds=60
player-idle-timeout=0
prevent-proxy-connections=false
pvp=true
query.port=25565
rate-limit=0
rcon.password=
rcon.port=25575
region-file-compression=deflate
require-resource-pack=false
resource-pack=
resource-pack-id=
resource-pack-prompt=
resource-pack-sha1=
server-ip=
server-port=25565
simulation-distance=10
spawn-monsters=true
spawn-protection=16
sync-chunk-writes=true
text-filtering-config=
text-filtering-version=0
use-native-transport=true
view-distance=10
white-list=false
</syntaxhighlight>

===Keys===

{| class="wikitable stikitable" data-description="Server properties"
|-
!Key
!Type
!Default Value
!Description

|- id="accepts-transfers"
|'''accepts-transfers'''
|boolean
|false
|Whether to accept incoming transfers via a transfer packet.
:'''false''' - Incoming transfers are rejected, and the player is disconnected.
:'''true''' - Incoming transfers are allowed, and the server must approve it.

|- id="allow-flight"
|'''allow-flight'''
|boolean
|false
|Whether players can use flight on the server while in Survival mode by using [[mod]]s.
With allow-flight enabled, [[griefers]] may become more common, because it makes their work easier. In Creative mode, this has no effect.
:'''false''' - Flight is not allowed (players in air for at least 5 seconds get kicked).
:'''true''' - Flight is allowed, and used if the player has a fly mod installed.

|- id="allow-nether"
|'''allow-nether'''
|boolean
|true
|Whether players can travel to the [[Nether]].
:'''false''' - [[Nether portal]]s do not work.
:'''true''' - The server allows [[Nether Portal (block)|portal]]s to send players to the Nether.

|- id="broadcast-console-to-ops"
|'''broadcast-console-to-ops'''
|boolean
|true
|Whether to send console command outputs to all [[Server#Managing_and_maintaining_a_server|online operators]].

|- id="broadcast-rcon-to-ops"
|'''broadcast-rcon-to-ops'''
|boolean
|true
|Whether to send rcon console command outputs to all online operators.

|- id="bug-report-link"
|'''bug-report-link'''
|string
|''blank''
|The URL for the <code>report_bug</code> server link.

If empty, the link is not sent.

|- id="difficulty"
|'''difficulty'''
|string
|easy
|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.

:'''peaceful''' (0)
:'''easy''' (1)
:'''normal''' (2)
:'''hard''' (3)

|- id="enable-command-block"
|'''enable-command-block'''
|boolean
|false
|Whether command blocks are enabled.

|- id="enable-jmx-monitoring"
|'''enable-jmx-monitoring'''
|boolean
|false
|Whether to expose an MBean with the Object name <code>net.minecraft.server:type=Server</code> and two attributes <code>averageTickTime</code> and <code>tickTimes</code> exposing the tick times in milliseconds.

In order to enable JMX on the Java runtime you also need to use certain JVM flags: https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html.

|- id="enable-rcon"
|'''enable-rcon'''
|boolean
|false
|Whether to enable rcon, which allows access to the server console over a network.

It's not recommended to connect to rcon via untrusted networks, like the internet, as it is not encrypted. All data sent between the client and the server (including the rcon password) can be intercepted. Ideally, only connect to rcon from localhost.

|- id="enable-status"
|'''enable-status'''
|boolean
|true
|Whether the server appears as "online" on the server list.

If set to false, status replies to clients are suppressed. This means the server appears as offline, but still accepts connections.

|- id="enable-query"
|'''enable-query'''
|boolean
|false
|Whether to enable [[Minecraft Wiki:Projects/wiki.vg merge/Query|query]], which provides information about the server.

|- id="enforce-secure-profile"
|'''enforce-secure-profile'''
|boolean
|true
|Whether to only allow players with a Mojang-signed public key to join the server.

If this is not enabled, all chat messages will be left unsigned and unable to be reported. Clients will get warned about this when connecting to the server.

|- id="enforce-whitelist"
|'''enforce-whitelist'''
|boolean
|false
|Whether to enforce changes to the whitelist.

When this option as well as the whitelist is enabled, players not present on the whitelist get kicked from the server after the server reloads the whitelist file.

:'''false''' - Online players that are not on the whitelist are not kicked.
:'''true''' - Online players that are not on the whitelist are kicked.

|- id="entity-broadcast-range-percentage"
|'''entity-broadcast-range-percentage'''
|integer (10-1000)
|100
|How close entities need to be to the player to be sent.

Higher values means they'll be rendered from farther away, potentially causing more lag.

This is expressed as a percentage. For example, setting to 50 makes entites only render at half the usual distance. 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).

|- id="force-gamemode"
|'''force-gamemode'''
|boolean
|false
|Whether to switch players to the default [[game mode]] on join.

:'''false''' - Players join in the game mode they left in.
:'''true''' - Players always join in the default game mode.

|- id="function-permission-level"
|'''function-permission-level'''
|integer (1-4)
|2
|The default permission level for [[Function (Java Edition)|functions]].

See [[permission level]] for the details on the 4 levels.

|- id="gamemode"
|'''gamemode'''
|string
|survival
|The default [[game mode]].
If a legacy game mode number is specified, it is silently converted to a game mode name.

:'''[[survival]]''' (0)
:'''[[creative]]''' (1)
:'''[[adventure]]''' (2)
:'''[[spectator]]''' (3)

|- id="generate-structures"
|'''generate-structures'''
|boolean
|true
|Whether [[structures]] (such as villages) are generated.

:'''false''' - Structures are not generated in new chunks.
:'''true''' - Structures are generated in new chunks.

'''Note:''' ''Dungeons still generate if this is set to false.''

|- id="generator-settings"
|'''generator-settings'''
|string
|{}
|Settings used to customize world generation.

Use depends on chosen '''level-type'''. For '''minecraft:flat''', see [[Superflat#Multiplayer]].

|- id="hardcore"
|'''hardcore'''
|boolean
|false
|Whether to enable [[hardcore]] mode on created worlds.

|- id="hide-online-players"
|'''hide-online-players'''
|boolean
|false
|Whether to disable sending the player list on status requests.

|- id="initial-disabled-packs"
|'''initial-disabled-packs'''
|string
|''blank''
|Datapacks to not be auto-enabled on world creation.

Specified as a comma-separated list.

|- id="initial-enabled-packs"
|'''initial-enabled-packs'''
|string
|vanilla
|Datapacks to be enabled on world creation.

Specified as a comma-separated list. Feature packs need to be explicitly enabled.

|- id="level-name"
|'''level-name'''
|string
|world
|The world name and the world directory path.

If a directory at this path exists and is a valid world, it will be loaded by the server. If it doesn't exist or is not a valid world, the server will generate a new world in this directory, creating the directory and it's parents if necessary, and will use the provided value as it's name.

|- id="level-seed"
|'''level-seed'''
|string
|''blank''
|The [[Seed (world generation)|seed]] for the generated world.

A random seed is used if left blank.

|- id="level-type"
|'''level-type'''
|string
|minecraft:normal
|The preset for the generated world.

The vanilla namespace ({{cd|minecraft:}}) can be omitted.

:'''minecraft:normal''' - Standard world with hills, valleys, water, etc.
:'''[[Superflat|minecraft:flat]]''' - A flat world with no features. Can be modified with '''generator-settings'''.
:'''[[Large Biomes|minecraft:large_biomes]]''' - Same as default but all biomes are larger.
:'''[[Amplified|minecraft:amplified]]''' - Same as default but world-generation height limit is increased.
:'''[[Single Biome|minecraft:single_biome_surface]]''' - A buffet world which the entire overworld consists of one biome. Can be modified with '''generator-settings'''.

|- id="log-ips"
|'''log-ips'''
|boolean
|true
|Whether to show client IP addresses in messages printed to the server console or the log file.

|- id="max-chained-neighbor-updates"
|'''max-chained-neighbor-updates'''
|integer{{more info|the valid range}}
|1000000
|The limit of consecutive neighbor updates before skipping additional ones.

Negative values disable the limit.

|- id="max-players"
|'''max-players'''
|integer (0-(2^31 - 1))
|20
|The maximum number of players that can play on the server at the same time.

Ops with <code>bypassesPlayerLimit</code> enabled can join the server even if the server is full.{{verify}} Extremely large values for this field result in the client-side user list being broken.{{verify}}

|- id="max-tick-time"
|'''max-tick-time'''
|integer (-1 or 0–(2^63 - 1))
|60000
|The maximum number of milliseconds a single tick may take.

After this limit is exceeded, 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.'' and exits with an exit code of 1.

:'''-1''' - disable watchdog entirely

|- id="max-world-size"
|'''max-world-size'''
|integer (1-29999984)
|29999984
|The amount of blocks from the center of the world where the [[world border]] appears.

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 do anything.{{verify}}

|- id="motd"
|'''motd'''
|string
|''A Minecraft Server''
|The message displayed in the server list of the client, below the server name.

*The MOTD supports [[Formatting codes#Use in server.properties and pack.mcmeta|color and formatting codes]].
*The MOTD supports non-ASCII characters, such as "♥".
*If the MOTD is over 59 characters, the server list may report a communication error.

|- id="network-compression-threshold"
|'''network-compression-threshold'''
|integer
|256
|How big should a packet be to be compressed.

Packets the size of this many bytes or more will be compressed. A lower threshold will compress more packets, but compressing small amounts of data might end up with a larger result than the source.

:'''-1''' - disable compression entirely
:'''0''' - compress everything

'''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.

|- id="online-mode"
|'''online-mode'''
|boolean
|true
|Whether to only allow players verified with the ''Minecraft'' account database to join.

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.

:'''true''' - Enabled. The server assumes it has an Internet connection and checks every connecting player.
:'''false''' - Disabled. The server does not attempt to check connecting players.

|- id="op-permission-level"
|'''op-permission-level'''
|integer (0-4)
|4
|The default [[permission level]] for ops when using {{cmd|op}}.

|- id="pause-when-empty-seconds"
|'''pause-when-empty-seconds'''
|integer
|60
|How many seconds have to pass after no player has been online before the server is paused.

|- id="player-idle-timeout"
|'''player-idle-timeout'''
|integer
|0
|How many minutes does the player have to idle to be kicked from the server.

If set to 0, idle players are never kicked.

:'''Note:''' ''Idle time is reset when the server receives one of the following packets:''
:*[[Minecraft Wiki:Projects/wiki.vg merge/Protocol#Player_Action|Player Action]]
:*[[Minecraft Wiki:Projects/wiki.vg merge/Protocol#Use_Item|Use Item]]
:*[[Minecraft Wiki:Projects/wiki.vg merge/Protocol#Use_Item_On|Use Item On]]
:*[[Minecraft Wiki:Projects/wiki.vg merge/Protocol#Set_Held_Item_(serverbound)|Set Held Item]]
:*[[Minecraft Wiki:Projects/wiki.vg merge/Protocol#Chat_Message|Chat Message]]
:*[[Minecraft Wiki:Projects/wiki.vg merge/Protocol#Swing_Arm|Swing Arm]]
:*[[Minecraft Wiki:Projects/wiki.vg merge/Protocol#Interact|Interact]]
:*[[Minecraft Wiki:Projects/wiki.vg merge/Protocol#Click_Container|Click Container]]
:*[[Minecraft Wiki:Projects/wiki.vg merge/Protocol#Click_Container_Button|Click Container Button]]
:*[[Minecraft Wiki:Projects/wiki.vg merge/Protocol#Place_Recipe|Place Recipe]]
:*[[Minecraft Wiki:Projects/wiki.vg merge/Protocol#Update_Sign|Update Sign]]

|- id="prevent-proxy-connections"
|'''prevent-proxy-connections'''
|boolean
|false
|Whether to kick players if the ISP/AS sent from the server is different from the one from Mojang Studios' authentication server.

|- id="pvp"
|'''pvp'''
|boolean
|true
|Whether to enable PvP on the server.

Players shooting themselves with arrows receive damage only if PvP is enabled.

:'''true''' - Players can kill each other.
:'''false''' - Players cannot kill other players (also known as '''Player versus Environment''' ('''PvE''')).

'''Note:''' ''Indirect damage sources spawned by players (such as [[lava]], [[fire]], [[TNT]] and to some extent [[water]], [[sand]] and [[gravel]]) still deal damage to other players.''

|- id="query.port"
|'''query.port'''
|integer (1-(2^16 - 2))
|25565
|The UDP port number query (see '''enable-query''') listens on.

|- id="rate-limit"
|'''rate-limit'''
|integer
|0
|The maximum amount of packets a player can send before getting kicked.

Setting to 0 disables this feature.

|- id="rcon.password"
|'''rcon.password'''
|string
|''blank''
|The password for rcon.

If the password is blank and rcon is enabled, it will not start as a safeguard.

|- id="rcon.port"
|'''rcon.port'''
|integer (1-(2^16 - 2))
|25575
|The TCP port number rcon listens on.

|- id="region-file-compression"
|'''region-file-compression'''
|string
|deflate
|The algorithm used for [[Region file format|compressing chunks in regions]].

Can be <code>deflate</code>, <code>lz4</code>, or <code>none</code>.

|- id="resource-pack"
|'''resource-pack'''
|string
|''blank''
|The [[resource pack]] download URL.

The player may choose to download the resource pack when joining.

If this is empty, no resource pack is provided. The resource pack may not be larger than 250 MiB. Note that download success or failure is logged by the client, and not by the server.

|- id="resource-pack-id"
|'''resource-pack-id'''
|[[UUID]] in hyphenated hexadecimal format
|''blank''
|An optional UUID for the resource pack set by {{cd|resource-pack}} to identify the pack with clients.

|- id="resource-pack-prompt"
|'''resource-pack-prompt'''
|string
|''blank''
|{{Anchor|resource-pack-prompt}}
A custom message to be shown on resource pack prompt when <code>require-resource-pack</code> is used.

Can be left empty for a default message. Expects chat component syntax, can contain multiple lines.

|- id="resource-pack-sha1"
|'''resource-pack-sha1'''
|string
|''blank''
|{{Anchor|resource-pack-hash}} An 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.

|- id="require-resource-pack"
|'''require-resource-pack'''
|boolean
|false
|Whether players are disconnected if they decline to use the resource pack.

|- id="server-ip"
|'''server-ip'''
|string
|''blank''
|The IP address the server listens on. If empty, the server listens on all available IP addresses.

It is recommended to leave this empty.

|- id="server-port"
|'''server-port'''
|integer (1-(2^16 - 2))
|25565
|The TCP port number the server listens on.

This port must be [[wikipedia:Port forwarding|forwarded]] if the server is hosted in a network using [[wikipedia:Network address translation|NAT]] (if the player has a home router/firewall).

|- id="simulation-distance"
|'''simulation-distance'''
|integer (3-32)
|10
|The maximum distance from players that living entities may be located in order to be updated by the server, measured in chunks in each direction of the player (radius, not diameter).

If entities are outside of this radius, then they are not ticked by the server and they are not visible to players.

''10 is the default/recommended. If the player has major lag, this value is recommended to be reduced.''

|- id="spawn-monsters"
|'''spawn-monsters'''
|boolean
|true
|Whether [[monster]]s can spawn.

:'''true''' - Enabled. Monsters appear at night and in the dark.
:'''false''' - Disabled. No monsters.

This setting has no effect if difficulty = 0 (peaceful). If difficulty is not = 0, a monster can still spawn from a [[monster spawner]].

''If the player has major lag, it is recommended to turn this off/set to false.''

|- id="spawn-protection"
|'''spawn-protection'''
|integer
|16
|The side length of the square [[spawn protection]] area as 2''x''+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 [[Server#Managing_and_maintaining_a_server|ops]] set on the server, the spawn protection is disabled automatically as well.

|- id="sync-chunk-writes"
|'''sync-chunk-writes'''
|boolean
|true
|Whether to enable synchronous chunk writes.

|- id="text-filtering-config"
|'''text-filtering-config'''
|{{more info needed}}
|''blank''
|Configuration for the chat filtering mechanism.

Used internally by [[Realms]], not announced by Mojang and likely not meant to be used outside it.

|- id="text-filtering-version"
|'''text-filtering-version'''
|{{more info needed}}
|0
|The version of the configuration format used for text-filtering-config.

Valid values are 0 and 1.

|- id="use-native-transport"
|'''use-native-transport'''
|boolean
|true
|Whether to use optimized packet sending/receiving on Linux.

:'''true''' - Enabled. Enable Linux packet sending/receiving optimization.
:'''false''' - Disabled. Disable Linux packet sending/receiving optimization.

|- id="view-distance"
|'''view-distance'''
|integer (3-32)
|10
|The amount of world data the server sends the client, measured in chunks in each direction of the player (radius, not diameter).

This determines the server-side viewing distance.

''10 is the default/recommended. If the player has major lag, this value is recommended to be reduced.''

|- id="white-list"
|'''white-list'''
|boolean
|false
|Whether the whitelist is enabled.

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.

:'''false''' - No white list is used.
:'''true''' - The file whitelist.json is used to generate the white list.

'''''Note:''''' ''Ops are automatically whitelisted, and there is no need to add them to the whitelist.''
|}

==Bedrock Edition==

<code>server.properties</code> is located in the current working directory of the server process. That means if the server is started from some directory, the file will be also placed in that directory.

A default file is shipped with the server software. The file shipped with Windows builds has CRLF line endings, while the one shipped with Linux builds has LF line endings.

The file is UTF-8 encoded text using syntax inspired by the Properties syntax used in Java Edition. It can be edited with a text editor, such as Notepad, TextEdit, Kate, nano or Vim.

The syntax generally consists of line (LF or CRLF) separated key-value pairs, separated by an <code>=</code> sign. The key is the setting identifier, and the value is used for that setting. Lines starting with <code>#</code> are comments and are ignored.

===Default content===

The following default <code>server.properties</code> comes with the server software as of [[Bedrock Dedicated Server 1.21.31.04|1.21.31.04]]:
<syntaxhighlight lang="properties">
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"

allow-list=false
# If true then all connected players must be listed in the separate allowlist.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]

enable-lan-visibility=true
# Listen and respond to clients that are looking for servers on the LAN. This will cause the server
# to bind to the default ports (19132, 19133) even when `server-port` and `server-portv6`
# have non-default values. Consider turning this off if LAN discovery is not desirable, or when
# running multiple servers on the same host may lead to port conflicts.
# Allowed values: "true" or "false"

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

compression-algorithm=zlib
# Determines the compression algorithm to use for networking
# Allowed values: "zlib", "snappy"

server-authoritative-movement=server-auth
# Allowed values: "client-auth", "server-auth", "server-auth-with-rewind"
# Changes the server authority on movement:
# "client-auth": Server has no authority and accepts all positions from the client.
# "server-auth": Server takes user input and simulates the Player movement but accepts the Client version if there is disagreement.
# "server-auth-with-rewind": The server will replay local user input and will push it to the Client so it can correct the position if it does not match.
# 		The clients will 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.
player-position-acceptance-threshold=0.5
# Only used with "server-auth-with-rewind".
# This is the tolerance of discrepancies between the Client and Server Player position. This helps prevent sending corrections too frequently
# for non-cheating players in cases where the server and client have different perceptions about when a motion started. For example damage knockback or being pushed by pistons.
# The higher the number, the more tolerant the server will be before asking for a correction. Values beyond 1.0 have increased chances of allowing cheating.

player-movement-action-direction-threshold=0.85
# The amount that the player's attack direction and look direction can differ.
# Allowed values: Any value in the range of [0, 1] where 1 means that the
# direction of the players view and the direction the player is attacking
# must match exactly and a value of 0 means that the two directions can
# differ by up to and including 90 degrees.

server-authoritative-block-breaking-pick-range-scalar=1.5
# 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.

chat-restriction=None
# Allowed values: "None", "Dropped", "Disabled"
# This represents the level of restriction applied to the chat for each player that joins the server.
# "None" is the default and represents regular free chat.
# "Dropped" means the chat messages are dropped and never sent to any client. Players receive a message to let them know the feature is disabled.
# "Disabled" means that unless the player is an operator, the chat UI does not even appear. No information is displayed to the player.

disable-player-interaction=false
# If true, the server will inform clients that they should ignore other players when interacting with the world. This is not server authoritative.

client-side-chunk-generation-enabled=true
# If true, the server will inform clients that they have the ability to generate visual level chunks outside of player interaction distances.

block-network-ids-are-hashes=true
# If true, the server will send hashed block network ID's instead of id's that start from 0 and go up.  These id's are stable and won't change regardless of other block changes.

disable-persona=false
# Internal Use Only

disable-custom-skins=false
# If true, disable players customized skins that were customized outside of the Minecraft store assets or in game assets.  This is used to disable possibly offensive custom skins players make.

server-build-radius-ratio=Disabled
# Allowed values: "Disabled" or any value in range [0.0, 1.0]
# If "Disabled" the server will dynamically calculate how much of the player's view it will generate, assigning the rest to the client to build.
# Otherwise from the overridden ratio tell the server how much of the player's view to generate, disregarding client hardware capability.
# Only valid if client-side-chunk-generation-enabled is enabled

allow-outbound-script-debugging=false
# Allows script debugger 'connect' command and script-debugger-auto-attach=connect mode.

allow-inbound-script-debugging=false
# Allows script debugger 'listen' command and script-debugger-auto-attach=listen mode.

#force-inbound-debug-port=19144
# Locks the inbound (listen) debugger port, if not set then default 19144 will be used. Required when using script-debugger-auto-attach=listen mode.

script-debugger-auto-attach=disabled
# Attempt to attach script debugger at level load, requires that either inbound port or connect address is set and that inbound or outbound connections are enabled.
# "disabled" will not auto attach.
# "connect" server will attempt to connect to debugger in listening mode on the specified port.
# "listen" server will listen to inbound connect attempts from debugger using connect mode on the specified port.

#script-debugger-auto-attach-connect-address=localhost:19144
# When auto attach mode is set to 'connect', use this address in the form host:port. Required for script-debugger-auto-attach=connect mode.

#script-watchdog-enable=true
# Enables the watchdog (default = true).

#script-watchdog-enable-exception-handling=true
# Enables watchdog exception handling via the events.beforeWatchdogTerminate event (default = true).

#script-watchdog-enable-shutdown=true
# Enables server shutdown in the case of an unhandled watchdog exception (default = true).

#script-watchdog-hang-exception=true
# Throws a critical exception when a hang occurs, interrupting script execution (default = true).

#script-watchdog-hang-threshold=10000
# Sets the watchdog threshold for single tick hangs (default = 10000 ms).

#script-watchdog-spike-threshold=100
# Sets the watchdog threshold for single tick spikes.
# Warning is disabled if property left unset.

#script-watchdog-slow-threshold=10
# Sets the wachdog threshold for slow scripts over multiple ticks.
# Warning is disabled if property left unset.

#script-watchdog-memory-warning=100
# Produces a content log warning when the combined memory usage exceeds the given threshold (in megabytes).
# Setting this value to 0 disables the warning. (default = 100, max = 2000)

#script-watchdog-memory-limit=250
# Saves and shuts down the world when the combined script memory usage exceeds the given threshold (in megabytes).
# Setting this value to 0 disables the limit. (default = 250, max = 2000)


</syntaxhighlight>

===Keys===
{| class="wikitable stikitable" data-description="Server properties"
|-
!Option name
!Possible values
!Default value
!When is it used
!Use
!Notes

|-
|'''allow-cheats'''
|true, false
|false
|Always
|If true then cheats like [[commands]] can be used.
|

|-
|'''allow-list'''
|true, false
|false
|Always
|If true then all connected players must be listed in the separate <code>[[whitelist.json|allowlist.json]]</code> file.
|

|-
|'''compression-threshold'''
|Integers in the range [1, 65535]
|1
|Always
|Determines the smallest size of raw network payload to compress.
|

|-
|'''content-log-file-enabled'''
|true, false
|false
|Always
|Enables logging content errors to a file.
|

|-
|'''correct-player-movement'''
|true, false
|false
|Always
|If true, the client position gets corrected to the server position if the movement score exceeds the threshold.
|

|-
|'''default-player-permission-level'''
|visitor, member, operator
|member
|Always
|Permission level for new players joining for the first time.
|

|-
|'''difficulty'''
|peaceful, easy, normal, hard
|easy
|Always
|Sets the difficulty of the world.
|Values correlate to the integer gamemodes as follows:

peaceful (0)

easy (1)

normal (2)

hard (3)

|-
|'''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.
|

|-
|'''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 does not change the gamemode for existing players.


Values correlate to the integer gamemodes as follows:

survival (0)

creative (1)

adventure (2)

|-
|'''level-name'''
|Any string
|Bedrock level
|Always
|<nowiki>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`?*\\<>|\":</nowiki>
|The name of level to be used/generated. Each level has its own folder in <code>/worlds</code>.

|-
|'''level-seed'''
|Any string
|''Defaults to empty''
|World creation
|Use to randomize 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.
|

|-
|'''max-players'''
|Positive integer
|10
|Always
|The maximum number of players that can play on the server.
|Higher values have performance impact.

|-
|'''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.
|

|-
|'''online-mode'''
|true, false
|true
|Always
|If true then all connected players must be authenticated to Xbox Live.
|

|-
|'''player-idle-timeout'''
|Any integer
|30
|Always
|After a player has idled for this many minutes they get kicked.
|

|-
|'''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.
| rowspan="3" |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.

|-
|'''player-movement-score-threshold'''
|Any positive integer
|20
|Always
|The number of incongruent time intervals needed before abnormal behavior is reported.

|-
|'''server-authoritative-block-breaking'''
|true, false
|false
|Always
|If true, the server computes 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.
|

|-
|'''server-authoritative-movement'''
|client-auth, server-auth, server-auth-with-rewind
|server-auth
|Always
|Enables server authoritative movement. If server-auth, the server replays local user input on the server and sends 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 are 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 happen only if correct-player-movement is set to server-auth.

|-
|'''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.

|-
|'''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.
|

|-
|'''texturepack-required'''
|true, false
|false
|Always
|Force clients to use texture packs in the current world
|

|-
|'''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.

|-
|'''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.
|}

==''Minecraft'' Classic server properties==
{{outdated|edition=Java|section=1}}
[[File:server properties.jpg|thumb|server.properties in early Classic.]]

{| class="wikitable stikitable" data-description="Server properties"
|-
!Key
!Type
!Default Value
!Description
|-

|-
!'''admin-slot'''
|boolean
|false
|Allow ops to join even if the server is full.

|-
!'''grow-trees'''
|boolean
|
|Whether or not the server allows planted saplings to grow into trees.
:'''true''' - the server allows saplings to grow into trees.
:'''false''' - the server does not allow saplings to grow into trees.

|-
!'''max-connections'''
|integer (1-3)
|
|The max number of connections the server accepts from the same IP address.
'''Note:''' ''If set higher than 3, it is changed back to 3.''

|-
!'''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.

|-
!'''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.

|-
!'''public'''
|boolean
|
|Whether the server should be displayed in the server list, or not.
:'''true''' - The server appears in the server list - anyone can see it.
:'''false''' - Only people with the URL that can be found in externalurl.txt and people who know the IP address and port can join the server

|-
!'''server-name'''
|string
|
|The name of the server. This is displayed in the server list and when someone is joining the server
*A single line of text. Characters such as ' (apostrophe) may need to be escaped by adding a backslash before them.

|-
!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 address (127.0.0.1) while Minecraft.net sees the external IP address. 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.
:'''true''' - Enabled. The server checks all names with Minecraft.net
:'''false''' - Disabled. The server makes sure the IP address matches
|}

==History==
{{missing|section|the first introduction of many settings|type=old}}

{{HistoryTable
|{{HistoryLine|java classic}}
|{{HistoryLine||server 1.2|Currently earliest archived version.
|Current options include {{cd|port}}, {{cd|server-name}}, {{cd|max-players}}, {{cd|motd}}, {{cd|public}}.}}
|{{HistoryLine||server 1.3|Added {{cd|verify-names}}, which ensures that the client is logged in with the same IP address seen on Minecraft.net}}
|{{HistoryLine||server 1.5|Added {{cd|max-connections}}, which limits the maximum connections from one IP address.}}
|{{HistoryLine||server 1.9.1|Added {{cd|grow-trees}}, which won't grow trees unless set to true.}}
|{{HistoryLine||server 1.10|Added a warning when {{cd|verify-names}} was disabled.
|Added {{cd|admin-slot}}, which won't let non-admins in if the player count is almost reached.}}
|{{HistoryLine|java alpha}}
|{{HistoryLine||server 0.2.0|Added {{cd|monsters}} option, if set to true it enables monsters.}}
|{{HistoryLine||server 0.2.4|Added {{cd|no-animals}} option, if set to true it disables animals.}}
|{{HistoryLine||server 0.2.5|Added {{cd|pvp}} option to disable or enable Player vs Player combat.
|Renamed {{cd|monsters}} to {{cd|spawn-monsters}} and set the default to true
|Renamed {{cd|no-animals}} to {{cd|spawn-animals}}.}}
|{{HistoryLine|java beta}}
|{{HistoryLine||1.6|Added {{cd|allow-nether}} which if set to false denies entry to the nether.
|Added {{cd|view-distance}} which sets the maximum view distance.
}}
|{{HistoryLine|java}}
|{{HistoryLine||1.0.0|dev=Beta 1.9 Prerelease 4|Added {{cd|debug}}, {{cd|enable-query}}, {{cd|enable-rcon}}, {{cd|query.port}}, {{cd|rcon.password}} and {{cd|rcon.port}}.}}
|{{HistoryLine||1.1|dev=11w49a|Added {{cd|spawn-npcs}}, which specifies whether villagers can spawn.}}
|{{HistoryLine|||dev=12w01a|Added {{cd|level-type}}.}}
|{{HistoryLine|||dev=release|Added {{cd|generate-structures}}.}}
|{{HistoryLine||1.2.1|dev=12w07a|Added {{cd|max-build-height}}.}}
|{{HistoryLine||1.3.1|dev=12w30a|Added {{cd|snooper-enabled}}. It specified whether to send snoop data regularly to http://snoop.minecraft.net.}}
|{{HistoryLine||1.4.2|dev=12w40a|Added {{cd|spawn-protection}}.}}
|{{HistoryLine||1.5|dev=13w05a|Setting {{cd|spawn-protection}} to 0 now disables spawn protection, instead of protecting a 1&times;1 area ({{bug|MC-666}}).}}
|{{HistoryLine||1.7.2|dev=13w38a|Added option to disable achievement announcements in chat.}}
|{{HistoryLine||1.8|dev=14w17a|Added {{cd|generator-settings}}.}}
|{{HistoryLine||1.8|dev=14w28a|Added option to customize network compression.}}
|{{HistoryLine||1.8|dev=14w32a|Setting {{cd|max-tick-time}} to {{cd|1}} now disables the watchdog entirely.}}
|{{HistoryLine||1.11|dev=16w38a|Added {{cd|prevent-proxy-connections}}.}}
|{{HistoryLine||1.12|dev=17w18a|Removed option {{cd|announce-player-achievements}} as it was replaced by the gamerule {{cd|announceAdvancements}}.}}
|{{HistoryLine||1.13|dev=unknown|{{cd|[[Old Customized|customized]]}} option for {{cd|level-type}} is now the same as default. Before it was used to create a completely custom world.}}
|{{HistoryLine||1.14|dev=18w48a|{{cd|difficulty}} and {{cd|gamemode}} settings now accept string names; integer values are still allowed as legacy option.}} 
|{{HistoryLine||1.14.4|dev=Pre-Release 4|Added {{cd|function-permission-level}} option that controls what permission level [[Function (Java Edition)|functions]] have.}}
|{{HistoryLine||1.15|dev=Pre-Release 5|Increased server resourcepack size limit to 100 MiB, used to be 50 MiB.}}
|{{HistoryLine||1.15.2|dev=?|The ":" and "{{=}}" characters no longer need to be escaped with a backslash.{{verify}}}}
|{{HistoryLine||1.16|dev=20w14a|Added {{cd|sync-chunk-writes}} option to disable the new synchronous chunk writing.}}
|{{HistoryLine|||dev=20w16a|Added {{cd|enable-jmx-monitoring}} option that exposes an MBean that exposes the tick times in milliseconds.}}
|{{HistoryLine|||dev=20w18a|Added {{cd|enable-status}} and {{cd|entity-broadcast-range-percentage}} options.}}
|{{HistoryLine||1.16|dev=unknown|Removed the {{cd|[[Single Biome|buffet]]}} option for {{cd|level-type}}. Was the same as default unless {{cd|generator-settings}} was set.
|Removed the {{cd|default_1_1}} option for {{cd|level-type}}. Was the same as default, but counted as a different world type.
|Removed the {{cd|[[Old Customized|customized]]}} option for {{cd|level-type}}.}}
|{{HistoryLine||1.16.2|dev=20w28a|Added {{cd|rate-limit}} to set the packet rate-limit for a user.}}
|{{HistoryLine||1.16.4|dev=Pre-release 1|Added {{cd|text-filtering-config}}.}}
|{{HistoryLine||1.17|dev=20w45a|Added {{cd|require-resource-pack}} which forces users to accept the resource pack.}}
|{{HistoryLine|||dev=20w49a|Removed the {{cd|max-build-height}} setting.}}
|{{HistoryLine|||dev=21w15a|Added {{cd|resource-pack-prompt}} for custom message to be shown on resource pack prompt.}}
|{{HistoryLine||1.18|dev=21w38a|Added {{cd|simulation-distance}} for control the range of entities could be updated.}}
|{{HistoryLine|||dev=21w43a|Removed {{cd|snooper-enabled}}.}}
|{{HistoryLine|||dev=21w44a|Added {{cd|hide-online-players}}, which when set to "True", does not send a player list on status requests.}}
|{{HistoryLine|||dev=Release Candidate 1|Increased server resourcepack size limit to 250 MiB.}}
|{{HistoryLine||1.19|dev=22w11a|Added {{cd|max-chained-neighbor-updates}} to limit the amount of consecutive neighbor updates before skipping additional ones.
|{{cd|level-type}}'s now accept world preset ID instead.}}
|{{HistoryLine|||dev=22w17a|Added {{cd|enforce-secure-profile}}, which when set to "True", prevents a player without a Mojang-signed public key from connecting to a server.}}
|{{HistoryLine|||dev=22w19a|Added {{cd|previews-chat}}, which when set to "True", enables chat preview.|Added {{cd|test-rainbow-chat}}.}}
|{{HistoryLine|||dev=Pre-release 1|Removed {{cd|test-rainbow-chat}}.}}
|{{HistoryLine||1.19.3|dev=22w42a|Added {{cd|initial-enabled-packs}} and {{cd|initial-disabled-packs}}.}}
|{{HistoryLine||1.20|dev=pre1|The file is now read in UTF-8 initially, with previous encoding (ISO 8859-1/Latin 1) as a fallback.|File is now written with UTF-8 encoding.}}
|{{HistoryLine||1.20.2|dev=23w31a|Added new <code>log-ips</code> option (defaults to <code>true</code>).
|When set to <code>false</code>, prevents player IP addresses from being included in the log when players join the game.}}
|{{HistoryLine||1.20.3|dev=Pre-Release 1|Added {{cd|resource-pack-id}} which defaults to empty. This is a unique id to identify the resource pack set with {{cd|resource-pack}}.}}
|{{HistoryLine||1.20.5|dev=24w04a|Added <code>region-file-compression</code>.}}
|{{HistoryLine||1.20.5|dev=24w05a|Added <code>none</code> as an option to <code>region-file-compression</code>.}}
|{{HistoryLine||1.21|dev=24w21a|Added <code>bug-report-link</code>.}}
|{{HistoryLine||1.21.2|dev=24w33a|Added <code>pause-when-empty-seconds</code> (default <code>60</code>)|Removed <code>spawn-animals</code>, which specified whether [[animal]]s can spawn, and <code>spawn-npcs</code>.}}
|{{HistoryLine|||dev=?|Added <code>text-filtering-version</code> (default <code>0</code>).}}
|{{HistoryLine|bedrock}}
|{{HistoryLine||1.6.1|Initial release of [[Bedrock Dedicated Server]].
|Current options include {{code|server-name}}, {{code|gamemode}}, {{code|difficulty}}, {{code|allow-cheats}}, {{code|max-players}}, {{code|online-mode}}, {{code|white-list}}, {{code|server-port}}, {{code|server-port-v6}}, {{code|view-distance}}, {{code|tick-distance}}, {{code|player-idle-timeout}}, {{code|max-threads}}, {{code|level-name}}, {{code|level-seed}}, {{code|default-player-permission}}, {{code|texturepack-required}}.}}
|{{HistoryLine||1.7.0|Renamed {{code|default-player-permission}} to {{code|default-player-permission-level}}.}}
|{{HistoryLine||1.12.0.28|Added {{code|content-log-file-enabled}} which enables logging content errors to a file.}}
|{{HistoryLine||1.13.0|Added {{code|compression-threshold}}, {{code|server-authoritative-movement}}, {{code|player-movement-score-threshold}}, {{code|player-movement-distance-threshold}}, {{code|player-movement-duration-threshold-in-ms}}, {{code|correct-player-movement}}.}}
|{{HistoryLine||1.16.100|Changed default {{code| server-authoritative-movement}}, from "true" to "server-auth" (false is now "client-auth")}}
|{{HistoryLine||1.16.210|Added new properties {{code|force-gamemode}} and {{code|server-authoritative-block-breaking}}, as well as {{code|server-auth-with-rewind}} option to {{code|server-authoritative-movement}}.}}
|{{HistoryLine||1.18.10|Renamed {{code|white-list}} to {{code|allow-list}}.}}
}}

== Navigation ==
{{Navbox Java Edition technical|general}}
{{Navbox Bedrock Edition}}

[[Category:Server]]

[[de:Server.properties]]
[[es:Server.properties]]
[[fr:Server.properties]]
[[hu:Server.properties]]
[[it:Server.properties]]
[[ja:Server.properties]]
[[ko:Server.properties]]
[[nl:Server.properties]]
[[pl:Server.properties]]
[[pt:Server.properties]]
[[zh:服务端配置文件格式]]
