Minecraft Bedrock server.properties: The Complete Key Reference
Every server.properties key for Bedrock Dedicated Server 1.26.44.3 — values, defaults and effects — plus the Java keys that do nothing on Bedrock.
Bedrock Dedicated Server (BDS) reads a file called server.properties, the same filename Java Edition uses. That is where the similarity ends. The two editions ship completely different key sets, and only eleven key names appear in both. Every other Java setting you paste into a Bedrock server.properties is read, not recognised, and silently ignored — no error, no warning, no effect.
This page documents every key the current Bedrock Dedicated Server accepts: name, valid values, default, and what it actually changes. For first boot, connecting and day-to-day operation see Setting up your Bedrock Minecraft server. For the Java Edition file, which is a different document entirely, see Minecraft server.properties: The Complete Reference.
This reference is current for Bedrock Dedicated Server 1.26.44.3
Every value below was read out of the
server.propertiesandbedrock_server_how_to.htmlfiles shipped inside the official BDS 1.26.44.3 archive, the build served by Mojang's download API as of 18 August 2026. It corresponds to Bedrock Edition 26.44, released 14 August 2026. Bedrock adds and removes keys frequently, so check the comments in your own copy of the file if a key here is missing on your server.
1. How the File Works
The format is one key=value per line, and lines starting with # are comments. The server.properties inside Mojang's own BDS download is heavily commented — every key carries a short description and its allowed values — and that copy is worth keeping open while you work.
The file on your server here will not look like that
Our Bedrock egg generates
server.propertiesfresh when the server installs, so the copy you open in the File Manager arrives with 41 active lines and no comments at all. Nothing is missing and nothing is broken — the keys are simply bare. Use this page, or the commented copy inside Mojang's BDS download, rather than expecting your own file to explain itself.
The file holds 68 recognised keys in total:
| Where it appears | Count | Meaning |
|---|---|---|
| Active lines in the shipped file | 41 | Set to their default; edit in place |
| Commented out in the shipped file | 25 | Optional. Uncomment to use, otherwise the default applies |
| Documented but not present at all | 2 | enable-packet-rate-limiter and server-authoritative-block-breaking. Add the line yourself |
A commented-out key is not a disabled key. It is a key running on its default. Uncommenting #enable-profiler=true and leaving the value alone changes nothing; you have to uncomment it and set the value you want.
Bedrock has no
/reload— every change needs a restartJava's
/reloadhas no working equivalent on BDS. The server has to be restarted for aserver.propertieschange to take effect. The single exception is the console commandchangesetting, which can flipallow-cheatsanddifficultyon a running server — and it does not write your choice back to the file, so the value reverts on the next restart unless you also edit the file.
Most keys are read on every startup. level-seed is the exception: it is only consulted when the world is first generated, so changing it on an existing world does nothing.
2. World and Gameplay
| Key | Values | Default | Effect |
|---|---|---|---|
level-name |
Any string, no semicolon and no characters illegal in a filename | Bedrock level |
Names the world, and names its folder under worlds/ |
level-seed |
Any string | (empty) | World generation seed. Empty means random. Read at world creation only |
gamemode |
survival, creative, adventure |
survival |
Game mode new players start in |
force-gamemode |
true, false |
false |
When false, the server never overrides the game mode saved with the world, even if you change gamemode afterwards. Set true to make a post-creation gamemode change actually apply |
difficulty |
peaceful, easy, normal, hard |
easy |
World difficulty |
allow-cheats |
true, false |
false |
Whether commands can be used at all. With this off, even an operator cannot run slash commands |
texturepack-required |
true, false |
false |
Forces clients to accept the world's texture packs before joining |
allow-cheatsis the setting people missMaking somebody an operator does not give them commands if
allow-cheatsisfalse. It is a world-level switch that sits above the permission system, and it is off by default. If/gamemodereturns nothing at all for an operator, this is almost always why.
3. Players and Access
| Key | Values | Default | Effect |
|---|---|---|---|
max-players |
Any positive integer | 10 |
Player cap. Higher values cost performance |
online-mode |
true, false |
true |
Requires every player to be authenticated with Xbox Live. Clients connecting to a remote (non-LAN) server are always required to authenticate regardless of this setting |
allow-list |
true, false |
true |
Restricts joining to players listed in allowlist.json |
default-player-permission-level |
visitor, member, operator |
member |
Role assigned to a player joining for the first time |
allow-player-joining |
true, false |
true |
When false, nobody can join unless a script explicitly permits it via AsyncPlayerJoinBeforeEvent. Commented out by default |
player-idle-timeout |
Any non-negative integer (minutes) | 30 |
Kicks players idle for this long. 0 disables the timeout |
chat-restriction |
None, Dropped, Disabled |
None |
Dropped silently discards chat and tells players the feature is off. Disabled hides the chat UI entirely from non-operators |
disable-player-interaction |
true, false |
false |
Tells clients to ignore other players when interacting with the world. Not server-authoritative |
disable-custom-skins |
true, false |
false |
Blocks skins made outside Minecraft's own store and in-game assets — the usual lever against offensive custom skins |
disable-persona |
true, false |
false |
Marked "Internal Use Only" in Mojang's own documentation. Leave it alone |
allow-listnow defaults totrue— a fresh server locks everybody outThis default changed. Bedrock Dedicated Server shipped
allow-list=falsefor years and flipped toallow-list=truein the 26.30 release; BDS 1.26.23.1 still shippedfalse, and 1.26.30.5 shippedtrue. On a current build, an untouched server accepts nobody until you add them. Players who try get "You're not invited to play on this server." The fix is to add yourself, not to disable the list — see Bedrock Allowlist and Permissions.
4. Networking and Ports
| Key | Values | Default | Effect |
|---|---|---|---|
server-port |
Integer 1–65535 (values under 1024 are reserved in practice) | 19132 |
IPv4 port |
server-portv6 |
Integer 1–65535 | 19133 |
IPv6 port. Ignored when transport=nethernet |
transport |
raknet, nethernet |
raknet |
Network transport. See below |
server-ip |
An IPv4 or IPv6 literal, or empty | (empty) | Local bind address. Empty binds all interfaces. Only used when transport=nethernet |
server-udp-ports |
See below | (empty) | Constrains the UDP port window and can publish a NAT mapping. Only used when transport=nethernet |
enable-lan-visibility |
true, false |
true |
Responds to LAN server discovery |
compression-threshold |
Integer 0–65535 | 1 |
Smallest raw network payload that gets compressed. A CPU-versus-bandwidth trade |
compression-algorithm |
zlib, snappy |
zlib |
Network compression algorithm |
enable-packet-rate-limiter |
true, false |
false |
Applies the per-packet-type rate limits configured in packetlimitconfig.json. Not present in the shipped file — add the line |
Bedrock is a UDP game. Java is TCP. That single difference explains most of the port confusion between the two editions.
enable-lan-visibilitygrabs 19132 and 19133 even when you moved the portWith
transport=raknet, leaving LAN visibility on makes the server bind the default ports 19132 and 19133 as well as the ones you set inserver-portandserver-portv6. On a shared host that is a port conflict waiting to happen, and it is the reason two Bedrock servers on one machine can refuse to start even with different ports configured. Turn it off if you are not relying on LAN discovery.
The nethernet transport
transport selects how clients reach the server, and the two values behave very differently:
raknet— the traditional Bedrock UDP transport, and the default. The server listens directly onserver-portandserver-portv6, and clients connect to that address and port. This is how every earlier release worked.nethernet— a WebRTC-based transport. The server opens a single dual-stack TCP socket onserver-portfor an HTTP-based signalling handshake, then negotiates a separate UDP connection with each client for gameplay traffic.
server-ip and server-udp-ports only do anything in nethernet mode. server-udp-ports either restricts the local UDP allocation window (49152-49200) or publishes a NAT mapping in the form [ip:]external[-external]:internal[-internal], for example 19132-19232:32000-32100 to bind locally on 32000–32100 while advertising 19132–19232 to clients. Ranges on both sides of the colon must be the same length. Multiple entries can be comma-separated, and the key may appear on more than one line to accumulate entries.
Because the NetherNet handshake speaks HTTP over TCP, Mojang's own documentation recommends putting a reverse proxy in front of server-port on an internet-facing server to enforce request and rate limits; only signalling traffic passes through it, while gameplay flows directly over the negotiated UDP connection.
5. Performance
| Key | Values | Default | Effect |
|---|---|---|---|
view-distance |
Integer, 5 or greater | 32 |
Maximum chunks a player can see. The single biggest performance lever |
tick-distance |
Integer 4–12 | 4 |
How many chunks around each player actually simulate |
max-threads |
Any positive integer | 8 |
Thread cap. 0 or removing the key lets the server use as many as it can |
client-side-chunk-generation-enabled |
true, false |
true |
Lets clients generate visual chunks beyond interaction distance, offloading work from the server |
server-build-radius-ratio |
Disabled, or 0.0–1.0 |
Disabled |
Disabled lets the server decide dynamically how much of the player's view it generates. A fixed ratio overrides that regardless of client hardware. Only meaningful with client-side chunk generation on |
block-network-ids-are-hashes |
true, false |
true |
Sends hashed, stable block network IDs instead of sequential ones |
Lower
view-distancefirst,tick-distancesecondThe shipped default of
view-distance=32is generous — it is a rendering distance, and dropping it costs players very little while saving a great deal of bandwidth and CPU.tick-distanceis capped at 12 and defaults to the minimum of 4 already, so there is far less to reclaim there. Its Java counterpart issimulation-distance, notview-distance.
6. Server-Authoritative Movement and Anti-Cheat
This group replaced the old movement keys entirely (see section 8). All of it is about how strictly the server second-guesses the client, and every one of these settings is a latency trade: stricter settings catch more cheating and send more position corrections to honest players on bad connections.
| Key | Values | Default | Effect |
|---|---|---|---|
server-authoritative-movement-strict |
true, false |
false |
Stricter about player position, less willing to accept the client's version. Clients get more corrections. Noticeable around moving blocks at high latency |
server-authoritative-dismount-strict |
true, false |
false |
Stricter about dismount position. Corrects the client's dismount at higher latency |
server-authoritative-entity-interactions-strict |
true, false |
false |
Stricter about entity interactions. Affects players interacting with each other at higher latency |
player-position-acceptance-threshold |
Any positive float | 0.5 |
Tolerance for client/server position disagreement before a correction is sent. Raise it to stop correcting honest players who were knocked back or pushed by a piston; values above 1.0 measurably increase the chance of missing a cheater |
player-movement-action-direction-threshold |
Float in [-1.00, 1.00] |
0.85 |
How far a player's attack direction may differ from their look direction, as the cosine of the angle between them. 1 demands they match exactly, 0 allows anything in front of the player, -1 allows anything |
server-authoritative-block-breaking |
true, false |
false |
Server computes block mining in sync with the client and verifies the client should be able to break what it claims. Cannot be combined with client-authoritative movement and is disabled if that is set. Not present in the shipped file |
server-authoritative-block-breaking-pick-range-scalar |
Float above 1.0 | 1.5 |
Extends block-breaking range. Squared, then multiplied by the default range. Only applies when the key above is true |
7. Logging, Diagnostics and Scripting
Bedrock's add-on scripting API brings a block of keys Java has no analogue for. Nearly all of them are commented out in the shipped file.
Content logging — content errors are add-on and pack errors, the Bedrock equivalent of a plugin stack trace:
| Key | Values | Default |
|---|---|---|
content-log-file-enabled |
true, false |
false |
content-log-console-output-enabled |
true, false |
false |
content-log-level |
error, warning, info, verbose |
info |
Script debugger — allow-outbound-script-debugging and allow-inbound-script-debugging (both false) gate the debugger's connect and listen modes. script-debugger-auto-attach (disabled, connect, listen) attaches at world load, using script-debugger-auto-attach-connect-address (host:port) in connect mode or force-inbound-debug-port (default 19144) in listen mode. script-debugger-auto-attach-timeout sets how long to wait at load, and script-debugger-passcode makes VS Code prompt for a passcode.
Script watchdog — enabled by default, and it is what stops a runaway add-on taking the server down. script-watchdog-enable, -enable-exception-handling, -enable-shutdown and -hang-exception all default to true; script-watchdog-hang-threshold is 10000 ms for a single-tick hang; -spike-threshold (100) and -slow-threshold (10) produce warnings and are disabled unless set. script-watchdog-memory-warning (100 MB, max 2000, 0 disables) logs a content warning, and script-watchdog-memory-limit (250 MB, max 2000, 0 disables) saves and shuts the world down.
Diagnostics and telemetry — diagnostics-capture-auto-start (false) starts a capture at world load, cycling through diagnostics-capture-max-files (5) files of diagnostics-capture-max-file-size (2097152 bytes) each. sentry-rate-limit-window (60 seconds) and sentry-max-events-per-window (10) throttle scripting errors reported to Sentry. enable-profiler turns on profiler support and enable-editor-network-metrics enables live network metrics in the debugger.
Editor and client rendering — convert-world-to-editor-project (false) upgrades a vanilla world to an Editor project, but only when the server is launched with the Editor=true command-line flag. disable-client-vibrant-visuals tells clients to fall back to the next best graphics setting instead of Vibrant Visuals.
8. Removed Keys That Guides Still Tell You To Set
Five movement keys are still quoted all over the internet, including in configuration generators. None of them exists any more. Setting them does nothing at all.
| Dead key | Last seen in | Replaced by |
|---|---|---|
server-authoritative-movement |
BDS 1.21.62.01 — gone from 1.21.70 onward | server-authoritative-movement-strict |
player-movement-score-threshold |
Present in BDS 1.20.30.02, gone by 1.20.81.01 | Nothing directly |
player-movement-distance-threshold |
Present in BDS 1.20.30.02, gone by 1.20.81.01 | player-position-acceptance-threshold covers the same job |
player-movement-duration-threshold-in-ms |
Present in BDS 1.20.30.02, gone by 1.20.81.01 | Nothing directly |
correct-player-movement |
Present in BDS 1.20.30.02, gone by 1.20.81.01 | The server-authoritative-*-strict family |
server-authoritative-movement also had three named values — client-auth, server-auth and server-auth-with-rewind — and those are gone with it. The current model is always server-authoritative, and the -strict keys only choose how tightly it is enforced.
9. Same Job, Different Name
These are the keys most likely to waste an hour. The behaviour exists on both editions; only the spelling changed.
| Java Edition | Bedrock Edition | Notes |
|---|---|---|
white-list |
allow-list |
Renamed in Bedrock 1.18.10. The file was renamed too: whitelist.json became allowlist.json |
network-compression-threshold |
compression-threshold |
Same job. Bedrock adds compression-algorithm, which Java has no equivalent for |
simulation-distance |
tick-distance |
Java's default is 10; Bedrock's is 4 and it is capped at 12 |
require-resource-pack |
texturepack-required |
Forces clients to accept the world's packs |
motd |
server-name |
Not a true equivalent. server-name is the server's name; BDS has no way to set an MOTD line at all, even though Bedrock clients display one |
ops.json |
permissions.json |
Different file, different format, different concept — see Bedrock Allowlist and Permissions |
10. Java Keys With No Bedrock Equivalent
If a guide tells you to set one of these on a Bedrock server, the guide is about Java. The gaps that matter most operationally:
| Missing on Bedrock | Consequence |
|---|---|
enable-rcon, rcon.port, rcon.password |
BDS has no RCON. There is no supported way to send console commands remotely |
enable-query, query.port |
No Query protocol, so Query-based status tooling cannot see the server |
motd |
No message of the day, as above |
op-permission-level, function-permission-level |
Bedrock has no numeric permission level in its config. It uses three named roles |
spawn-protection |
No spawn-protection radius |
allow-flight |
No server-side flight check of this kind |
hardcore |
No hardcore flag |
level-type, generate-structures, generator-settings |
World generation is not configurable from server.properties |
max-world-size |
No world border set from the properties file |
resource-pack, resource-pack-sha1, resource-pack-prompt |
Bedrock serves packs from the world, not from a URL. Use texturepack-required plus the world's pack folders. The Java URL-and-SHA-1 workflow these keys belong to is in How to Install Datapacks and Resource Packs |
pause-when-empty-seconds |
Bedrock does not pause an empty world |
enforce-secure-profile, enable-status, hide-online-players, prevent-proxy-connections |
No equivalents |
max-tick-time |
No tick watchdog. The script watchdog covers add-ons only |
There is also no Bedrock equivalent of Java's -Xmx and -Xms. BDS has no JVM and no way to set an initial or maximum memory value; it takes what it needs.
11. The Eleven Keys Spelled the Same
These are the only key names that appear in both editions' server.properties:
difficulty · force-gamemode · gamemode · level-name · level-seed · max-players · online-mode · player-idle-timeout · server-ip · server-port · view-distance
Even here, three behave differently. server-ip is ignored on Bedrock unless transport=nethernet. view-distance defaults to 32 on Bedrock against Java's 10, and on Bedrock it is purely a view distance because ticking is governed by tick-distance. And server-port is a UDP port on Bedrock, a TCP port on Java.
12. A Sensible Starting Point
For a small private survival server on a managed host, this is the set worth changing from the defaults:
server-name=My Server
gamemode=survival
difficulty=normal
allow-cheats=true
max-players=10
online-mode=true
allow-list=true
view-distance=16
tick-distance=4
player-idle-timeout=0
enable-lan-visibility=false
default-player-permission-level=member allow-cheats=true is there because without it no one can run a command, operator or not. enable-lan-visibility=false avoids the default-port grab described in section 4. view-distance=16 is still generous and roughly halves the chunk streaming of the stock 32.
Leave the port keys to your control panel
On a managed Minecraft server,
server-portandserver-portv6are set from the allocation in the panel's Network tab and are re-applied on boot. Editing them by hand either gets overwritten or binds a port that is not routed to you. If you need a different or extra port, take it from the Network tab.
Sources
- The
server.propertiesandbedrock_server_how_to.htmlfiles shipped inside the official Bedrock Dedicated Server archive, version 1.26.44.3 - minecraft.wiki — server.properties
- minecraft.wiki — Bedrock Dedicated Server
What to Read Next
- Setting up your Bedrock Minecraft server for first boot, connecting, add-ons and backups
- Bedrock Allowlist and Permissions for
allowlist.json,permissions.json, XUIDs and operator roles - Setting up CrossPlay for Minecraft if you would rather run one Java server that Bedrock players can join
- Minecraft server.properties: The Complete Reference for the Java Edition file
- Minecraft Server Commands for the command set
Made with 💜 by GameServerKings

Need a Minecraft server?
Deploy an instantly-provisioned Minecraft server on high-clock hardware — DDoS protected, no contracts, cancel anytime.
From $4.80 /month