We are your new 5-Star Hosting Company. At least according to ★ Trustpilot

Following along with a Minecraft server? Deploy yours in minutes.

All servers come with a 24-Hour Trial, Free Backups, and 40Gbps DDoS Protection included!

Use code SAVE15 to take 15% OFF Your First Invoice with ChicagoServers! Limited Time!
Minecraft guide

Minecraft Server Lag: Check TPS and MSPT, Then Find the Cause

By the ChicagoServers team · Updated · 8 min read

A Minecraft server is lagging when its ticks take longer than 50 milliseconds. At 20 ticks per second (TPS) each tick has a 50 ms budget, so a server that averages more than 50 ms per tick (MSPT) falls behind and runs below 20 TPS. The fix is to measure first, find which part of the game is using the time, and change that, not to apply a pile of copied settings.

This guide explains TPS and MSPT, how to use the spark profiler that is built into Paper, and the settings that are documented as affecting performance. It was checked on 2026-11-15 against the Paper and spark documentation. Paper's own advice is to revert pre-made optimisation configs, because they often cause problems, so change one thing at a time and measure.

Quick answer
  • 20 TPS is perfect. It needs each tick to take 50 ms or less. Run /spark tps on the Console tab to see it.
  • Profile before you tune. On Paper, /spark profiler start --timeout 300 collects five minutes of data. /spark profiler stop gives you a report link.
  • Lag spikes are different from steady lag. To catch spikes use /spark profiler start --only-ticks-over 100 --timeout 300.
  • Lower simulation-distance first, then check mob and entity counts, hoppers and plugins. More RAM does not fix a slow tick.
  • Minecraft's tick loop mostly runs on one thread, so a fast CPU matters more than a high core count.
On this page
  1. What TPS and MSPT mean
  2. Measure with spark
  3. Fixes in a sensible order
  4. Paper settings that are documented to affect performance
  5. RAM and CPU
  6. Common lag causes
  7. Frequently asked questions

What TPS and MSPT mean

  • TPS is how many game ticks the server completes each second. The target is 20.
  • MSPT is how many milliseconds a tick takes on average. To hold 20 TPS it has to be 50 ms or less.
  • A server at 40 ms MSPT is fine, with headroom. A server at 70 ms MSPT cannot keep up and its TPS drops below 20.

Lag also shows up in different ways. Steady lag means most ticks are slow, for example because there are too many entities. A lag spike means a few ticks are very slow, often triggered by one thing a player does, such as a large WorldEdit action. Steady lag points at your settings and builds. Spikes point at events, so they need a different profiling method.

Measure with spark

spark is a performance profiler. Paper includes it, so you do not need to install a plugin. On ChicagoServers, open the Console tab and type the commands without the slash if it prefers that. On a Vanilla server spark is not built in, so lag checks are more limited. Switching to Paper is covered in our server software comparison.

CommandWhat it does
/spark tpsPrints the TPS rate and CPU usage.
/spark healthOpens a live health report covering TPS, CPU, memory and disk. /spark health show prints a basic one in the console.
/spark profiler start --timeout 300Starts the profiler and stops it automatically after 300 seconds.
/spark profiler stopStops the profiler and shows the results.
/spark profiler start --only-ticks-over 100 --timeout 300Records only ticks longer than 100 ms, which catches spikes.
/spark profiler start --allocProfiles memory allocation instead of CPU use.
/spark tickmonitorReports ticks that run much longer than the average. --threshold-tick 50 reports any tick over 50 ms.
  1. Reproduce the lag

    Run the profiler while the problem is happening, with players online, not on a quiet server.

    spark profiler start --timeout 300
  2. Open the report

    When it finishes, spark prints a link to the report. Open it and look at which parts of the tick use the most time. Plugin names, chunk and entity work show up in the tree.

  3. Change one thing

    Make a single change from the sections below, restart, run the same profile and compare the numbers.

Fixes in a sensible order

  1. Distances. Lower simulation-distance in server.properties first, for example to 6 to 8. It sets how many chunks around each player have entities and redstone running. view-distance mostly affects what is sent to players. See server.properties explained.
  2. Plugins. If a plugin name is high in the profiler or in a watchdog stack trace, check for an update for it. To isolate one, disable plugins in halves and test.
  3. Mobs and entities. Too many animals, villagers and item drops add up. The spawn limits in bukkit.yml and Paper's per-world settings control natural spawning.
  4. Hoppers and farms. Large hopper lines and redstone clocks are common causes, and Paper has hopper options.
  5. Pre-generate the world if lag appears when players explore, since generating new chunks is expensive. Our seed guide covers pre-generation.
  6. Memory and CPU. Check the points below.

Paper settings that are documented to affect performance

Paper keeps its settings in config/paper-global.yml for the whole server and config/paper-world-defaults.yml for all worlds. You can open them on the Files tab. Edit with the server stopped, save, then start it. Only change a value you understand, and note the old value.

SettingFileWhat it does
chunk-loading-basic.player-max-chunk-send-ratepaper-global.ymlMaximum chunks per second sent to a player. Default 75.
chunk-loading-basic.player-max-chunk-load-ratepaper-global.ymlMaximum chunk load rate per player. Default 100.
misc.max-joins-per-tickpaper-global.ymlMaximum players joining per tick. Extra players are delayed, not kicked. Default 5.
entities.spawning.per-player-mob-spawnspaper-world-defaults.ymlCounts the mob limit per player and not for the whole server. Default true.
entities.spawning.spawn-limitspaper-world-defaults.ymlPer-world caps on natural spawns by mob category. -1 uses the bukkit.yml value.
collisions.max-entity-collisionspaper-world-defaults.ymlStops collision processing after this many collisions. Default 8.
hopper.ignore-occluding-blockspaper-world-defaults.ymlHoppers skip containers inside occluding blocks. Default false.
hopper.disable-move-eventpaper-world-defaults.ymlDisables the hopper item move event. Helps performance, but breaks protection plugins that use it. Default false.
tick-rates.mob-spawnerpaper-world-defaults.ymlHow often spawners tick. -1 disables all spawners.

RAM and CPU

  • High RAM use is normal. Java uses the memory it is given, and that does not mean there is a leak. See how much RAM a Minecraft server needs.
  • Out-of-memory crashes often happen when the memory limit set on the server is too close to the Java heap size. Paper suggests starting by leaving 1 to 2 GB of room.
  • CPU: the main tick loop runs on a single thread, so single-core speed matters most. Paper recommends at least 4 threads for the rest of the work.
  • If the profiler shows most time in one plugin or one chunk area, more hardware will not help. Fix that first.

Common lag causes

What you seeLikely cause
TPS low all the timeToo many entities or chunks being simulated. Lower simulation-distance and profile.
Spikes when players exploreNew chunks are being generated. Pre-generate the world.
Spikes when someone builds or pastesA big world edit. Profile with --only-ticks-over.
Lag that grows with uptimeEntities or items piling up, or a plugin issue. Check mob counts and profile.
Lag near one buildHoppers, redstone, farms or villagers. Check the hopper settings above.
A watchdog message on the consoleA tick took 10 seconds or more. The stack trace names what was running.
Lag started after an updateA plugin or setting is out of date. Compare with the last backup.

Running modded? Heavy modpacks need more than these steps. See installing Forge and Fabric mods. Looking for a host? See Minecraft server hosting.

Frequently asked questions

What is a good TPS for a Minecraft server?

20 TPS is perfect and is the maximum. It requires each tick to take 50 milliseconds or less on average.

What is MSPT in Minecraft?

MSPT is milliseconds per tick, the average time the server takes to process one tick. Keep it at 50 ms or below to hold 20 TPS.

How do I check TPS on a Paper server?

Run /spark tps in the Console tab. Paper includes spark, which also provides a profiler and a health report.

How do I find what is causing lag on my Minecraft server?

Run /spark profiler start --timeout 300 while the lag is happening, then open the report link that /spark profiler stop or the timeout gives you. For spikes, add --only-ticks-over 100.

Will more RAM fix Minecraft server lag?

Usually not. A slow tick is mostly a CPU and workload problem. More RAM helps only if the server is running out of memory.

Does lowering view distance reduce lag?

Lowering simulation-distance is usually the bigger win because it reduces how many chunks have entities and redstone running. view-distance mostly affects how much terrain is sent to players.

We are your new 5-Star Hosting Company. At least according to ★ Trustpilot

Following along with a Minecraft server? Deploy yours in minutes.

All servers come with a 24-Hour Trial, Free Backups, and 40Gbps DDoS Protection included!

We offer quality support, a detailed knowledgebase, video tutorials on most topics, and even live support in case you prefer a live human.

Use code SAVE15 to take 15% OFF Your First Invoice with ChicagoServers! Limited Time!