July 18, 2026
How to Read Spark Profiler Reports to Fix Minecraft Server Lag (26.x)
A deep technical guide to diagnosing MSPT spikes, entity tick bottlenecks, chunk I/O, and garbage collection pauses using Spark profiler reports.
If your Paper, Purpur, or Fabric server experiences lag spikes or low TPS, asking for advice on Reddit r/admincraft or Discord server admin groups will almost always yield the same response: "Post your Spark profile report!"
Spark is the gold-standard CPU, memory, and tick profiler for Minecraft servers. However, opening a Spark flame graph for the first time can be overwhelming with hundreds of nested Java methods. This guide teaches you how to read Spark profiler reports like an experienced server administrator and fix the exact root cause of your server lag.
Understanding TPS vs. MSPT Metrics
- TPS (Ticks Per Second): Target is 20.0. The Minecraft game loop ticks 20 times every second (1 tick = 50 milliseconds). If TPS drops below 20.0, the game slows down, mob movement stutters, and blocks break with delay.
- MSPT (Milliseconds Per Tick): Target is under 50.0ms. MSPT measures how many milliseconds the CPU took to process a single tick. As long as MSPT stays below 50ms, TPS remains at a solid 20.0. If MSPT spikes to 80ms, TPS drops to ~12.5.

Top 4 Server Lag Bottlenecks in Spark Reports
1. Entity Ticking (ServerLevel#tickEntities > 40%)
Symptom in Spark: High percentage spent inside net.minecraft.world.entity, villager brain pathfinding (Villager#tick), or hopper item searching.
Fixes:
- Install Lithium (Fabric) or tune
entity-activation-rangein Paper.yml. - Lower villager tick frequency in
paper-world-defaults.yml. - Replace large vanilla hopper arrays with optimized 26.x unstackable sorter designs.
2. Chunk Loading & Generation (ChunkProviderServer > 30%)
Symptom in Spark: High CPU time spent inside NoiseBasedChunkGenerator or region file disk read/writes while players fly with Elytra into unexplored territory.
Fixes:
- Pre-generate your world border completely using the Chunky plugin before opening your server to players.
- Set
max-auto-save-chunks-per-tickto 6 in Paper config.
3. Redstone & Physics Clocks (RedstoneWireBlock#onPlace)
Symptom in Spark: Method calls to block updating and lighting queue recalculations dominating main thread time.
Fixes:
- Install Alternate Current mod/plugin to replace vanilla redstone propagation with a fast $O(1)$ block update queue.
4. Java Garbage Collection Pauses (GC Pauses > 100ms)
Symptom in Spark: Periodic sharp TPS drops to 10.0 every 30 seconds followed by instant recovery to 20.0.
Fixes:
- Apply tuned G1GC Aikar JVM flags to optimize memory garbage collection pauses.
Generate optimized start scripts for Windows (.bat) and Linux (.sh) servers with our Server Start Script Generator!
More Guides
Minecraft Effect Lab: Mastering Invisible Potions and Particles in 26.x
Stop letting messy swirl circles ruin your cinematic builds and boss fights. Lea...
How to Fix "Too Expensive!" Anvil Error in Minecraft (26.x Guide)
Learn step-by-step how to bypass the 40-level anvil limit, understand prior work...
How to Repair Corrupted Chunks & Crash Loops Without Wiping Your World
Learn how to isolate corrupted anvil region files (.mca), locate crash coordinat...
How to Convert .mrpack to ZIP Modpacks for Prism & CurseForge
A complete step-by-step guide to converting Modrinth .mrpack index files into st...
