Server lag shows up as stuttering movement, delayed block breaks and rubberbanding. The root cause is almost always insufficient RAM, CPU overload, slow storage or unoptimized plugins. This article walks through each cause with practical fixes.
Check your TPS
TPS (ticks per second) measures server performance. A healthy server runs at 20 TPS. Below 15, players notice significant delays. Check TPS with /tps (Paper/Spigot) or install Spark for detailed profiling.
Common causes
- Too many loaded chunks. Lower
view-distanceto 6 or 8 in server.properties. Each player loads a circle of chunks; less distance means less load. - Redstone machines. Complex redstone builds cause many tick updates. Limit their size or use plugins like FarmControl to throttle excessive activity.
- Entity overload. Hundreds of mobs in a small area eat CPU. Adjust
spawn-limitsor use an entity limiter plugin. - Slow storage. Minecraft constantly reads and writes chunks to disk. HDD storage is a common bottleneck. NVMe storage solves this completely.
- Heavy plugins. Some plugins scan every chunk or run heavy tasks on the main thread. Use Spark profiler to identify the culprit.
Solutions
- Use Paper or Purpur instead of vanilla or Spigot. These jars contain dozens of performance optimizations.
- Pre-generate your world with Chunky and set a world border.
- Use Aikar JVM flags for better garbage collection.
- Upgrade to NVMe storage if you are still on HDD or SATA SSD.
- Restart the server at least once every 24 hours to free memory.
Does more RAM fix lag?
Only if RAM is the bottleneck. If you are at 90%+ memory usage, upgrading helps. If memory is fine but you still have lag, the bottleneck is CPU or storage.
What is a good view-distance?
For servers with 20+ players, 6 to 8 is optimal. Smaller servers (under 10 players) run well at 10 to 12.
Should I use vanilla or Paper?
Paper is almost always the better choice for multiplayer. It includes async chunk loading, better entity handling and dozens of performance patches without changing gameplay.