Minecraft · Guide

How to Fix Minecraft Server Lag

Updated October 10, 2026 8 min read

On this page
  1. Server lag, network lag or client lag?
  2. Measure first: TPS, MSPT and spark
  3. Find the cause with a spark profile
  4. The fixes that matter, in order
  5. "TPS is 20 but it still lags"
  6. When the answer really is RAM or CPU
  7. Lag and your HytHost server
  8. FAQ

"The server is lagging" can mean three different problems, and each has a different fix. Rubber-banding and blocks that reappear after you break them are the server falling behind. A ping that jumps is the network. A choppy screen while everyone else is fine is the player's own PC.

This guide shows how to tell them apart, how to measure server lag properly with TPS, MSPT and a spark profile, which settings actually help on Paper and how to know when the answer really is more RAM or a faster CPU — and when it is not.

Server lag, network lag or client lag?

What players seeHow to confirm it
Server lagEveryone at once: rubber-banding, mobs freezing, blocks coming back, delayed chatTPS below 20, or tick times of 50 ms and more
Network lagOne or a few players: teleporting back, hits that do not landHigh ping for those players, while TPS stays at 20
Client lagOne player: low frame rate, stutter when turningLow FPS on that player's F3 screen, server numbers fine

The quickest test is to ask whether everybody lags at the same moment. A server that falls behind freezes every player together; a bad connection or a slow PC affects only its owner. The rest of this guide is about server lag.

Lag from slow hardware? HytHost Minecraft servers run on high-clock Ryzen 7 and Intel i9 CPUs — from €2.59/mo.

See Minecraft plans

Measure first: TPS, MSPT and spark

A Minecraft server runs 20 ticks per second, so every tick has 50 ms to finish. Two numbers describe how it is coping:

  • TPS (ticks per second): 20 means the server keeps up; below 20 the world slows down.
  • MSPT (milliseconds per tick): how long each tick takes. Under 50 ms there is spare time; over 50 ms the server falls behind.

Paper has /tps and /mspt, but its own docs point to spark, which is built into Paper since 1.21 and available as a mod for Fabric, Forge and NeoForge:

/spark tps
/spark health
/spark ping

/spark tps shows TPS over the last seconds and minutes, and — more useful — tick durations as min, median, 95th percentile and max. /spark ping shows players' ping, which settles the "server or network" question. /spark health adds CPU, memory and disk.

Look at the 95th percentile and max tick times, not only TPS. TPS is an average: a server can show 20 TPS while a few ticks a minute take half a second, and players feel every one of those.

Find the cause with a spark profile

Numbers say that the server lags; a profile says why. Start one while the lag is happening and let it run a few minutes:

/spark profiler start --timeout 300

When it finishes, spark posts a link to its web viewer. In it:

  1. Open the Server thread — the main thread that runs the world. Lag lives there.
  2. Expand the entries with the highest percentages: that is where tick time goes.
  3. Switch to the Sources view to see the time split by plugin or mod. One plugin or mod taking a large share of the main thread is usually your answer.

Two more tools help with lag that comes and goes: /spark tickmonitor reports every tick that runs long, and /spark profiler start --only-ticks-over 100 records only the slow ticks, so a rare spike is not averaged away.

The fixes that matter, in order

1. View and simulation distance

In server.properties, simulation-distance sets how far from players the world is actually simulated — mobs, crops, redstone — and view-distance how far chunks are sent to players. Both default to 10. Lowering simulation-distance is often the single biggest win: try 6 to 8, and keep view-distance a little higher so the world still looks open. These are starting points, not official values; measure before and after.

2. Pre-generate the world

Generating new chunks is one of the most expensive things a server does, and players exploring in different directions make it do so constantly. The Chunky plugin (or mod) generates the map ahead of time:

chunky radius 5000
chunky start
chunky pause
chunky continue

Run it while nobody is playing — a pre-generation in progress makes the server report "Can't keep up" by design — and pause it when players join.

3. Entities and farms

Mob farms, villager halls and item piles are the most common steady drain. On Paper and Spigot, entity-activation-range in spigot.yml controls how close a player must be before an entity is fully ticked, and merge-radius merges dropped items and experience orbs. Cap mob farms with a plugin or a rule, and clear forgotten item piles.

4. Hoppers and redstone

Large hopper chains are expensive. In spigot.yml, ticks-per.hopper-transfer sets how often they move items, and Paper's hopper.disable-move-event speeds them up a lot — but it breaks protection plugins that rely on that event. For redstone, Paper's misc.redstone-implementation: ALTERNATE_CURRENT can greatly reduce lag from redstone dust, but it changes how dust behaves, so test your contraptions first.

5. The plugin or mod in your profile

If the spark profile points at one plugin or mod, that is the fix: update it, configure it down, or replace it. No amount of RAM makes a badly written plugin faster.

"TPS is 20 but it still lags"

This is the most confusing case, and it is almost always a tick stall: most ticks are fast, but now and then one takes hundreds of milliseconds. The average stays at 20, yet everyone feels a freeze.

  • Check the max tick time in /spark tps, or run /spark tickmonitor. Spikes of several hundred milliseconds confirm it.
  • The usual cause is a plugin waiting on the main thread — fetching player skins or heads from the internet, posting to a webhook, checking for updates or a licence, or saving a file or database synchronously. The server does nothing while it waits.
  • Profile the waiting, not just the computing. A normal profile shows CPU work; a thread that is waiting looks idle. Use /spark profiler start --thread * to capture where time is spent including waits, and look for network or file calls on the Server thread.

The fix is in the plugin — asynchronous calls, or a different plugin. More RAM, a faster CPU or a better connection will not help, because the server is not short of anything; it is waiting.

When the answer really is RAM or CPU

Minecraft simulates the world on one main thread. That has two consequences:

  • CPU speed per core matters most. If spark shows the Server thread busy with normal world work — entities, chunks, block ticks — and MSPT is high, a faster CPU helps where more cores would not.
  • RAM helps only when you are short of it. Signs: the server restarts as it hits its memory limit, or garbage collection pauses dominate the profile. Past what the world and mods need, more RAM does nothing for tick speed — and an oversized, untuned heap can make garbage-collection pauses longer.

How much RAM a server needs, and the startup flags that keep garbage collection short, are covered in how much RAM a Minecraft server needs. Choosing between Paper, Purpur and the rest is in best Minecraft server software.

Lag and your HytHost server

Every HytHost Minecraft plan runs on the same hardware: Ryzen 7 and Intel i9 CPUs with up to 5.0 GHz boost, DDR4 memory and NVMe storage — the single-thread speed Minecraft depends on. spark is already part of Paper, so you can profile from the console straight away.

If your profile shows the server is genuinely short of memory for its world and mods, move up a plan from the panel; the world stays in place. If it shows a plugin or a farm, fix that first — it is free and it works on any plan. See Minecraft hosting, or the larger plans on premium Minecraft hosting from €11.65/mo.

More room for modpacks and big worlds: MC Diamond with 9 GB is €11.65/mo, and upgrades keep your world.

See Minecraft plans
FAQ

Frequently asked questions

20 TPS, which is the game's target. It holds as long as each tick takes under 50 ms (MSPT below 50). Also watch the 95th percentile and maximum tick times in /spark tps, because an average of 20 can hide short freezes.

Only if the server is actually short of memory, for example if it restarts at its memory limit or garbage collection dominates the profile. Most lag comes from the main thread: entities, chunk generation, redstone or a slow plugin, and more RAM does not speed that up.

Purpur is built on Paper and adds many extra configuration options and gameplay features; it makes no official claim to be faster. For lag, the settings and plugins on your server matter far more than the choice between the two.

The default is 10 for both view-distance and simulation-distance. Lowering simulation-distance to around 6 to 8 usually helps the most, because it shrinks the area the server simulates. Keep view-distance a little higher so the world still looks open, and measure before and after.

Run /spark profiler start --timeout 300 while the server is lagging. spark then posts a link to its viewer: open the Server thread, expand the entries with the highest percentages, and use the Sources view to see which plugin or mod is taking the time.

Fast hardware for a smooth world

HytHost Minecraft hosting runs every plan on high-clock Ryzen 7 and Intel i9 CPUs with NVMe storage, and upgrades keep your world — from €2.59/mo.

Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hours

Was this guide helpful?