How to Optimize Your Minecraft Server for 20 TPS
A practical guide to eliminating lag and keeping your server running at a smooth 20 ticks per second.
What is TPS?
TPS stands for Ticks Per Second. Minecraft targets 20 TPS, meaning the server processes game logic 20 times per second. At 20 TPS, everything runs smoothly. Below 18 TPS, players notice lag — blocks break slowly, mobs stutter, and redstone misfires. Below 15 TPS, the server is in trouble.
Step 1: Use Paper or Purpur
If you're still running Vanilla or Spigot, switching to Paper is the single biggest performance improvement you can make. Paper includes async chunk loading, optimized entity AI, improved hopper performance, and dozens of other optimizations that don't exist in Spigot.
Paper is a drop-in replacement for Spigot — all your Spigot plugins will work. Just swap the JAR file and start the server.
Step 2: Optimize server.properties
These settings have the biggest impact:
view-distance is the most impactful setting. Each point of view distance adds a significant number of loaded chunks. Dropping from 10 to 8 reduces loaded chunks per player by about 36%. Most players won't notice the difference, especially if you use the Paper-specific sending-distance setting to send chunks further than they tick.
Step 3: JVM Flags (Aikars Flags)
The JVM flags you start your server with matter. The community standard is "Aikars Flags," which configure Java's garbage collector for Minecraft-specific workloads:
Key points:
- Set Xms equal to Xmx. This pre-allocates all memory at startup and avoids resize pauses.
- For 12+ GB, change
G1NewSizePercent=40andG1MaxNewSizePercent=50. - Don't allocate more than you need. More heap = longer GC pauses.
On a managed host like New Life Host, these flags are pre-configured on every server.
Step 4: Paper Configuration
Paper's config files offer dozens of performance knobs. The most impactful ones:
paper-world-defaults.yml
paper-global.yml
Step 5: Control Entities
Entities (mobs, animals, villagers, item frames, armor stands) are the #1 cause of TPS drops after chunk loading. A single chunk with 200 entities can cost more than a hundred empty chunks.
- Limit mob farms. Install a plugin like FarmLimiter or StackMob to cap entity counts per chunk.
- Villager limits. Villager AI is expensive. Keep trading halls compact and limit the number of villagers. Consider using a plugin to optimize villager behavior.
- Clear dropped items. Use ClearLag or Paper's built-in
alt-item-despawn-rateto clean up drops faster. - Reduce animal breeding. Set
spawn-limits.animals: 8inbukkit.yml.
Step 6: Pre-Generate Your World
Generating new chunks is expensive. When a player explores uncharted territory, the server has to generate terrain, structures, caves, and biomes in real-time. This can drop TPS below 10 during heavy exploration.
The solution: pre-generate your world before players join. Use the Chunky plugin:
This pre-generates a 5000-block radius around spawn. Set a world border at the same radius to prevent players from triggering new generation.
Step 7: Audit Your Plugins
Not all plugins are equal. Some are well-optimized; others run expensive operations on the main thread every tick.
- Install Spark. Run
/spark profiler start, let it run for 5 minutes during peak play, then/spark profiler stop. The report shows exactly which plugins consume the most tick time. - Remove unused plugins. Every loaded plugin adds overhead even if it's not doing anything visible.
- Replace heavy plugins. If a dynmap or BlueMap is tanking your TPS, configure it to render less frequently or on a lower thread priority.
- Watch for async vs sync. Plugins that do database queries, HTTP requests, or file I/O on the main thread will cause lag spikes.
Step 8: Hardware Matters
After optimizing software, your hardware sets the ceiling:
- CPU clock speed > core count. Minecraft's main loop is single-threaded. A 4-core CPU at 5 GHz outperforms an 8-core at 3 GHz for Minecraft.
- NVMe > SATA SSD > HDD. Chunk loading and auto-saves hit the disk hard. NVMe storage eliminates disk I/O bottlenecks.
- DDR5 > DDR4. Higher memory bandwidth helps with chunk data throughput and garbage collection.
- Enough RAM. See our RAM guide, but don't over-allocate.
Monitoring Checklist
Keep an eye on these regularly:
/tps— Should show 20.0 or close to it across all three averages/spark health— Shows TPS, MSPT (milliseconds per tick), CPU, and memory/spark profiler— Run periodically to catch new performance problems- Game panel — Watch CPU and RAM usage over time
Hardware That Keeps Up
New Life Host servers run on high-clock CPUs, DDR5 RAM, and NVMe storage — the exact hardware profile that Minecraft benefits from most. Aikars Flags are pre-configured on every server. Plans start at $6.67/mo.
View Plans