Your server can have fast internet and plenty of RAM and still stutter. TPS is the number that tells you whether its heart keeps the beat.
The short answer
TPS (ticks per second) counts how often a game server runs its main loop each second. Minecraft normally runs at 20 TPS, so one tick takes 50 milliseconds [1]. Is 20 good? Yes, it is the target, and it is also the ceiling. If the server needs longer than 50 milliseconds per tick, the TPS falls below 20 and the game slows down [1]. Our assessment: when players report lag, read TPS and MSPT before you buy hardware.
How it works
- The tick loop. One cycle of the game loop is called a tick. Most actions in the game are timed by tick count, not by real time, so on a slow server many things simply take longer [1].
- TPS and MSPT. MSPT (milliseconds per tick) is the time a server actually needs to compute a tick. The Minecraft Wiki states that TPS can be kept at 20 only if MSPT is no higher than 50 [1]. The spark documentation explains it the same way: for a lag-free experience each tick needs to last 50 milliseconds or less [3].
- Averages hide spikes. spark reports not only the average MSPT but also the minimum, the maximum, the median and the 95th percentile [3]. Our assessment: a good average with a high maximum feels like short freezes, so look at the 95th percentile too.
- Built-in commands. Paper's documentation describes
/tps, which shows TPS for the past 1, 5 and 15 minutes, and/mspt, which shows MSPT for the last 5, 10 and 60 seconds. It also says both are superseded by/spark[2]. - spark. The command
/spark tpsprints the server's TPS and CPU usage [4]. Since version 1.21, Paper bundles the spark profiler, and it is the preferred way to profile Paper [5]. - Profiling the cause.
/spark profiler start --timeout 600runs the profiler for ten minutes and returns a link to a report [5]. Paper's documentation notes that the problem you diagnose must be happening while you profile [5]. - Typical causes. The Minecraft Wiki lists contributors to server-side lag: hoppers searching for items, redstone components that cause many block updates, large numbers of mobs, and a random tick speed set too high [1]. A single weak CPU core can also limit a server (our assessment, unverified as a general rule).
- Java Edition can change the rate. Tick rates can be controlled with the command
/tickin Java Edition [1]. Do not change it on a server without understanding the effect on gameplay.
A homelab example
The Bytearium homelab runs rack servers (HPE ProLiant DL360 Gen9 and DL380 Gen10) and a QNAP NAS, as of 14 to 18 Oct 2026. We have not recorded game server workloads or TPS values, so we say nothing about them. A general example for a Paper server of your own: join as an operator and run /spark tps during a busy moment with several players online. If TPS stays at 20.0 and MSPT lies clearly below 50, the server keeps up and the lag is likely somewhere else, such as the network. If TPS drops, start /spark profiler start --timeout 600, play normally for ten minutes and open the report link [4][5]. Write down the values with date and player count, so that you can compare after a change.
Checklist
- Read TPS and MSPT during a busy moment, not on an empty server.
- Compare MSPT against the 50 millisecond limit [1].
- Look at the 95th percentile and the maximum, not only the average [3].
- Check that you use spark, since Paper's older commands are superseded [2].
- Start a profiler run while the lag happens [5].
- Change one thing at a time and measure again.
- Note values with date and number of players.
- Check the network and the client before you blame the server.