server.properties
Build a Minecraft server.properties file with presets, a short explanation for every setting and warnings when a value looks wrong.
Start from
Pick a preset, then adjust anything below
Basics
What players see first
Two lines under the server name in the multiplayer list. & colour codes are turned into §, and symbols are escaped for you.motd
Players allowed online at once. Ops on the whitelist can bypass it via ops.json.max-players
Mode for new players.gamemode
Mob damage, hunger and which mobs spawn.difficulty
World
Generation and the map itself
Folder the world is loaded from or created in.level-name
Only used when the world is first created.level-seed
Preset used when the world is first generated.level-type
JSON for superflat or single-biome worlds. Leave as {} for defaults.generator-settings
World border radius in blocks.max-world-size
Radius around spawn that only ops can edit. 0 turns it off. Ignored while there are no ops.spawn-protection
Gameplay
Rules while playing
Kicks AFK players after this many minutes. 0 never kicks.player-idle-timeout
Permission level datapack functions run with.function-permission-level
Players & access
Who can join and what they can do
Default level given by /op.op-permission-level
Time window the server uses to spot chat spam.chat-spam-threshold-seconds
Time window the server uses to spot command spam.command-spam-threshold-seconds
Performance
Distances, ticking and saving
Chunks sent to players in each direction. The biggest RAM and bandwidth lever.view-distance
Chunks around players where mobs, crops and redstone tick. Biggest CPU lever.simulation-distance
How far away entities are sent to clients, as a percent of the default.entity-broadcast-range-percentage
Stops ticking after the server has been empty this long. 0 never pauses.pause-when-empty-seconds
Crashes the server if one tick takes longer than this. -1 disables the watchdog.max-tick-time
Compression for newly written chunks.region-file-compression
Limit on consecutive block updates before skipping. Stops lag machines.max-chained-neighbor-updates
Network
Ports, query, RCON and packets
Leave empty unless your host tells you otherwise.server-ip
TCP port players connect to.server-port
Packets bigger than this many bytes are compressed. -1 turns it off (proxy on the same machine).network-compression-threshold
Kicks players sending more packets per second than this. 0 is no limit.rate-limit
UDP port for query.query.port
TCP port for RCON.rcon.port
Required for RCON. Use a long random string.rcon.password
Advanced
Resource packs, datapacks and the rest
Direct download link to a .zip.resource-pack
Lets clients cache the pack and detect changes.resource-pack-sha1
Optional. Identifies the pack on the client.resource-pack-id
Custom message on the download prompt (JSON text).resource-pack-prompt
Comma-separated, applied when the world is created.initial-enabled-packs
Comma-separated, applied when the world is created.initial-disabled-packs
Shown to players on disconnect screens.bug-report-link
Used by Realms. Leave empty.text-filtering-config
Interface the management API listens on.management-server-host
0 picks a free port.management-server-port
Token clients must send to use the API.management-server-secret
Path to the keystore file.management-server-tls-keystore
Password for the keystore.management-server-tls-keystore-password
How often the management API sends status notifications. 0 is off.status-heartbeat-interval
#Minecraft server properties
#Generated by ZCraft Tools (tools.zcraftstudios.com) for Java Edition 26.3 and newer
accepts-transfers=false
allow-flight=false
broadcast-console-to-ops=true
broadcast-rcon-to-ops=true
bug-report-link=
chat-spam-threshold-seconds=10
command-spam-threshold-seconds=10
difficulty=normal
enable-code-of-conduct=false
enable-jmx-monitoring=false
enable-query=false
enable-rcon=false
enable-status=true
enforce-secure-profile=true
enforce-whitelist=true
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
management-server-enabled=false
management-server-host=localhost
management-server-port=0
management-server-secret=
management-server-tls-enabled=true
management-server-tls-keystore=
management-server-tls-keystore-password=
max-chained-neighbor-updates=1000000
max-players=30
max-tick-time=60000
max-world-size=29999984
motd=\u00a7a\u00a7lSurvival SMP\n\u00a77Whitelisted survival
network-compression-threshold=256
online-mode=true
op-permission-level=4
pause-when-empty-seconds=60
player-idle-timeout=0
prevent-proxy-connections=false
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=8
spawn-protection=0
status-heartbeat-interval=0
sync-chunk-writes=true
text-filtering-config=
use-native-transport=true
view-distance=10
white-list=true
Save it as server.properties in the server folder (next to the jar) and restart.
About server.properties
server.properties sits in the server root and is read once at startup, so restart after editing it. Missing keys are filled in with their defaults, and keys the server doesn’t know are ignored. Paper, Purpur and Spigot use the same file and add their own settings in separate YAML files.
Some settings only apply when the world is first created: level-seed, level-type, generator-settings and the initial datapacks. Changing them later has no effect on existing chunks.
In 1.21.9 Mojang moved pvp, allow-nether, spawn-monsters and enable-command-block to game rules. 26.2 added chat-spam-threshold-seconds and command-spam-threshold-seconds, and 26.3 turns white-list on by default for new servers. Pick your version above so the file only contains keys your server reads. The file is read as ISO-8859-1, so the MOTD’s § signs and symbols are written as \u00A7-style escapes.
ZCraft Studios
Want us to set up your server?
Our team installs and configures plugins, sets up game modes, fixes errors and tunes performance. You talk to us directly on Discord.