How to Reduce Lag on a Minecraft Server: A Tuning Guide
A practical tuning guide to cut Minecraft server lag: view distance, entity limits, chunk settings, Paper config, and JVM flags.

"Lag" on a Minecraft server usually means low TPS (ticks per second) — the server can't keep up with 20 ticks a second. This guide walks through the settings that actually move the needle, from server.properties to Paper's deep config.
First, measure it
Before changing anything, find out what's slow. On Paper, install the Spark plugin and run:
/spark tps # current ticks per second
/spark profiler # find what's eating tick time
20 TPS is perfect; below ~18 players feel it. Spark's profiler tells you whether entities, chunk loading, or a plugin is the culprit — fix the biggest cost first.
View distance and simulation distance
These two settings have the largest impact. In server.properties:
view-distance=8
simulation-distance=6
Simulation distance controls how far mobs, crops, and redstone actually tick — dropping it from 10 to 6 dramatically cuts load with little visible difference. View distance is what players see; 8 is a good balance.

Rein in entities
Mob farms and dropped items are classic lag sources. In Paper's config/paper-world-defaults.yml:
entity-per-chunk-save-limit:
experience_orb: 16
item: 32
merge-radius:
item: 4.0
exp: 6.0
Merging nearby dropped items and capping orbs per chunk reduces the entity count the server must tick every frame.
Pre-generate the world
Generating new chunks as players explore causes big lag spikes. Pre-generate ahead of time with the Chunky plugin:
/chunky radius 5000
/chunky start
Once chunks exist on disk, exploring them is cheap. NVMe storage makes this even smoother.
Tune the JVM
The garbage collector can cause periodic stutter. The Aikar JVM flags switch to the G1 collector tuned for Minecraft. Also give the server *enough* — but not too much — RAM; see the RAM guide. More isn't always better, as huge heaps mean longer GC pauses.
Right server software
If you're on vanilla or Spigot and hosting more than a couple of players, switch to Paper — it's substantially faster and unlocks all the config above. See Paper vs Spigot vs Purpur. Also audit plugins: run /spark profiler and remove or replace any plugin that dominates tick time. For modded servers, performance mods (Lithium, FerriteCore) are the equivalent — see adding mods.
Quick wins checklist
- Lower
simulation-distanceto 5–6. - Cap and merge entities in Paper config.
- Pre-generate chunks with Chunky.
- Use Paper + Aikar flags.
- Host on fast single-thread CPU and NVMe disk.
Paper's deeper anti-lag settings
Beyond entities and view distance, Paper's config has several knobs that reduce load without players noticing. In config/paper-world-defaults.yml:
chunks:
prevent-moving-into-unloaded-chunks: true
tick-rates:
mob-spawning: 2
hopper:
disable-move-event: true
Hoppers are a surprisingly common lag source on storage-heavy servers — disable-move-event alone can help a lot. Spreading mob-spawning ticks smooths the per-tick cost. Change one setting at a time and re-check /spark tps so you know what helped.
Audit plugins and farms
Two culprits cause most "sudden" lag on an established server:
- A heavy plugin. Run
/spark profiler, let it sample for a few minutes, and read which plugin dominates tick time. Replace or reconfigure it. This is why lean, well-chosen plugins matter — see our survival plugin picks. - A giant mob farm or item stream. Cap and merge entities (shown above), and ask players to use hoppers and item filters sensibly.
For modded servers the equivalent of lean plugins is server-side performance mods like Lithium and FerriteCore — the mods guide covers adding them.
Hardware is half the battle
No config fixes a slow CPU. Because Minecraft's main loop is single-threaded, per-core clock speed is the number that most determines your TPS ceiling — a host with fast modern cores holds a higher tick rate than one with many slow cores. NVMe storage also matters for chunk I/O, especially with large or modded worlds. If you've tuned everything above and still can't hold 20 TPS with a modest player count, the server hardware is likely the limit — see our specs guide for what to look for.
Client-side lag is a different problem
It's worth separating two things players call "lag." Server lag is low TPS — everything stutters for everyone, and it's fixed with the tuning above. Client lag is low FPS on one player's machine — only they experience it, and no server change fixes it. If just one player is stuttering while others are fine, the issue is their hardware or client settings (they can install a client optimisation mod like Sodium, lower their render distance, or allocate more RAM to their game). If *everyone* stutters at the same moment, it's the server. Knowing which is which saves hours of chasing the wrong fix. Paper's /spark tps confirms the server side instantly: if it reads a steady 20 while a player complains, the problem is on their end, not yours. For choosing hardware that keeps TPS high, see our specs guide.
FAQ
Why is my Minecraft server lagging with few players?
Low player count with lag usually means chunk generation, a heavy mob farm, or a misbehaving plugin. Use /spark profiler to find the exact cause.
Does more RAM fix lag?
Only if you were starved for it. Beyond what you need, extra RAM doesn't raise TPS and can lengthen GC pauses. CPU speed matters more for TPS.
What's a good view distance?
8 is a solid default. Simulation distance of 5–6 with a view distance of 8 gives a good look with far less load.
TPS vs FPS — what's the difference?
TPS is the server's tick rate (target 20). FPS is your client's frame rate. Server lag lowers TPS; client stutter lowers FPS.
Half of "lag" is really slow hardware. Nxeon's Minecraft server hosting runs on fast NVMe VPS plans with high per-core performance — exactly what TPS depends on.