Find What's Causing Minecraft Lag With spark
Use the free spark profiler to see which plugin, mod, entity or chunk task is slowing your Minecraft server, and learn to read its report.
4 min read · Updated Sep 23, 2026 · By GuavaHost Team
spark is a free profiler for Minecraft servers: a tool that watches what your server spends its time on and turns it into a report you can open in your browser. Instead of guessing which plugin, mod or farm is causing lag, you run spark for a few minutes while the lag is happening and it shows you. This guide covers installing it, the commands worth knowing and how to read the report.
Getting spark onto your server
| Server type | What to do |
|---|---|
| Paper or Purpur 1.21 and newer | Nothing. Paper has bundled spark since 1.21, so the spark command already works. |
| Paper 1.20.6 and older, or Spigot | Download the spark plugin from its official site, put the .jar in plugins, restart. |
| Fabric, Forge or NeoForge | Download the spark mod for your loader and exact Minecraft version, put it in mods, restart. Add any dependency its download page lists. |
| Vanilla | spark cannot load. Switch to Paper or Fabric first. |
spark only needs to be on the server. Players do not install anything. If you are unsure how to add a plugin or mod, see Installing plugins or Install a Fabric or Forge server and add mods.
In the Console tab, type commands without a slash, for example spark tps. In game, add the slash (/spark tps); you need to be an operator or have the spark permission.
Quick health check: spark tps
Run spark tps first. It prints:
- TPS (ticks per second) averaged over the last 5 seconds, 10 seconds, 1, 5 and 15 minutes. 20 is perfect.
- Tick durations, which is MSPT (milliseconds per tick): the minimum, median, 95th percentile and maximum. Under 50 ms keeps you at 20 TPS.
- CPU usage for the server process and the machine.
spark health gives a fuller snapshot that adds memory and disk use. If you are new to these numbers, Reading TPS and MSPT explains them.
A median MSPT well under 50 with an occasional huge maximum means you have lag spikes. A median close to or above 50 means constant lag. The two call for slightly different profiler runs, below.
Profiling constant lag
- Wait until the lag is actually happening, with players online and farms running. Profiling an empty server tells you nothing.
- In the Console, run
spark profiler start --timeout 600. That records for 10 minutes and then stops by itself. - When it finishes, spark prints a link in the console. Open it in your browser.
You can stop early with spark profiler stop, which also prints the link, or run spark profiler open to look at the results so far without stopping.
Profiling lag spikes
Averages hide short freezes, so for spikes you want spark to record only the slow ticks.
- Run
spark tickmonitorto watch for spikes. It reports ticks that take much longer than usual, so you can see how long your bad ticks are. - Run
spark profiler start --only-ticks-over 100 --timeout 600. spark's own guidance is a value between 50 and 100 milliseconds, and always below the length of your laggy ticks. - Open the link when it finishes.
Reading the report
The report opens with graphs of TPS, MSPT, CPU and memory during the run. Below that is the profile itself.
- Start with the Server thread. In the default tree view, expand the thread called
Server thread. That is the main game thread where the world ticks, and it is where almost all Minecraft lag lives. - Follow the percentages. Each entry shows its share of the time. Keep expanding whichever child has the biggest number until you reach something you recognise: a plugin or mod name, or words like entity, chunk, hopper or redstone.
- Try the Sources view. It groups the time by plugin or mod, which is the fastest way to see if one of them is eating your tick.
- Hover for milliseconds. Hovering an entry shows roughly how much time it took.
If names look scrambled, use the mappings menu at the top right of the viewer. Anyone with the link can view the report, so you can share it with us when you ask for help.
What the common culprits look like
- One plugin or mod dominates Sources. Check its config for heavy features, update it, or replace it with a lighter alternative.
- Entity ticking is the biggest block. Too many mobs, villagers, item frames or dropped items. Mob farms and villager trading halls are the usual suspects.
- Chunk loading or generation is high. Players are exploring fresh terrain. Pre-generating fixes this for good; see Set the world spawn, world border and pre-generate chunks. Lowering view distance helps too, see View distance vs simulation distance.
- Hoppers or block entities stand out. Large hopper chains and item sorters are expensive. On Paper, Optimize Paper for performance covers the safe settings.
- Memory looks tight. Run
spark gcto see garbage collection history. Frequent, long collections point to memory pressure; see How much RAM does my Minecraft server need?.
If TPS held at 20 and MSPT stayed low for the whole run but players still felt lag, the server was keeping up and the problem is more likely the connection. Lag or ping? covers that side.
Fix, then measure again
Change one thing at a time, restart, and run another profile under similar conditions. Comparing two reports is the only way to be sure a change helped. For a broader checklist, see Why is my game server lagging?.
Still stuck? Jump into our Discord at discord.gg/GuavaHost and the team will help you out.
- spark
- profiler
- lag
- tps
- mspt
- performance
- minecraft
- paper
- fabric
- forge
Host a Minecraft Java server From $3.99/mo, with instant setup and DDoS protection.
Still need help? Our team is online 24/7 to answer questions.