Short answer: server.properties is the Java Edition server’s UTF-8 configuration file. It controls authentication, gameplay defaults, world generation, networking, performance, administration, resource packs, and newer management APIs. Edit the file in the server’s working directory, save it as plain text, and restart the server for changes to take effect.
Godlike.Host offers hosted Minecraft Java servers with its own game panel, SFTP access and free DDoS protection, if you would rather not host it yourself.
Version note: The defaults and key list below match the verified Minecraft Java Edition 1.21.9 file. Mojang can add, rename, or remove properties in later releases, and Bedrock Edition uses a different configuration system.
As an Amazon Associate I earn from qualifying purchases.
What server.properties is and how it behaves
The file uses Java Properties syntax: one key=value pair per line, with # starting a comment. It is UTF-8 encoded text. Values can contain escaped punctuation; for example, the normal world preset appears as level-type=minecraft:normal.
The server creates server.properties in its working directory. On startup it preserves valid values, fills in missing or invalid keys with defaults, and rewrites the file. That rewrite is why an unsupported option can appear to “reset.” Stop the server before editing, keep a backup, and restart after saving. A running server generally will not reread ordinary property changes.
#1 Best Overall
Safe editing procedure
- Stop the Java server cleanly so chunks and the properties file are flushed.
- Open the
server.propertiesfile in a UTF-8-capable text editor. Do not use a word processor that adds rich-text formatting. - Change only the value after the equals sign. Keep the key spelling, lowercase names, and punctuation intact. Leave a value empty when the documented default is blank.
- Save the file as UTF-8 text in the same server directory. Preserve a backup before changing world, security, or networking options.
- Start the server and read the startup log. If a key is obsolete or invalid, the server may replace it with a default; use the current release’s documented setting instead.
Access, authentication, and allowlisting
These properties decide who can connect and how the server authenticates them.
| Setting | 1.21.9 default | What it does |
|---|---|---|
online-mode |
true |
Authenticates players with Mojang’s account services. Turning it off removes that authentication layer and is unsafe for an Internet-facing server. |
enforce-secure-profile |
true |
Requires players to present signed profile keys. Compatibility-focused private setups may need to understand the security trade-off before changing it. |
white-list |
false |
Enables the allowlist. When enabled, only listed players can join. |
enforce-whitelist |
false |
When true, enforcing the whitelist can remove players who are not listed after a reload or related whitelist change. |
prevent-proxy-connections |
false |
Blocks connections detected as coming through proxy services. Detection can reject legitimate network arrangements. |
accepts-transfers |
false |
Controls whether the server accepts incoming transfer packets from another server. |
log-ips |
true |
Controls whether player IP addresses are written to server logs. Consider privacy requirements before disabling or retaining this data. |
Gameplay policy and player experience
| Setting | Default | Effect |
|---|---|---|
difficulty |
easy |
Sets the difficulty: peaceful, easy, normal, or hard. |
gamemode |
survival |
Default mode for new players. Accepted modes are survival, creative, adventure, and spectator. |
force-gamemode |
false |
When true, players are placed in the configured default mode when they join instead of retaining their previous mode. |
hardcore |
false |
Applies hardcore rules to newly created worlds. Changing it does not convert an existing world safely. |
allow-flight |
false |
Allows flight that would otherwise trigger the survival flight check, useful for some mods. It does not itself grant creative mode. |
spawn-protection |
16 |
Protects a radius around the world spawn from non-operators. A value of zero disables this protection. |
player-idle-timeout |
0 |
Kicks players after the specified number of idle minutes. Zero means no automatic idle kick. |
motd |
A Minecraft Server |
Message shown in the multiplayer server list. Formatting codes and line handling depend on the client and server version. |
bug-report-link |
empty | Optional link presented for reporting server problems. |
World selection and generation
World-generation properties matter most when a world is first created. Existing chunks and dimensions are not regenerated simply because you edit these values.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
| Setting | Default | Use |
|---|---|---|
level-name |
world |
Selects the world directory. Pointing to another directory loads that world if it is a valid save. |
level-seed |
empty | Sets the generation seed. Empty lets the server choose a random seed when creating the world. |
level-type |
minecraft:normal |
Selects a preset such as normal, flat, large-biomes, amplified, or single-biome. Keep the namespace and escaped colon syntax. |
generator-settings |
{} |
Supplies JSON customization for supported world presets. Invalid JSON can be rejected and replaced. |
generate-structures |
true |
Controls generation of structures such as villages in newly generated terrain. |
initial-enabled-packs |
vanilla |
Datapacks enabled when a world is created. |
initial-disabled-packs |
empty | Datapacks disabled at world creation. |
max-world-size |
29999984 |
Caps the effective world border size. It does not enlarge the game’s practical coordinate limits. |
sync-chunk-writes |
true |
Writes chunks synchronously. Disabling synchronous writes may alter performance and increases the importance of reliable storage and shutdowns. |
Capacity and performance controls
Performance settings interact. Lowering distances reduces work and bandwidth, while compression and pausing trade CPU time against network or hosting costs.
Rank #2
| Setting | Default | Meaning |
|---|---|---|
max-players |
20 |
Maximum concurrent players accepted by the server. |
view-distance |
10 |
Approximate chunk radius the server sends to each player. Higher values increase data transfer and memory pressure. |
simulation-distance |
10 |
Chunk radius in which entities, crops, redstone, and other game logic continue ticking. It affects server CPU more directly than view distance. |
entity-broadcast-range-percentage |
100 |
Scales how far entities are sent to clients. Lower values can reduce traffic while making distant mobs and objects appear later. |
network-compression-threshold |
256 |
Packet-size threshold for compression. Lower thresholds save bandwidth but consume more CPU; higher thresholds do the opposite. |
max-tick-time |
60000 |
Watchdog limit in milliseconds for a server tick. A value of -1 disables the watchdog, which removes automatic hang detection rather than fixing lag. |
max-chained-neighbor-updates |
1000000 |
Limits consecutive block-neighbor updates, helping prevent runaway update chains. |
pause-when-empty-seconds |
60 |
Pauses an empty server after the specified number of seconds. Set zero if the world must continue ticking while nobody is connected. |
rate-limit |
0 |
Packet-rate limit per client. Zero means no property-level rate limit. |
region-file-compression |
deflate |
Compression method used for region files. Storage size, read/write CPU use, and compatibility vary by available choices. |
use-native-transport |
true |
Uses native networking where the operating system and Java environment support it. |
View distance versus simulation distance
view-distance determines how much terrain the server sends for rendering. simulation-distance determines how far active game logic runs. A player can therefore see terrain beyond the area where farms, mobs, and redstone are ticking. Reduce simulation distance first when the main problem is tick time; reduce view distance when bandwidth, memory, or login chunk delivery is the bottleneck.
Networking, status, and discovery
| Setting | Default | Purpose |
|---|---|---|
server-ip |
empty | Local address to bind. Leaving it blank is the usual choice on machines with multiple interfaces; setting an address restricts listening to that interface. |
server-port |
25565 |
TCP game port players use. If you change it, update firewall and router forwarding rules and give players the new port. |
enable-status |
true |
Allows multiplayer-list status replies, including the server’s reachability information. |
hide-online-players |
false |
Suppresses the player list in status responses while leaving the server available. |
enable-query |
false |
Enables GameSpy4 query responses for external server-list or monitoring tools. |
query.port |
25565 |
UDP query port. It can differ from the game port and must be opened separately if used across a firewall. |
status-heartbeat-interval |
0 |
Interval for status heartbeat notifications. Zero disables heartbeat notifications. |
The game port and query port both default to 25565, but they are separate protocols. Changing server-port does not automatically change query.port.
Operators, commands, and RCON
| Setting | Default | Effect and security note |
|---|---|---|
op-permission-level |
4 |
Default permission level assigned to operators. |
function-permission-level |
2 |
Permission level used when datapack functions execute commands. |
broadcast-console-to-ops |
true |
Sends console command output to online operators. |
broadcast-rcon-to-ops |
true |
Sends RCON command output to operators. |
enable-rcon |
false |
Enables the remote console protocol. |
rcon.port |
25575 |
TCP port used by RCON. |
rcon.password |
empty | Password required by RCON clients. Set a long unique secret before enabling RCON. |
Documented RCON traffic is unencrypted. Keep it on a trusted private network, restrict the port with a firewall, or place it behind a secure transport such as an authenticated tunnel. Do not expose an empty-password RCON listener to the Internet.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallRank #3
Resource packs and text filtering
| Setting | Default | What it controls |
|---|---|---|
resource-pack |
empty | URL clients use to download the server resource pack. |
resource-pack-sha1 |
empty | SHA-1 hash used to verify the downloaded pack. |
resource-pack-id |
empty | Identifier for the pack. |
resource-pack-prompt |
empty | Prompt text shown when the client is asked to install the pack. |
require-resource-pack |
false |
When true, players who reject the pack cannot join. |
text-filtering-config |
empty | Configuration reference for text-filtering integration. |
text-filtering-version |
0 |
Version value used by that filtering integration. |
Use a stable HTTPS download location and verify the hash when distributing a pack. Requiring a pack is a policy decision: it guarantees presentation consistency but can prevent players with incompatible clients from joining.
JMX monitoring and the 1.21.9 management server
| Setting | Default | Details |
|---|---|---|
enable-jmx-monitoring |
false |
Exposes tick-time management beans when Java JMX is also configured. Enabling this property alone does not configure JMX access. |
management-server-enabled |
false |
Enables the newer management server API. |
management-server-host |
localhost |
Network host on which the management API listens by default. |
management-server-port |
0 |
Port for the management API. Zero selects an available port. |
management-server-secret |
random text | Secret used by the management service. When blank, 1.21.9 generates a 40-character alphanumeric secret. |
management-server-tls-enabled |
true |
Enables TLS for the management API by default. |
management-server-tls-keystore |
empty | Path to the PKCS12 keystore used for TLS. |
management-server-tls-keystore-password |
empty | Password for that keystore. |
Do not publish the generated management secret. If you bind the API beyond localhost, protect the chosen port and keystore as carefully as any administrative interface.
Code of conduct files
enable-code-of-conduct=false by default. Set it to true to make the server load UTF-8 language files from a codeofconduct subfolder. It prefers the joining player’s language, then en_us, then any available language file. Place the files in the server directory structure expected by the Java release and test with a non-operator account.
Rank #4
Properties removed in Java 1.21.9
Mojang’s 1.21.9 release notes state that allow-nether, spawn-monsters, enable-command-block, and pvp were removed from server.properties in favor of game rules. The change lets those policies be altered while the server is running. Copying an older guide can therefore leave these keys ignored or rewritten.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →- Use the
doNethergame rule for Nether access instead ofallow-nether. - Use the
doMobSpawninggame rule for natural mob spawning instead ofspawn-monsters. - Use the
commandBlocksEnabledgame rule for command-block operation instead ofenable-command-block. - Use the
pvpgame rule for player-versus-player damage instead of the removed property.
Run the corresponding /gamerule command from the console or as an authorized operator, and verify the exact rule spelling supported by the server version.
What to change first on a new server
- Set
level-name,level-seed,level-type, andgamemodebefore the first world generation. - Choose
difficulty,hardcore,force-gamemode, andspawn-protectionto match the community’s rules. - Keep
online-mode=trueandenforce-secure-profile=trueunless you have a documented compatibility reason and understand the security loss. - Enable
white-list=truefor a private server and useenforce-whitelist=truewhen unauthorized players must be removed after enforcement. - Change
motd, then set the publicserver-portand firewall forwarding. Leaveserver-ipblank unless you specifically need interface binding. - Measure tick performance before tuning distances. Reduce
simulation-distancefor CPU pressure,view-distancefor bandwidth or memory pressure, and considerpause-when-empty-secondsfor an intermittently used server. - Only then add RCON, query, resource-pack enforcement, JMX, or management API access, each protected by network controls and secrets.
Troubleshooting common problems
A value keeps reverting
Check the startup log and compare the key with the 1.21.9 list. Misspellings, removed properties, invalid numbers, malformed JSON, and unsupported values are commonly replaced with defaults. Confirm that you edited the file in the directory from which the server actually starts.
Best Value
Players cannot connect after changing the port
Confirm that server-port is numeric, the operating-system firewall allows the new TCP port, the router forwards it to the server host, and players use the new port. If query is enabled, open query.port separately over UDP.
The server feels laggy even with a low player count
Check tick time and entity activity. Lower simulation-distance, inspect farms or redstone, and keep view-distance appropriate for available memory and bandwidth. Do not disable max-tick-time as a substitute for finding the workload.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsWhitelist changes do not take effect as expected
Ensure white-list=true, add the player with the server whitelist command, and use enforce-whitelist=true only when kicking non-listed players after enforcement is intended. Operators can still administer the server.
RCON connects but is unsafe
Set a unique password, bind or firewall the RCON port to trusted hosts, and avoid exposing the unencrypted protocol directly to the public Internet. Disable enable-rcon when remote administration is no longer needed.
Quick Recap
Practical 1.21.9 checklist
- Back up the properties file and world before major edits.
- Use Java Edition settings only; Bedrock configuration keys are not interchangeable.
- Restart after every properties change and inspect the startup log.
- Record custom ports, management secrets, resource-pack hashes, and firewall rules in a protected administrator runbook.
- Recheck the release notes when upgrading because the key inventory and defaults are version-specific.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




