How to reduce lag on your Minecraft server with server.properties
Reduce lag on your free Minecraft server: view-distance, simulation-distance, network compression, Paper and spark explained step by step.
Does your free Minecraft server start lagging as soon as a few friends join? Good news: a large part of the lag can be fixed in a single file, server.properties. This guide explains which settings to change, which values to choose and how to measure the result.
Why every setting matters on a free server
A free server has limited resources: little memory, a shared slice of CPU and restricted storage. Minecraft, however, is demanding: it updates the world 20 times per second, keeps loading chunks and moves hundreds of entities around. The default settings are designed for a comfortable machine. By adapting them to your server, you can get smooth gameplay without changing anything else.
Server lag or network lag: identify the problem first
Before you change anything, find out which kind of lag you are dealing with. The two have different causes and different fixes.
| Type | Symptoms | Indicator |
|---|---|---|
| Server lag | Broken blocks reappear, mobs freeze, furnaces are slow, every player is affected at the same time | TPS below 20, MSPT above 50 ms |
| Network lag | Only one player stutters, rubber-banding, actions arrive late | High ping (connection bars in the Tab list) |
TPS and MSPT
The server advances the game in ticks. The target is 20 ticks per second (TPS), which leaves a budget of 50 milliseconds per tick (MSPT). As long as MSPT stays under 50 ms, the server holds its 20 TPS. Above that, it falls behind and everyone feels it.
On Paper or Purpur, two commands show these values in game:
/tps
/mspt
Ping
If TPS stays at 20 but one player complains, the problem most likely comes from their connection or their distance from the server. The settings in this article won't change much there, except network compression.
The server.properties settings that matter
The server.properties file sits at the root of your server. Stop the server before editing it, then restart it to apply the changes.
| Key | Default | Recommended on a free server | Effect |
|---|---|---|---|
view-distance | 10 | 6 to 8 | Radius of chunks sent to players |
simulation-distance | 10 | 4 to 6 | Radius in which the world is simulated |
max-players | 20 | Depends on your resources | Players connected at the same time |
network-compression-threshold | 256 | 256 or 512 | Size from which packets are compressed |
entity-broadcast-range-percentage | 100 | 50 to 80 | Distance at which entities are sent |
sync-chunk-writes | true | true (false with care) | Synchronous chunk writing |
max-tick-time | 60000 | 60000 | Safety net against a frozen server |
view-distance: render distance
This is the radius, in chunks, of the area sent to each player. It is also the most expensive setting, because the number of loaded chunks grows with the square of the distance. With a value of 10, each player loads an area of 21 × 21 = 441 chunks. With 6, that drops to 13 × 13 = 169, about 2.6 times fewer.
view-distance=6
Players can pick a lower distance in their options, but never a higher one than the server's.
simulation-distance: where the world is alive
Since Minecraft 1.18, simulation is separate from rendering. simulation-distance sets the radius in which entities move, crops grow and redstone works. Further away, chunks stay visible but frozen. A value of 4 to 6 is enough for most servers played with friends.
simulation-distance=4
Keep in mind that automatic farms only run when a player is within simulation range.
max-players: a realistic player count
Each player loads their own area of chunks and brings entities with them. Eight players on a smooth server are better than twenty on a server that lags. Set a realistic limit for your server's resources, then raise it if TPS stays stable.
network-compression-threshold: network compression
This setting is the size, in bytes, from which packets are compressed. Compression saves bandwidth but costs CPU. On a server with limited CPU, a higher value such as 512 reduces the compression work. The value -1 disables compression entirely: keep it for servers behind a proxy (BungeeCord, Velocity) on the same network.
entity-broadcast-range-percentage: entity range
This percentage controls the distance at which entities (mobs, animals, dropped items, item frames) are sent to players. Lowering it to between 50 and 80 reduces the data sent on servers full of animals or decorations. Players simply see entities appear a little closer to them.
sync-chunk-writes: chunk writing
Enabled by default, this setting makes the server write chunks to disk synchronously. It protects the world against corruption if the server crashes, but it can slow down saves on slow storage. Setting it to false can make the server smoother, at the risk of losing the latest changes if the server crashes. Only do it if you back up your world regularly.
max-tick-time: a safety net, not a performance setting
This value, in milliseconds, is the longest a tick can take before the server decides it is stuck and shuts itself down. The default is 60000, one minute. It does not reduce lag. Keep the default: with -1, the protection is disabled and a frozen server stays stuck instead of stopping.
Example configuration for a free server
view-distance=6
simulation-distance=4
max-players=10
network-compression-threshold=256
entity-broadcast-range-percentage=75
sync-chunk-writes=true
max-tick-time=60000
Start from these values, play a few sessions with your friends, then raise view-distance by one step if the server stays stable.
Pre-generate the world
Generating new chunks is one of the heaviest tasks for a server, especially when players explore quickly with an elytra. Pre-generating the map before opening the server removes these spikes: our complete guide to the Chunky plugin explains how.
Also consider limiting the size of the world with a border, so you don't fill up your storage:
/worldborder center 0 0
/worldborder set 6000
Going further with Paper
If your server still runs vanilla, switching to Paper (or Purpur, which is based on Paper) is often the biggest gain. It optimizes many parts of the game while staying compatible with most Spigot plugins. It also adds advanced configuration files, including config/paper-world-defaults.yml, which applies to all your worlds.
Here are a few commonly used settings. Their names can change between versions, so check them in the documentation for your Paper version.
environment:
optimize-explosions: true # lighter explosion calculations
hopper:
cooldown-when-full: true # a full hopper waits before trying again
disable-move-event: false # true makes hoppers lighter, but may interfere with some protection plugins
entities:
armor-stands:
tick: false # cheaper armor stands, but less responsive
Change one setting at a time and measure its effect before moving on. Otherwise, you can't tell what actually helped.
Measuring with spark
spark is a free profiling tool that shows exactly what is using your server's resources. Depending on your Paper version, it may already be built in; otherwise, install it as a plugin from Modrinth or SpigotMC.
| Command | Purpose |
|---|---|
/spark tps | TPS, MSPT and CPU usage |
/spark health | Overall health: memory, disk, TPS |
/spark profiler start | Starts the analysis |
/spark profiler stop | Stops the analysis and generates a link to the report |
Start the profiler during a laggy moment, let it run for a few minutes, then open the report. You will see whether the time goes into entities, chunk generation or a specific plugin.
Summary
- First check whether it is server lag (TPS, MSPT) or network lag (ping).
- Lower
view-distanceandsimulation-distance. - Set a player limit that fits your resources.
- Adjust network compression and entity range.
- Pre-generate your world and set a border.
- Switch to Paper and measure every change with spark.
Conclusion
A free Minecraft server can run perfectly smoothly if its settings match its resources. Start with the view and simulation distances, which bring the most visible gain, then fine-tune with Paper and spark. Move in small steps: measurements, not guesses, should guide your choices.