Skip to main content
← All Guides
Troubleshooting · 9 min read

How to Fix Low TPS and Server Lag in Minecraft

Fix low TPS (ticks per second) and server-side lag in Minecraft. Covers entity optimization, chunk loading, plugin profiling, and JVM tuning for 1.21+.

How to Fix Low TPS and Server Lag in Minecraft

The Problem

[Server] Can't keep up! Is the server overloaded? Running 5012ms or 100 ticks behind
[Server] Current TPS: 14.2

TPS stands for Ticks Per Second. A healthy Minecraft server runs at 20 TPS, meaning it processes one game tick every 50 milliseconds. When TPS drops below 20, players experience block lag (blocks reappear after breaking), delayed item pickups, rubber-banding, and unresponsive NPCs. Server lag is different from client FPS lag: it affects all players equally because the server itself is falling behind.

Quick Fix

Install Spark (/spark profiler start) and run it during peak load for 5 minutes. The profiler report identifies exactly what consumes server tick time. Address the top offender first, usually entity ticking or a specific plugin.

Step-by-Step Diagnosis

  1. Measure current TPS. Run /spark tps or /tps (Paper). Note the 1-minute, 5-minute, and 15-minute averages. If all three are low, the issue is constant. If only the 1-minute average dips, the issue is intermittent (triggered by specific events).
  2. Profile with Spark. Run /spark profiler start. Wait 5 minutes during peak player activity. Run /spark profiler stop. Open the generated link and examine the "Server Thread" tab. The percentage column shows how much tick time each method consumes.
  3. Check entity count. Run /spark tickmonitor and look at entity tick times. Use /paper entity list to see entity counts per chunk. A single chunk with hundreds of mobs (a mob farm) can tank TPS.
  4. Review plugin timings. In the Spark report, expand the plugin methods. If a plugin's event handlers appear near the top, that plugin is the bottleneck.
  5. Check chunk generation. If players are actively exploring, new chunk generation dominates tick time. Pre-generate the world with Chunky: /chunky radius 5000 then /chunky start.
  6. Test without plugins. Stop the server, move the plugins/ folder, and restart. If TPS is 20 with no plugins, add them back in groups of 3-4 until TPS drops. This isolates the problematic plugin.
  7. Check garbage collection. Run /spark gc to see GC frequency and pause times. If GC pauses exceed 50ms, you need to tune JVM flags or allocate more RAM.

Configuration Optimizations

paper-world-defaults.yml

  • spawn-limits: monsters: 50, animals: 8, water-animals: 3, ambient: 1
  • per-player-mob-spawns: true
  • entity-activation-range: monsters: 24, animals: 16, misc: 8
  • tick-inactive-villagers: false
  • alt-item-despawn-rate: enabled: true with rates for cobblestone, dirt, netherrack, etc.
  • hopper.disable-move-event: true
  • redstone-implementation: alternate-current

server.properties

  • view-distance=8
  • simulation-distance=6
  • max-players set to your actual expected peak, not 1000

Common Causes

  • Entity overload. Mob farms, item sorters, and unloaded mob grinders are the top TPS killers. Each entity is ticked every server tick.
  • Poorly written plugins. Synchronous database queries, heavy event listeners, and unoptimized scheduled tasks drag tick time above 50ms.
  • Chunk generation during gameplay. Each new chunk takes 20-100ms to generate. Multiple players exploring simultaneously causes severe TPS drops.
  • Hopper and redstone machines. Vanilla hopper ticking is extremely expensive. Paper's disable-move-event and alternate-current redstone reduce this significantly.
  • Insufficient single-core CPU performance. Minecraft's main thread is single-threaded. Clock speed matters more than core count. A 5 GHz CPU with 4 cores outperforms a 3 GHz CPU with 16 cores for Minecraft.

FAQ

What is the acceptable TPS range?

20 TPS is perfect. 18-19 TPS is fine for most players. 15-17 TPS is noticeable but playable. Below 15 TPS is unacceptable and causes severe lag.

Does adding more RAM fix low TPS?

Only if the server is garbage-collecting aggressively due to insufficient heap. Adding RAM to a server that already has enough does not improve TPS and can actually hurt it by increasing GC pause times.

Can I run Minecraft on multiple cores?

Paper and Folia split some work across threads (chunk loading, async tasks), but the main game tick is single-threaded. Folia takes this further by ticking different regions on separate threads, but it requires plugin compatibility. For standard Paper, single-core speed is the key metric.

How do I find which chunks are causing lag?

Use /spark tickmonitor and watch for chunks that consistently appear in high-tick-time reports. You can also use /paper entity list to find chunks with abnormally high entity counts.

Need a server that handles all this? Astroworld Hosting, NVMe SSDs, Pterodactyl panel, DDoS protection on every plan.

Related Tools & Resources

🔧

Minecraft Tools

Calculators, generators & server tools

🧱

Item Database

Browse all Minecraft items, stats & recipes

⚒️

Crafting Recipes

Visual crafting guides for every recipe