Get your free server today! View Plans →
Home Plans Blog About Contact Panel Join Discord
Minecraft

Why your Minecraft server lags, and how to actually fix it

Minecraft lag comes in three flavors that get confused all the time. Here's how to tell server TPS apart from FPS and ping, find the real cause, and fix it today.

Why your Minecraft server lags, and how to actually fix it

Your server feels sluggish. Blocks break and reappear, mobs slide around, and someone in chat is yelling that the whole thing is broken. Before you blame the host or buy more RAM, it helps to know what kind of lag you're actually dealing with, because three very different problems all get called "lag" and they have completely different fixes.

TPS, FPS and ping are not the same thing

This is the part most people skip, and it's why so many "fixes" do nothing. There are three separate numbers, and only one of them lives on the server.

TPS is ticks per second. The server tries to run 20 ticks every second, and each tick is one step of the world: mobs move, crops grow, redstone fires, hoppers move items. A healthy server sits at 20 TPS. If it drops to 15 or 10, time on the server slows down for everyone. That's true server lag, and it's the only one of the three you can fix from the server side.

FPS is frames per second, and it happens on the player's computer. If someone has a weak laptop, high render distance, and 40 shaders running, their game will stutter even when your server is at a perfect 20 TPS. You can't fix their FPS from the panel. No amount of RAM on the server helps a player whose GPU is the bottleneck.

Ping is the round trip time between the player and the server, measured in milliseconds. High ping shows up as rubber banding: you walk forward, then snap back. That's usually distance or a bad connection, not the server being overloaded. A player in Australia connecting to a server in Germany will have high ping no matter how good the hardware is.

So before you change anything, figure out which one is broken. If only one player lags, it's almost always their FPS or their ping. If everyone lags at the same time, it's TPS, and that's the rest of this article.

What actually drops your TPS

Server lag is the server failing to finish all its work inside the 50 milliseconds it has per tick. When a tick runs long, the next one starts late, and TPS falls. Here are the usual culprits, roughly in the order we see them cause trouble.

View distance and simulation distance set too high

These two settings in server.properties do more damage than anything else, and the defaults on a lot of setups are higher than they should be. View distance controls how many chunks the server sends to each player. Simulation distance controls how far out the world is actually ticking: mobs, crops, redstone, all of it.

The catch is that simulation distance scales badly. Going from 6 to 10 doesn't add a little load, it adds a lot, because the area being ticked grows with the square of the radius. A server that runs fine with 5 players at distance 6 can choke at distance 12.

Sensible starting values for most community servers:

view-distance=8
simulation-distance=6

If you're tight on resources or running a big player count, drop simulation distance to 4 or even 3. Honestly, most players never notice the difference between sim distance 4 and 10, because mob farms and redstone near them still work fine. View distance you can keep a touch higher since it's cheaper than simulation.

Too many mobs, hoppers and entities

Entities are expensive. Every mob, item frame, armor stand, and dropped item is something the server has to think about every tick. A few common things pile up fast:

Hoppers are a quiet killer. Each one checks for items above it constantly. A sorting system with 60 hoppers is 60 little checks every tick, forever. Paper lets you tune this in paper-world-defaults.yml (older builds used paper.yml). Look for the hopper and entity sections. You can cap how many entities spawn per chunk and slow down hopper checks slightly without players noticing.

For mob limits, the spigot.yml file controls spawn caps. Lowering the monster and animal caps a bit can give you back a surprising amount of headroom on a busy world.

Heavy or badly written plugins

One bad plugin can wreck an otherwise healthy server. Things that scan the whole world, log everything to disk, or run a task every single tick are the usual offenders. Some chunk pregenerators, dynamic map renderers, and overly aggressive anti cheat plugins are common examples.

A quick warning: more plugins is not better. Every plugin you add is more work per tick and more memory used. We've seen people install 80 plugins on a 2 GB server and then wonder why it crawls. If you're not actively using a plugin, remove it.

Not enough RAM, or the wrong amount

Low RAM causes a specific, ugly kind of lag: the server runs fine for a while, then freezes for half a second, then runs fine again. That's garbage collection. The Java machine pauses everything to clean up memory, and if it's starved for RAM it does this constantly.

Rough guide for how much to give a vanilla style Paper server:

PlayersRAM
Up to 102 to 4 GB
10 to 204 to 6 GB
20 to 40 with plugins6 to 10 GB

But here's the thing people get wrong: throwing huge amounts of RAM at a server can make pauses worse, not better, because the cleanup job gets bigger. More RAM is not a TPS fix. It only helps if you were genuinely running out. If your TPS is low but memory use is comfortable, RAM is not your problem.

The single thread CPU wall

This is the one nobody warns new owners about. The core of Minecraft's world ticking runs on a single thread. That means the speed of one CPU core matters far more than how many cores you have. A 16 core server with weak single core speed will tick worse than a 4 core server with a fast modern chip.

So if your TPS is low and you've already trimmed view distance, entities, and plugins, the bottleneck might just be raw single core performance. This is why "more cores" rarely helps a single Minecraft world, and why the clock speed and generation of the host's CPU matter so much. When you're picking a host, this is worth asking about directly.

Measure first, then change one thing at a time

Guessing is how people waste a weekend. Use the tools instead.

/tps and /mspt

On Paper, type /tps in game or the console. You'll get three numbers for the last 1, 5, and 15 minutes. 20 is perfect. Anything above 19 is basically fine. Below 18 and players start to feel it.

Even better is /mspt, which shows milliseconds per tick. You have 50 ms per tick to work with. If the average is sitting at 45 ms, you're on the edge and any spike will drop your TPS. If it's at 20 ms, you have plenty of room.

spark, the tool worth installing

If you only add one diagnostic plugin, make it spark. It's the modern replacement for the old timings system and it's genuinely good. Run a profile like this:

/spark profiler --timeout 120

Let it run while the server is laggy, and it'll hand you a web link showing exactly which plugin, or which part of the game, is eating your tick time. It will literally name the method that's slow. This turns "the server is laggy" into "this one plugin's scheduled task is using 30 percent of the tick," which you can act on.

spark also has /spark health for a quick TPS and memory snapshot, and /spark tps if you want a cleaner read than the built in command. Older guides mention timings, and on Spigot you can still run /timings report, but Paper has moved to spark and it's the better tool now.

A practical config to start from

Here's a reasonable baseline for server.properties on a small to mid sized survival server. Adjust from here based on what spark tells you, not based on vibes.

view-distance=8
simulation-distance=6
max-players=20
network-compression-threshold=256
entity-broadcast-range-percentage=100

In Paper's world config, the changes worth making early are capping spawns and easing off hopper checks. The exact keys move around between versions, so search the file rather than copying blindly, but the idea is: lower the entity spawn limits per chunk, and consider raising the hopper transfer cooldown a tick or two if you have a lot of redstone. Change one value, restart, check /mspt for ten minutes, then decide. If you change five things at once you'll never know which one helped.

When the real fix is better hardware

Sometimes the honest answer is that the box is too weak. You can optimize a lot, but there's a floor. If you've done all of this and you're still dropping ticks, the signs that point to hardware are:

At that point you want a host with strong single core CPU performance and NVMe storage, because chunk loading hits the disk hard and a slow disk causes its own stutter when players explore new areas. This is the kind of thing we built the Bytte.cloud plans around, fast cores and NVMe rather than cramming as many servers as possible onto cheap hardware. But the advice holds wherever you host: for Minecraft, single core speed and disk speed matter more than a big core count.

Where to start tomorrow

If you do nothing else, do this. Install spark and run /tps and /mspt so you actually know your numbers. Drop simulation distance to 6 and view distance to 8. Walk your world and clear out the obvious entity hoarders, the forgotten animal pens and the hopper monsters. Then profile with spark while it's busy and let it tell you what's actually slow. Most lag problems we see come down to two or three settings and one badly behaved plugin, and you can fix all of that in an afternoon without spending a cent.

Common questions

What is a good TPS for a Minecraft server?

20 TPS is perfect, since the server aims for 20 ticks every second. Anything above 19 is basically fine and players won't notice. Below 18 starts to feel laggy, and below 15 is rough. Check it with /tps on Paper, or use /mspt to see milliseconds per tick, where you have 50 ms per tick to work with.

Why does my server lag for only one player?

If just one person lags while everyone else is fine, it's almost never the server. It's usually their client FPS, which depends on their own computer and graphics settings, or their ping, which is the connection distance and quality between them and the server. You can't fix either of those from the panel.

Will adding more RAM fix my Minecraft lag?

Only if you were actually running out of RAM, which shows up as the server freezing briefly and then recovering. If your TPS is low but memory use is comfortable, RAM is not the issue. Throwing huge amounts of RAM at a server can even make the freeze pauses worse because garbage collection has more to clean up.

What is the best tool to find what is causing lag?

spark. It's the modern replacement for timings on Paper. Run /spark profiler --timeout 120 while the server is laggy and it gives you a web link showing exactly which plugin or game system is eating your tick time, down to the specific method. That turns guessing into a real diagnosis.

Does a server with more CPU cores run Minecraft better?

Not really. The core of Minecraft world ticking runs on a single thread, so single core speed matters far more than core count. A 4 core host with a fast modern CPU will usually tick a single world better than a 16 core host with weak per core speed.

ML
Marcus Lee
Infrastructure Lead at Bytte.cloud

Part of the Bytte.cloud team. We run game servers, bots and websites for a living, and we write these guides from what we see day to day in support and on our own servers.

Want to try this on real hardware?

Bytte.cloud has free plans for game servers, bots and websites. No credit card, set up in seconds.

Start for free See the plans