Skip to content
CubeVote

Run a Minecraft server at 20 TPS

04 September 2026 · updated on 07 October 2026 · 3 min read

A Minecraft server moves forward in ticks, twenty per second. As long as it keeps up, all is well. As soon as it drops to fifteen, the game slows down: broken blocks come back, mobs stutter, and players leave.

Here's how to keep up, in the order it's done.

Measure before touching anything

Two numbers are enough:

  • TPS (ticks per second). Capped at 20. Below 19, the server is falling behind.
  • MSPT (milliseconds per tick). The time actually spent computing a tick. Beyond 50 ms, TPS starts to drop. It's the more useful of the two, because it degrades before TPS moves.

Use spark, built into Paper. /spark profiler records a few minutes of activity and gives you a report naming the culprit, a plugin, a farm, a piece of the world. Tuning a server without profiling is guessing: the guide Find the cause of lag with Spark explains how to read the report.

View distance: the setting that matters

In server.properties:

  • view-distance: how many chunks the player sees.
  • simulation-distance: how many chunks the server computes: mobs, crops, redstone.

The second costs far more than the first. A healthy setting for a public server: view-distance=8, simulation-distance=5. Nobody notices the difference in game; the server notices it straight away.

Going down to 4 for view distance is noticeable, however. That's the limit not to cross without a reason.

Tame entities

Entities are the main cause of TPS drops on a populated server. Three levers, each in its own file:

  • entity-activation-range, in spigot.yml: the radius within which an entity is actually computed. Reducing it for monsters and animals changes nothing in the game and lightens farms a lot.
  • Mob spawn limits: spawn-limits in bukkit.yml. The default values are generous.
  • merge-radius, in spigot.yml, for dropped items and experience orbs, merging stacks stops a thousand dropped items lying around in a corner.

Paper adds its own settings in config/paper-world-defaults.yml, such as monster despawn distances (despawn-ranges). The anti-lag configuration gives them all, tuned to your type of server.

And keep an eye on farms. A well-built iron farm at one player's base can by itself cost five milliseconds per tick.

Pre-generate the world

Exploring means generating terrain, and generating terrain is the game's most expensive operation. A player sailing off into the unknown makes everyone lag.

Chunky solves the problem: it generates the world in advance, quietly, while nobody's playing. Generate a radius of 5,000 blocks, then set a world border slightly inside it, with /worldborder set 9800: the guide Pre-generate your world with Chunky explains why.

A border isn't a deprivation. Ten thousand blocks across means a hundred million square blocks of surface: no community gets round it all.

Java: version and options

Use the Java version your game version requires: Java 21 from 1.20.5 to 1.21.x, Java 25 for 26.x versions. Their garbage collectors are clearly better than Java 8's or 11's. The full mapping is in Which Java version for your server.

Two rules for launch options:

  • -Xms and -Xmx at the same value. Letting the heap grow along the way causes stutters.
  • Don't give all the machine's memory. The system needs some, and a heap that's too big makes garbage-collection pauses longer instead of avoiding them. 4 to 6 GB for a plugin server with thirty players is comfortable.

The so-called "Aikar" option sets have been around for years and remain a good starting point for the G1 garbage collector. But they'll never make up for a badly placed mob farm.

What's useless

  • Adding memory when the problem comes from entities. The server doesn't go faster because it has more room.
  • Adding cores. Minecraft computes its world on a single thread. A CPU with eight slow cores loses to one with four fast cores. When a host highlights the number of cores rather than the clock speed, be wary.
  • "Optimisation" plugins that promise everything. Those that clear entities periodically make players' items disappear, and you'll be blamed for it.
  • Changing ten settings at once. You won't know which one helped.

The right order

  1. Profile with spark.
  2. Tune simulation distance and entity activation ranges.
  3. Pre-generate the world and set a border.
  4. Deal with the farm or plugin spark pointed to.
  5. Only then, touch the Java options.

Nine servers out of ten get back to 20 TPS before step 4.


A smooth server keeps its players, and players who stay vote. List yours, then follow its measured uptime on its status page.

Take action with CubeVote

The site's free tools that go with this guide.

All CubeVote tools

Read next