Skip to main content
Troubleshooting

How to Diagnose & Fix TPS Drops on Minecraft Servers

Step-by-step guide to diagnosing and fixing TPS drops on Minecraft servers, profiling with Spark, entity culling, tick analysis and Paper optimisation.

7 min read8 sectionsJava & Bedrock1.21

Understanding TPS

TPS stands for Ticks Per Second. A Minecraft server targets 20 TPS, meaning it processes one game tick every 50 milliseconds. When a tick takes longer than 50 ms, TPS drops below 20, and players experience lag: delayed block breaks, slow mob movement, rubber-banding. A reliable minecraft tps drops fix requires finding which tick operations are too slow.

Use /spark tps to view current TPS, or /tps for the built-in approximation. Spark is far more accurate and also shows tick duration percentiles.

Step 1: Profile with Spark

Install Spark on your server. Run:

/spark profiler start --thread server
# Wait 5-10 minutes during peak load
/spark profiler stop

The generated report shows a flame graph of server thread activity. Expand the top-level nodes to find which subsystem consumes the most tick time. Common culprits:

  • Entity ticking: Mobs, items, armor stands processing AI and physics.
  • Chunk loading/generation: Generating new terrain is extremely expensive.
  • Plugin listeners: Event handlers that run expensive logic on every tick or event.
  • Tile entity ticking: Hoppers, furnaces, beacons, each ticks every server tick.

Step 2: Monitor Tick Duration

Run /spark tickmonitor --threshold 50. This alerts you every time a tick exceeds 50 ms and shows what caused the spike. Leave it running during gameplay and note patterns: do spikes happen during mob farms, chunk exploration, or specific plugin commands?

Entities are the most common cause of TPS drops. Paper provides extensive entity tuning in paper-world-defaults.yml:

spawn-limits:
  monsters: 50
  animals: 8
  water-animals: 3
  water-ambient: 5
  ambient: 1
entity-per-chunk-save-limit:
  arrow: 16
  ender_pearl: 8
  experience_orb: 16
  fireball: 8
  small_fireball: 8
  snowball: 8
tick-rates:
  behavior:
    villager:
      validatenearbypoi: 60
  sensor:
    villager:
      secondarypoisensor: 80

Villagers are especially expensive because of their complex AI (job site validation, pathfinding, gossip). Increasing villager tick rates or using a plugin like VillagerOptimiser can dramatically reduce their CPU cost.

If the Spark profiler shows chunk generation or loading as a major consumer:

  • Pre-generate with Chunky: /chunky radius 5000 then /chunky start.
  • Lower simulation-distance in server.properties.
  • Paper's async chunk loading helps, but generating new chunks is always CPU-intensive.

Step 5: Fix Hopper and Redstone TPS Drops

Hoppers are checked every tick and fire inventory move events. In paper-world-defaults.yml:

hopper:
  disable-move-event: true
  cooldown-when-full: true

For redstone, switch to Paper's alternate current implementation:

redstone-implementation: alternate-current

This is a complete rewrite of the redstone engine that is significantly faster than vanilla while maintaining identical behaviour for most circuits.

Step 6: Plugin Audit

If Spark shows plugin methods in the hot path:

  1. Identify the plugin from the class name in the flame graph.
  2. Check if an update exists that fixes the performance issue.
  3. Disable the plugin and confirm TPS improves.
  4. Consider replacing it with a lighter alternative.

The minecraft tps drops fix is iterative, profile, change one thing, profile again. Never change multiple settings at once or you will not know what helped.

For lag caused by network issues rather than tick performance, see our general lag fix guide. If TPS drops coincide with memory pressure, check the OOM guide.

Need reliable hosting that handles these issues out of the box? Astroworld Hosting runs optimised Paper servers on NVMe SSDs with 24/7 support.

Questions about Diagnose & Fix TPS Drops

What exactly is Diagnose & Fix TPS Drops doing here?

A Minecraft server targets 20 TPS, meaning it processes one game tick every 50 milliseconds.

How do you begin Diagnose & Fix TPS Drops?

Identify the plugin from the class name in the flame graph. Check if an update exists that fixes the performance issue.

What do you type for Diagnose & Fix TPS Drops?

Use /spark tps to view current TPS, or /tps for the built-in approximation. This guide uses /spark tps.

Where does Diagnose & Fix TPS Drops store its settings?

Paper provides extensive entity tuning in paper-world-defaults.yml: Villagers are especially expensive because of their complex AI (job site validation, pathfinding, gossip).

What goes wrong with Diagnose & Fix TPS Drops?

When a tick takes longer than 50 ms, TPS drops below 20, and players experience lag: delayed block breaks, slow mob movement, rubber-banding.

How to Diagnose & Fix TPS Drops on Minecraft Servers: Step-by-step guide to diagnosing and fixing TPS drops on Minecraft servers, profiling with Spark, entity culling, tick analysis and Paper optimisation.
How to Diagnose & Fix TPS Drops on Minecraft Servers, from the Troubleshooting guides on Astroworld.

Blocks and items in this guide

Redstone in MinecraftRedstoneSnowball in MinecraftSnowballFurnace in MinecraftFurnaceBeacon in MinecraftBeaconHopper in MinecraftHopperTarget in MinecraftTarget

All 6 of these are named in the Diagnose & Fix TPS Drops guide above, starting with Redstone. Look them up in the item database.

More guides on this site

More Troubleshooting Guides

Related Tools & Databases