How to Reduce Minecraft Server Lag
Fix low TPS and stutter on your Minecraft server. Practical fixes: Paper, Aikar's flags, view-distance tuning, chunk pre-gen and spark profiling.
Minecraft server lag comes in two flavours, and knowing which one you have decides the fix. Low TPS (ticks per second dropping below 20) means the server can't keep up with the world. High ping means the network path between players and the server is slow. This guide tackles both.
Diagnose first: check your TPS
In the server console or as an operator in-game, run:
/tps
A healthy server holds 20 TPS. If it's dropping to 15 or 10, the server is CPU- or entity-bound. If TPS is fine but players feel lag, it's a network/latency problem instead โ that's about server location, not tuning.
Fix 1: Switch to Paper
If you're running vanilla or Spigot, move to Paper. It's a drop-in replacement that runs the same worlds and plugins with dramatically better performance and a deep set of optimisation settings. This single change often doubles headroom.
Fix 2: Use Aikar's flags
The default JVM garbage collector causes periodic freezes as it pauses to clean memory. Aikar's flags switch to G1GC with tuned pause targets and eliminate most of that stutter. Add them to your start command and give the heap a sensible size โ for example -Xms6G -Xmx6G on an 8 GB box. Never set -Xmx higher than your available RAM minus about 1โ2 GB for the OS.
Fix 3: Tune view and simulation distance
These two settings in server.properties are the biggest levers:
view-distanceโ how many chunks are sent to clients. Drop from 12 to 8.simulation-distanceโ how far entities, crops and redstone tick. 6 is plenty.
Lowering these reduces both CPU load and bandwidth with barely noticeable gameplay impact.
Fix 4: Control entities and mob farms
Runaway entity counts are the most common lag cause on established servers. Paper lets you cap and adjust mob spawn limits and entity activation ranges in its config. In-game, use /paper mobcaps and profiling to find hotspots. A single overbuilt mob farm can drag a whole server down.
Fix 5: Pre-generate chunks
Generating new terrain as players explore is expensive and causes lag spikes. Use a plugin like Chunky to pre-generate your world's chunks in advance:
/chunky radius 5000
/chunky start
Once generated, exploring that area no longer triggers costly generation on the fly.
Fix 6: Profile with spark
Guessing wastes time. The spark plugin profiles exactly what's eating tick time:
/spark profiler --timeout 60
It produces a shareable report pinpointing the plugins, entities or chunks responsible. Fix the top item, re-measure, repeat.
Fix 7: Audit your plugins
Every plugin costs something. Remove ones you don't use, and be wary of plugins that scan the whole world or run heavy scheduled tasks. If /spark fingers a specific plugin, look for a lighter alternative or update it.
Fix 8: Restart on a schedule
Long-running servers accumulate lag from memory fragmentation and slowly-growing entity counts. A daily automatic restart, timed for when players are asleep, resets that and keeps TPS healthy. Wrap your server in a systemd service and add a cron job to restart it nightly โ the difference on a busy server is noticeable by the end of a long session.
Don't forget the client side
Sometimes "lag" is a single player's connection or hardware, not the server. If /tps shows a steady 20 and only one player struggles, the problem is on their end โ their ping, their render distance, or their machine. Check whether it's server-wide or one person before spending hours tuning the server for a problem that isn't there.
The hardware factor
Minecraft's main game loop runs largely on a single thread, so single-core CPU speed matters more than core count, and disk speed governs how fast chunks load and save. Slow or oversold shared hosting shows up as unavoidable stutter no matter how well you tune. Running on Nxeon's fast-core NVMe VPS gives your tuning something solid to build on โ chunk loads and autosaves stop being lag sources, and full root lets you apply Aikar's flags and install spark and Chunky without a locked-down panel getting in the way.