Timings vs Spark, Which Minecraft Profiler Should You Use?
Compare Paper Timings and Spark profiler for diagnosing Minecraft server lag. Learn how to read flame graphs, Timings reports, and when to use each tool.
What Profiling Is and Why You Need It
Profiling is the process of measuring where your server spends its processing time. When players complain about lag, "the server is slow" is not actionable information. Profiling tells you exactly what is slow, is it a specific plugin? Entity ticking? Chunk generation? Redstone? Without profiling data, you are guessing. With it, you can pinpoint the problem in minutes.
The two main profiling tools in the Minecraft ecosystem are Paper Timings (built into Paper) and Spark (a standalone plugin). They take fundamentally different approaches to measuring performance, and understanding the difference helps you choose the right tool for your situation.
Paper Timings
Timings is a profiling system built directly into Paper (and its forks like Purpur). It works by wrapping sections of the server code with timing measurements, every time the server ticks entities, processes plugins, loads chunks, or handles packets, Timings records how long each operation took.
To use Timings:
# Start recording
/timings on
# Wait at least 10 minutes for representative data
# (ideally during peak player count)
# Generate a report
/timings paste
The /timings paste command uploads the data to a web viewer (timings.aikar.co) and gives you a URL. Open it in a browser and you get a detailed breakdown of server performance.
Reading a Timings Report
The Timings report is organized into sections:
- Plugins, Shows total time consumed by each plugin. If one plugin dominates this list, it is the likely source of lag.
- Entity Ticking, Time spent updating entities (mobs, items, projectiles). High values here suggest too many entities in loaded chunks.
- World Generation, Time spent generating new chunks. This spikes when players explore new areas.
- Scheduled Tasks, Async and sync tasks scheduled by plugins. Sync tasks that take too long block the main thread.
Look at the "Tick Duration" graph at the top. A healthy server has consistent tick durations at or below 50 ms (20 TPS). Spikes above 50 ms indicate moments of lag. Cross-reference the spike times with the plugin breakdown to identify the culprit.
Timings Limitations
Timings measures averages over the recording period. If a plugin causes a 500 ms freeze once every five minutes but runs quickly the rest of the time, the average might look fine while players experience noticeable hitches. Timings also only works on Paper and its forks, it is not available on Spigot, Fabric, or Forge. Finally, Paper has been deprecating Timings in favor of Spark in recent versions, and some forks have already removed it entirely.
Spark
Spark is an independent profiler plugin created by Lucko (the same developer behind LuckPerms). It works on Paper, Spigot, BungeeCord, Velocity, Fabric, Forge, and Sponge, essentially every Minecraft platform. Unlike Timings, Spark uses a sampling profiler approach: it periodically snapshots the call stack of the server thread and builds a statistical picture of where time is being spent.
To use Spark:
# Start a profiling session (default 5 minutes)
/spark profiler
# Or specify a duration
/spark profiler --timeout 300
# View server health metrics
/spark health
# Check TPS and tick duration
/spark tps
When the profiler finishes, it uploads the results to spark.lucko.me and gives you a URL with an interactive flame graph.
Reading a Spark Flame Graph
A flame graph is a visualization where each horizontal bar represents a function (method) in the code, and the width of the bar represents how much time was spent in that function. Bars are stacked vertically to show the call hierarchy, the bottom is the entry point (the main server tick), and higher bars show deeper nested calls.
To find the source of lag, look for the widest bars near the top of the stack. These are the specific methods consuming the most time. Spark labels each bar with the class and method name, so you can see whether it belongs to a plugin (the package name will include the plugin's namespace) or to vanilla Minecraft code.
Spark's viewer also provides:
- Thread breakdown, See which threads are active and what they are doing. The "Server thread" is the main game loop; if it is saturated, you have main-thread lag.
- GC (Garbage Collection) analysis, Shows how often and how long the JVM pauses for garbage collection. Frequent long GC pauses cause periodic lag spikes that are unrelated to plugins or entities.
- Memory inspection, Heap dump summaries showing what objects are consuming RAM. Useful for diagnosing memory leaks.
Spark Advantages
Spark has several concrete advantages over Timings:
- Platform independence, Works everywhere, not just Paper.
- Real-time sampling, Catches intermittent spikes that averaging-based tools miss.
- GC and memory analysis, Built-in tools for diagnosing JVM-level performance issues that Timings cannot see.
- Active development, Spark is actively maintained with regular updates. Paper Timings is in maintenance mode.
- Community adoption, When you ask for performance help on Discord or forums, most experienced admins will ask for a Spark report. The community has standardized on it.
When to Use Each
The honest answer in 2024-2025 is: use Spark. The Minecraft server administration community has largely moved to Spark as the standard profiling tool. Paper itself now ships Spark as a built-in module (since Paper 1.21), and the /timings command has been deprecated in the latest Paper builds.
The only scenario where Timings still has an edge is if you specifically want the plugin-centric breakdown view that Timings provides out of the box. Spark can show the same information, but you need to navigate the flame graph to find plugin-attributed time, which requires a bit more experience to read.
Sharing Results for Help
Both tools generate shareable URLs. When asking for help on Reddit, Discord, or forums:
- Run the profiler during the actual lag (not during an empty server at 3 AM).
- Let it record for at least 5-10 minutes to get representative data.
- Share the URL, not a screenshot, helpers need to interact with the data.
- Mention your server software, version, and approximate player count alongside the report.
After identifying performance problems, apply the fixes from our optimization guide and review your RAM usage to make sure your resources are allocated efficiently.
Need better performance? Astroworld Hosting runs NVMe SSD, up to 96 GB RAM, and DDoS protection on every plan. See features , plans from €6.39/mo.