How to Reduce Minecraft Server Lag

Fix block lag and rubber-banding by measuring it first: check TPS and MSPT, trim view distance, cap entities and hoppers, then confirm each change worked.

Written by
Mihail Griniuc
Last updated
Checked against
Paper 1.21.11
Reading time
4 min

Short answer

Run /tps in game or the console. A steady 20.0 with stutter means your connection or client, not the server. Below 18 and the server is the bottleneck, and the fix order is view distance, entities, redstone, plugins, then RAM.

Block lag, rubber-banding and doors that open seconds late all trace back to one number: whether the server keeps up with its 20-tick-per-second loop. The players who fix lag guess, change five settings, restart, and hit the same problem next week. The players who fix it once measure, change one thing, and measure again.

This guide is that loop, applied to the causes that account for almost all lag on small servers: loaded chunks, entities, redstone clocks and plugins. The steps work on Paper and on vanilla, though the Paper-specific profiling commands assume Paper.

Before you start

  • Operator access, so you can run console commands
  • Ten minutes with the server empty to get a clean baseline
  • A note of what changed recently: new plugin, new farm, new world

1. Decide whether the lag is on the server or on your connection

Run /tps in game, or type it into the server console. Paper reports the average over the last 1, 5 and 15 minutes. Twenty is the target; the server cannot go higher.

If the reading is 20.0 while you stutter, the server is fine and the problem is between you and it. Lower your client render distance, close background programs, and test on a wired connection before touching any server setting. The rest of this guide only applies once the reading is below 20.

in game, as an operator
/tps

2. Profile it with spark so you know what to fix

Guessing wastes evenings. Spark is a profiler plugin that reports which chunks, entities and plugins are consuming tick time. Install it, let the server run under normal load for a few minutes, and ask it for a report.

Run /spark profiler start, wait for the lag to happen while players are on, then /spark profiler stop. Open the link it prints. The top entries are your to-do list; everything below them is noise for now.

in game or console, with spark installed
/spark profiler start
# play for a few minutes while the lag happens
/spark profiler stop
  • A spike in chunk generation means players are exploring far past the pregenerated map.
  • A spike on one chunk or entity type means a farm, spawner or animal pen is the culprit.
  • A plugin near the top means a plugin is eating the tick, and you can find it without guessing which one.

3. Lower view distance, which is usually the biggest win

View distance is the number of chunks the server sends and generates around each player. It defaults to 10 and is allowed to range from 3 to 32. Each step up multiplies the chunks in play, so dropping from 10 to 6 removes more than half the tick work. Simulation distance, which decides how far mobs move and think, defaults to 10 as well and can go lower.

Set both in server.properties, restart, and ask the players. Most people cannot tell 6 from 10 once fog and client settings are doing their job.

server.properties
view-distance=6
simulation-distance=6

4. Cap the things that multiply without asking

Entity pile-ups are the other common cause. Hundreds of mobs in a breeding pen, a broken spawner that has run for a month, and an unattended farm all tick every second whether anyone is watching or not. Visit your farms, kill what has accumulated, and set Paper entity limits so a runaway farm is throttled instead of fatal.

Hoppers are the same story in a different shape: a line of them moves items every tick. Where possible, transport with water streams or a dropper line, and cap the hopper count in paper-world.yml.

config/paper-world-defaults.yml
entity:
  spawning:
    disable-mob-spawning: false
    spawn-limits:
      monsters: 40
      animals: 10
      water-animals: 5
      ambient: 5
hopper:
  hopper-transfer: 8
in game or console
/paper chunkinfo
/kill @e[type=!player]

5. Quiet the redstone and half-disable the plugins

Redstone clocks and observer chains built for daylight detectors keep ticking forever by design. Find them with a spark report and then throttle them: observers that need to check every tick can be slowed by putting a delay on the repeater chain, or the area can be unloaded when nobody is there.

Plugins get the same treatment. Disable half of them, let the server run through a normal session, and keep halving until the lag goes. Then re-enable the ones that earned their memory. A plugin that is not earning its place is a plugin you update later when it breaks.

Once the changes are in, run /tps again with a similar number of players online. That second reading is the only proof that anything helped.

in game or console
/plugins
/tps

Good to know

  • Extra RAM does not fix tick lag. It fixes out-of-memory crashes and GC stutter, which feel different: the server freezes in pulses rather than dragging. If memory is genuinely the problem, the memory guide covers it.
  • A restart that makes lag disappear for an hour has not fixed anything. It has cleared a pile-up or a leak, and both come back. Use the relief as a hint about where to look.
  • How the numbers work: 20 TPS is 50 milliseconds per tick. /mspt reports how long a tick actually takes, so anything above 50 means the server is falling behind. The TPS and MSPT reference explains the relationship in full.

Common questions

Why does my server lag with only two players online?

Player count is rarely the cause. Loaded chunks, entities, redstone and plugins all tick whether anyone is there or not. A single mega-farm or an unattended spawner will lag a server with an empty lobby, and a spark report will show it immediately.

Does more RAM reduce lag?

No. RAM prevents out-of-memory crashes and smooths garbage collection. If /tps is below 20 while memory usage sits at 40 percent, the bottleneck is tick work: chunks, entities, redstone or plugins. Adding memory changes nothing there.

What TPS should a healthy server show?

20.0, steady. Brief dips to 19 during heavy moments are normal. Sustained readings under 18 are the point where players feel it, and single digits mean something is badly wrong, almost always an entity pile-up or a runaway farm.

Is Paper or vanilla better for lag?

Paper, measurably, on identical hardware: its patches raise tick headroom without changing gameplay. If your vanilla server already hits 20.0 at times you care about, the switch buys you room for a bigger world rather than a cure for a specific farm. Installing Paper takes one restart.

Sources

Official documentation this guide was checked against.

Written and maintained by Mihail Griniuc. Last reviewed against Paper 1.21.11. Spotted a mistake or something out of date? Email [email protected].

Revision history
  • Rewritten around measurement first: spark profiling, concrete config keys with defaults, and a verification step at the end.

Rather not run this on your own machine? PufferHost gives every player a free Minecraft server with 3 GB of RAM and 10 slots. Create a free server.