Fix lag: TPS and MSPT explained
Updated September 2026 · 20 TPS and under 50 MSPT means the server is fine. Anything else has a cause you can usually find in ten minutes.
Three kinds of lag
Before fixing anything, find out which lag you have.
| What players see | Type | Where it comes from |
|---|---|---|
| Low frame rate, stutter when turning | FPS lag | The player’s own PC or graphics settings |
| Rubber-banding, blocks reappearing, delayed hits | Network lag | High ping between player and server |
| Mobs freeze, crops stop, everything slows for everyone | Server lag | The server cannot keep up with ticks |
If only one player lags, it is almost never the server. If everyone lags at the same time, read on.
TPS and MSPT in plain English
Minecraft runs the world in ticks. The target is 20 ticks per second (TPS), so each tick has 50 milliseconds.
- TPS — how many ticks the server actually manages per second. 20 is perfect. Below about 18, players start to notice.
- MSPT — milliseconds per tick, how long one tick takes. Under 50 ms is healthy. Above 50 ms, TPS drops.
MSPT is the better early warning: a server at 45 MSPT still shows 20 TPS but has almost no headroom left.
How to check the numbers
- Paper:
/tpsand/mspt. - Any server with the spark plugin or mod:
/spark tpsand/spark health. - Vanilla:
/tick queryon recent versions shows the tick rate and times. On older versions, use the debug screen in single player only.
Find the cause with a profiler
Guessing wastes time. Install spark (available as a plugin and as a mod) and run:
/spark profiler start- Play normally for a few minutes while the lag happens.
/spark profiler stop
You get a link to a report. Open it and look at the biggest branches under the server thread. Entity ticking, block entities (hoppers, furnaces) and chunk loading are the usual winners.
The usual causes and fixes
Too many entities. Mob farms, item piles and animal pens with hundreds of cows. The spark report shows which entity types cost the most. Fixes: cap animals per pen, add kill chambers, clear dropped items. On Paper, entity limits per chunk can be tuned in its config files.
Hoppers and redstone clocks. Long hopper chains and always-on clocks tick constantly. Replace clocks with observers or turn them off when nobody is near. Use water streams instead of hopper lines where possible.
Chunk generation. Exploring new land is expensive, especially with several players flying in different directions. Pre-generate the world with a plugin or mod like Chunky (/chunky radius 5000, then /chunky start) before you open the server, and set a world border.
View distance too high. Every extra chunk of view distance loads a lot more chunks per player. In server.properties, try view-distance=8 and simulation-distance=6. Players still see far enough; the server ticks fewer chunks. See server.properties explained.
Not enough RAM, or wrong JVM settings. If memory runs full, the garbage collector pauses the server. You see regular spikes rather than constant lag. Give the server a bit more RAM and use tuned startup flags — Aikar’s flags explains how.
Heavy plugins or mods. One badly written plugin can use half of every tick. spark shows it by name. Update it, configure it, or replace it.
Quick wins that rarely hurt
- Switch from vanilla or Spigot to Paper if you run plugins. It is faster at the same settings.
- On Fabric, add performance mods like Lithium and FerriteCore.
- Restart the server once a day to clear memory leaks from plugins.
- Keep the world border reasonable. A 10,000 × 10,000 world is plenty for most friend groups.
When the hardware is the limit
Minecraft does most of its world work on one main thread. More CPU cores help with chunk generation and some background work, but not with the main tick. If spark shows a clean profile and MSPT is still high with many players, you need more resources, not more tweaks. The RAM side is covered in how much RAM a Minecraft server needs; plans with more memory also come with more CPU cores on our pricing page.