Guide
MSPT vs TPS: what the numbers mean and what is normal
TPS (ticks per second) counts how many game ticks the server finishes each second, and MSPT (milliseconds per tick) measures how long each tick takes. A Minecraft server aims for 20 TPS, which means every tick must fit in 50 ms, so read MSPT first: it shows how close you are to that limit while TPS still reads 20. The 50 ms budget is the one threshold spark and Paper both state. Neither defines a "normal" MSPT for modded servers, so any other band you see comes from whoever published it.
What is the difference between MSPT and TPS?
TPS is an average rate and MSPT is an average duration of the same thing. The spark docs say TPS "reports how many ticks on average are being processed by the game each second", with 20 as the target, and MSPT "reports how many milliseconds on average is taken by the game to process each tick", with 50 or fewer as the target. spark's tick loop guide explains the link: a tick that finishes early sleeps for the remainder, and a tick that runs long delays the next one, because "ticks cannot execute in parallel".
The relationship is arithmetic. One second holds 1,000 ms, so 1,000 divided by 50 gives 20 ticks. If ticks averaged 60 ms, the server could finish at most about 16.7 per second (1,000 / 60).
Paper's commands reference says /tps covers the past 1, 5 and 15 minutes and /mspt shows average, minimum and maximum over the last 5, 10 and 60 seconds, both "superseded by the /spark command". Paper has bundled spark since 1.21 and calls it "the preferred way to profile Paper" (profiling docs). On NeoForge, /neoforge tps prints the mean tick time and TPS for each loaded dimension (source code).
Is low TPS the problem, or is it the client or network?
Rule out the other two kinds of lag first, because only server lag shows up in MSPT. GameServerKings, a hosting seller, draws the split this way in its diagnosis guide (updated 12 Sep 2026), and XGamingServer, another seller, gives the same three types. The ping command is in spark's command docs.
| Who feels it | What it looks like | What proves it |
|---|---|---|
| One player | Choppy rendering, low frame rate | The FPS figure on that player's F3 screen |
| One player or one region | Smooth but late, high ping | /spark ping or /spark ping --player <name> |
| Everyone at the same moment | Rubber-banding, late block breaks, sliding mobs | MSPT at or above 50 in /spark tps |
Why watch MSPT instead of TPS?
TPS stays at 20 until the average tick passes 50 ms, so it hides how close you are to the edge. A server averaging 45 ms per tick shows 20 TPS with little room left. Space-Node and MamboServer both make that point, and neither gives a measurement. spark's lag-spike guide calls 50 ms "the point at which the server has to start catching up, or lagging".
How do you read the spark numbers?
Read the distribution, because an average can look healthy while a few slow ticks ruin play. /spark tps gives the minimum, median, 95th percentile and maximum MSPT. spark's lag-spike guide says spikes happen "when a small number of ticks (or sometimes just one tick) takes a long time to execute", and that in ordinary profiling "all the other samples will 'cancel out' the spike".
The median is the typical tick, the 95th percentile is the tick time that 19 of every 20 ticks stay under, and the max is the single worst tick in the window. Space-Node, a hosting seller, calls the 95th percentile "the useful column"; that is its opinion, not a spark rule.
| Shape of the numbers | Reading | Next step |
|---|---|---|
| Median and 95th under 50, max far above | An occasional spike | /spark tickmonitor --threshold-tick 50, then line the alerts up with what players did |
| Median under 50, 95th above 50 | Frequent spikes | /spark profiler start --only-ticks-over 50, and /spark gc |
| Median near or above 50 | Steady overload | /spark profiler start --timeout 600 during the lag |
| All well under 50, players still complain | Not tick lag | Client and network checks above |
Inside a profile, the server thread's sleep share is a second gauge. spark's tick loop guide calls about 80% sleep "healthy", says below 20% the server "might be lagging on some ticks" and below 5% it "is probably lagging, and has no spare capacity". It warns "these values are averages", so a spiky server can look fine.
What is a normal MSPT for a modded server?
There is no official normal beyond 50 ms. Paper's reference says MSPT "should be below 50 for 20 TPS", and neither Paper's nor spark's documents give a figure for modded servers, a given modpack or a player count.
spark's colours are the closest thing to a scale. Its formatter source, read on 8 Nov 2026, paints a tick time red at the game's ideal duration and yellow from 80% of it, which is 50 ms and 40 ms at 20 TPS. TPS is green above 90% of target and yellow above 80%, so above 18 and above 16. That is a display choice in the code, and spark's docs do not present it as a standard.
Publishers give other bands. None is a standard, and each row carries its own caveat.
| Publisher | What it says | What to know about it |
|---|---|---|
| MamboServer (updated 19 Dec 2025) | TPS 18-19 minor slowdown, 15-18 noticeable, 10-15 significant, below 10 "nearly unplayable". TPS 20 with MSPT under 40 is healthy | Affiliate site, not a host; discloses revenue share from hosting companies. Gives no method |
| Space-Node (updated 28 Sep 2026) | No band. If the 95th percentile "stays comfortably under 50 ms with your usual crowd online, you have room" | Hosting seller. Says the result "depends on your pack, your world and what your players do" |
| XGamingServer (no date seen) | Pairs TPS 19-20 with 50-55 ms as "Good" and TPS 14-17 with 65-80 ms | Hosting seller. Gives no method, and 80 ms works out to 12.5 TPS (1,000 / 80), not 14 |
Your pack, loader, world and players decide where your limit sits, so the useful number is your own baseline. Record the median, 95th percentile and max with your usual group online, then change one thing at a time. How to benchmark your own game server lays out the method.
GameServerBench plans to publish annotated spark exports from its own runs. No test server exists yet and nothing has been measured, so this page has no example numbers of its own.
What should you do with a bad reading?
Capture it while the problem is happening, because Paper says "the issue you are diagnosing must be actively occurring" for profiling to work. Decide whether it is a spike or steady load using the table above, follow the biggest percentage in the profile, fix that one thing and measure again. ATM10 server lag and high MSPT applies this to one pack. If long ticks line up with collections in /spark gc, see Java flags for modded servers.
Three readings send people the wrong way:
- High memory use. Paper's troubleshooting page says that without out-of-memory crashes or bad collection times, "high memory usage is expected".
- Low CPU on a lagging server. GameServerKings says the tick loop is one thread, so a panel can show low total CPU while that thread is full.
/tick rate. GameServerKings warns that lowering it slows the game itself and is no performance fix.
Do other games use TPS and MSPT?
Not under those names. Palworld's REST API reports serverfps ("The server FPS") and serverframetime ("Server frame time (ms)"), and Pocketpair's metrics page lists no tick-rate field or official threshold. The idea is the same, a rate and a time per update, and target values differ by game. For Palworld specifics, see Palworld server lag and memory leak.
Next step: pick one repeatable activity, capture a ten-minute spark profile and keep the median, 95th percentile and max. Then return to the guides hub for the pack or game you run.
Sources
- TPS and MSPT - spark docs
- The Tick Loop - spark docs
- Finding the cause of lag spikes - spark docs
- spark command usage - spark docs
- StatisticFormatter.java - spark source code
- Commands - PaperMC Docs (page dated 18 Sep 2026)
- Profiling - PaperMC Docs
- Basic troubleshooting - PaperMC Docs
- TPSCommand.java - NeoForge 1.21.1 source code
- How to Optimize Your Minecraft Server to Fix Lag & Improve TPS - MamboServer (updated 19 Dec 2025)
- The Quest for 20 TPS: How to Load Test a Modded Minecraft Server - Space-Node (hosting seller)
- Diagnosing Minecraft Server Lag - GameServerKings (hosting seller, updated 12 Sep 2026)
- Understanding Minecraft Server Lag - XGamingServer (hosting seller)
- Server metrics - Palworld Server Guide (Pocketpair)