Menu
 

Minecraft server.properties Reference: Every Setting, Default and What It Does

Minecraft server.properties: Complete Reference

server.properties is the settings file for a Java Edition server. It lives in the folder you start the jar from and is created on the first run. Every start, the server re-reads it, replaces missing or invalid values with defaults and rewrites it, stripping any comments you added. Nothing takes effect until the server restarts. Defaults below are what a current server generates; where one changed between versions the row says so, following the official server.properties documentation.

Identity and visibility

PropertyDefaultWhat it doesWhen to change it
motdA Minecraft ServerLine under your server name in the multiplayer list. Color codes work.Always. Over 59 characters can break the list entry.
enable-statustrueWhether the server answers server-list pings.False looks offline but still accepts joins.
hide-online-playersfalseWhether player names ride along in the status reply.True to keep the player list private.
bug-report-linkblankURL behind the report_bug server link.Only with your own issue tracker.

Players and access

PropertyDefaultWhat it doesWhen to change it
max-players20Concurrent player slots.Raise with RAM and CPU, never alone.
white-listfalse before 26.3, true from 26.3Whether whitelist.json gates joins. Ops are exempt.On for private servers.
enforce-whitelistfalseAlso kicks online players missing from the list on reload.With white-list, on strict servers.
online-modetrueVerifies every join against the Minecraft account database.Leave true. See the warning below.
op-permission-level4Level granted by /op (0 to 4).Lower to limit new ops.
function-permission-level2Level functions run at (1 to 4).Datapacks needing higher commands.
force-gamemodefalseForces the default game mode on every join.Creative and adventure servers.
player-idle-timeout0 (never)Minutes idle before a kick.Busy servers short on slots.
spawn-protection16Protected square around spawn, side 2x+1, ops only inside.0 to let players build at spawn. Absent until the first join; off if there are no ops.
broadcast-console-to-opstrueSends console command output to online ops.Off with a large staff team.
enable-code-of-conductfalseShows rules from the codeofconduct folder. Added 1.21.9.Public servers wanting rules accepted.
chat-spam-threshold-seconds10Chat allowance before an automatic kick; 0 never kicks. Added 26.2.Raise for chatty communities.
command-spam-threshold-seconds10The same limit for commands. Added 26.2.Raise on command-heavy servers.

World generation

PropertyDefaultWhat it doesWhen to change it
level-nameworldWorld folder. Loaded if it exists, generated if not.To swap between stored worlds.
level-seedblank (random)Seed used when the world is generated.Before the world exists, never after.
level-typeminecraft:normalPreset: normal, flat, large_biomes, amplified, single_biome_surface.Before the world exists, never after.
generator-settings{}JSON customizing the preset, mainly flat worlds.With level-type, at creation only.
generate-structurestrueWhether villages and the like generate. Dungeons ignore it.Rarely. Applies to every new chunk.
max-world-size29999984Blocks from center to the world border. Higher values do nothing.Lower to cap world size on disk.
initial-enabled-packsvanillaData packs switched on at world creation.To enable experimental features.
initial-disabled-packsblankData packs left off at creation.Rarely.

Gameplay

PropertyDefaultWhat it doesWhen to change it
gamemodesurvivalMode for a first-time player: survival, creative, adventure, spectator.Creative builds, adventure maps.
difficultyeasypeaceful, easy, normal or hard. Peaceful stops hostile spawns.Most survival servers use normal or hard.
hardcorefalseHardcore on worlds created with it on; death bans the player.At world creation only.
allow-flightfalseWhether a survival player may stay airborne without a kick.On when a plugin or mod grants flight.

Performance and view distance

PropertyDefaultWhat it doesWhen to change it
view-distance10Chunk radius of world data sent to clients (3 to 32).Lower this first for a memory problem, since it decides how much world is loaded and sent.
simulation-distance10Chunk radius that is actually ticked (3 to 32).Lower to cut tick cost; distant farms stop.
entity-broadcast-range-percentage100Percentage of the normal range entities are sent at (10 to 1000).Lower with heavy mob counts.
max-tick-time60000Milliseconds per tick before the watchdog kills the server; -1 disables it.Raise on modpacks that stall loading chunks.
max-chained-neighbor-updates1000000Consecutive block updates before the rest are skipped; negative disables.Only against redstone lag machines.
sync-chunk-writestrueSynchronous chunk writes, so a crash cannot corrupt them.Leave on.
region-file-compressiondeflateChunk compression: deflate, lz4 or none. Added 1.20.5.lz4 for faster saves, bigger files.
pause-when-empty-seconds60Seconds empty before the server stops ticking. Added 1.21.2.Raise so farms run with nobody online.

Networking and security

PropertyDefaultWhat it doesWhen to change it
server-port25565TCP port the server listens on.Several servers on one machine.
server-ipblankAddress to bind to. Blank binds all of them.Leave blank on a normal host.
network-compression-threshold256Byte size above which packets are compressed; -1 off, 0 everything.Raise on a LAN only.
use-native-transporttrueOptimized packet handling on Linux.Leave on.
rate-limit0 (off)Packets allowed before a kick.Packet floods only; false kicks are common.
prevent-proxy-connectionsfalseKicks players whose network differs from the authenticated one.Leave off if players use VPNs.
enforce-secure-profiletrueRequires a signed chat key.Off on secure profile join errors.
accepts-transfersfalseWhether transfers from another server are accepted.Multi-server networks.
log-ipstrueWhether player IPs appear in console and logs.Off to keep logs free of personal data.
text-filtering-configblankChat filter config used internally by Realms.Never.
text-filtering-version0Format version for that config; 0 or 1.Never.

Remote management and monitoring

PropertyDefaultWhat it doesWhen to change it
enable-rconfalseRemote console over TCP, unencrypted.For panels and bots, on localhost.
rcon.passwordblankRCON password. RCON refuses to start while blank.Always set a long one.
rcon.port25575TCP port RCON listens on.Change it, never expose it publicly.
broadcast-rcon-to-opstrueSends RCON command output to online ops.Off with frequent automation.
enable-queryfalseStatus protocol for uptime and player-count tools.If your monitoring needs it.
query.port25565UDP port query listens on.With enable-query, on a clash.
enable-jmx-monitoringfalseExposes tick times over JMX; needs JVM flags too.Deep performance work only.
management-server-enabledfalseMinecraft Server Management Protocol. Added 1.21.9.Only for tooling that speaks it.
management-server-hostlocalhostAddress it binds to.Leave on localhost.
management-server-port0Port it binds to.With the management server on.
management-server-secretblankForty character client token, generated when blank.To pin a known value.
management-server-tls-enabledtrueTLS for the management server.It will not start without a keystore.
management-server-tls-keystoreblankPath to the TLS keystore.Required when TLS is on.
management-server-tls-keystore-passwordblankKeystore password; an environment variable works too.Prefer the environment variable.
status-heartbeat-interval0 (off)Management server heartbeat interval.If clients need heartbeats.

Resource pack

PropertyDefaultWhat it doesWhen to change it
resource-packblankDirect download URL, up to 250 MiB.Any server shipping custom assets.
resource-pack-sha1blankLowercase SHA-1 that verifies and caches the pack.Always, and on every pack change.
resource-pack-idblankUUID identifying the pack to clients.Optional, useful when swapping packs.
resource-pack-promptblankCustom prompt text, chat component syntax.To explain why the pack is needed.
require-resource-packfalseDisconnects players who decline the pack.Maps that break without it.

Properties that moved out of the file

The dead line usually stays in your file. The server ignores a key it no longer recognises and writes the file back out with that key still in it, so an existing server upgraded past these versions keeps a pvp=false line that does nothing at all. You get no warning, no error and no clue. A missing line only tells you the file was generated fresh by a newer build, which is the case where nobody was confused anyway. If a setting here refuses to take effect, assume the line is stale rather than wrong.

If a guide says to edit one of these, that guide predates the change. The first four are now game rules, changeable at runtime.

Old propertyRemoved inUse instead
pvp1.21.9Game rule pvp
allow-nether1.21.9Game rule allow_entering_nether_using_portals
enable-command-block1.21.9Game rule command_blocks_work
spawn-monsters1.21.9Game rule spawn_monsters
spawn-animals1.21.2No direct replacement
spawn-npcs1.21.2No direct replacement

The settings behind most support tickets

SettingSymptomWhat is happening
online-modeInvalid session, or failed to verify usernameThe join was not verified. Also seen when authentication is down, or when a proxy in front disagrees.
white-listYou are not white-listed on this serverThe name is missing. Add it with /whitelist add, then /whitelist reload. From 26.3 the whitelist is on by default, so a new server locks everyone out.
server-portConnection refused, or a timeout on the address that used to workThe port changed but the firewall, port forward or SRV record still points at the old one.
max-playersThe server is fullSlots are capped here. Ops with the bypass flag still get in, which is why staff see no problem.
view-distance, simulation-distanceCannot keep up, rubber banding, slow chunk loadsBoth multiply work per player. view-distance ships chunks, simulation-distance ticks them. Drop simulation-distance first for a tick-rate problem, since it decides how much is being simulated. Distant farms stop when you do.
level-type, level-seedNew seed entered, same old worldGeneration settings live inside the world, not here. The file is read only when the world folder does not exist yet.
difficulty, hardcoreNo hostile mobs, or hardcore never appliespeaceful suppresses hostile spawns entirely. hardcore is written into the world at creation, so switching it on later does nothing.

Warning about online-mode: online-mode=false stops the server checking who is connecting. Anyone can type any username, including yours or an op's, and get that player's inventory, permissions and home. It does not make unlicensed clients safe to admit, it removes the only check that ties a username to an account. Keep it true. The one legitimate case is a backend server reachable only through a proxy that verifies players itself and is firewalled. If a login error sent you here, read cannot verify secure profile and common startup errors first.

Settings that only apply to a brand new world

level-seed, level-type, generator-settings, hardcore, initial-enabled-packs and initial-disabled-packs are read when the world folder is created, then stored in the world. Editing them later changes nothing and reports no error, which is why the seed you typed never shows up. To apply them, point level-name at a folder that does not exist yet. spawn-protection is the opposite case: it is absent from a fresh file and appears only after the first player joins. See the world management guide.

What is not in this file

  • Memory and JVM settings. -Xmx and -Xms belong to the start command. See Aikar's flags and modpack sizing.
  • Plugin and mod settings. Those live in plugins/, config/, spigot.yml and paper-global.yml, and depend on your server software, compared in the software comparison.
  • Ranks and permissions. Anything past op level comes from a plugin, usually LuckPerms.
  • Player lists. ops.json, whitelist.json and the two ban lists are separate files, edited in game with commands.
  • Game rules. keep_inventory, mob_griefing and, since 1.21.9, pvp and command_blocks_work are set with /gamerule. Note the snake_case: 1.21.11 renamed every game rule from camelCase, so older guides give names a current server rejects.
  • EULA acceptance. eula.txt, which the server refuses to start without.
  • Bedrock clients. A Java server needs Geyser; Bedrock Dedicated Server has its own file.

Related guides

Looking for managed Minecraft server hosting? Supercraft runs Minecraft dedicated servers with daily backups, instant setup, and 4 region options.

Launch a Minecraft Java server with this setup

Pick a preset and your new server boots preconfigured - rates, rules and mods already dialed in. Change anything later in the panel.

Browse all Minecraft Java recipes →

Minecraft Hardcore

One life, no second chances: Hardcore mode, Hard difficulty, PvP on. Death is permanent: players are banned t…

Minecraft Creative Build

A peaceful creative server for builders: Creative mode, Peaceful difficulty, flight enabled, PvP off and no s…

Tired of fighting this issue every patch?

Run a managed Minecraft server with us. We handle the patches, mod-version pinning, save backups, and DDoS protection. Set up in minutes, multiple datacenter regions, no contract.

See Minecraft hosting plans →
Top