If you've ever noticed mobs rubber-banding, redstone behaving strangely, or players complaining about lag even though the server RAM looks fine — TPS is almost certainly the culprit. Understanding what TPS means and how to fix it is the single most valuable skill for any Minecraft server owner.
TPS stands for Ticks Per Second. Minecraft doesn't run as a continuous simulation — it updates in discrete steps called ticks. Everything that happens in the game — mob AI decisions, redstone signals, crop growth, block physics, player movement processing, hopper transfers — all of it happens once per tick.
The target is 20 ticks per second. That means the game processes one tick every 50 milliseconds. At 20 TPS, the game runs at full speed and everything feels smooth.
When the server can't process each tick in under 50ms — because there's too much to compute — ticks start taking longer. Instead of 20 per second, you get 18, or 15, or 10. This is a TPS drop, and it makes the entire game slow down — not just for one player, but for everyone on the server simultaneously.
MSPT stands for Milliseconds Per Tick — it's the flip side of TPS. Each tick has a 50ms budget (since 1000ms ÷ 20 ticks = 50ms per tick).
MSPT tells you how much of that budget each tick is consuming:
Modern profilers like Spark report both TPS and MSPT, and MSPT is often the more useful number because it gives you a continuous warning before TPS actually drops.
Paper adds a built-in /tps command. Run it from the console or as an op in-game:
The three numbers are averages over the last 1 minute, 5 minutes, and 15 minutes. A brief 1-minute spike is less concerning than a sustained 15-minute average drop.
Spark is a free performance profiler plugin that gives you far more detail than /tps alone. Install it like any other Paper plugin, then:
The profiler report shows exactly which operations are consuming the most tick time — specific plugins, entity types, chunk loading — so you know precisely where to focus. It's the difference between knowing that you have a problem and knowing why.
Vanilla Minecraft has no built-in /tps command. Your only option is to install EssentialsX (which adds /tps) or switch to Paper — which is recommended for any server with more than 2–3 players regardless of TPS concerns.
In order of how often they're the actual culprit:
Every loaded mob, animal, item drop, arrow, and minecart requires processing every tick. A single AFK fish farm running for hours can generate thousands of dropped items. Unmanaged mob farms stack hundreds of mobs in a small space. Spark will flag this as "entity tick" consuming excessive MSPT. Fix: kill excess entities with /killall or entity-culling plugins; set mob caps in Paper config; install RoseStacker for stacking.
Hoppers check for items to transfer every tick — even when there's nothing to move. A large hopper sorting system with dozens of hoppers is doing thousands of item checks per second. Fix: use Paper's disable-move-event in the config, set hopper cooldown higher, or replace hopper sorters with more efficient designs using comparators to only activate hoppers when full.
A poorly written plugin that runs a task every tick (or worse, a database query every tick) can alone tank TPS. Spark's profiler will show plugin-specific processing times in its report. Fix: run Spark, identify the offending plugin by name in the report, then update it, replace it, or remove it. Common culprits: old versions of WorldGuard, economy plugins with per-tick balance lookups, and anti-cheat plugins misconfigured with too-aggressive checks.
Large redstone clocks, massive flying machine arrays, and complex contraptions generating hundreds of block updates per second consume significant tick time. Paper includes optimisations for redstone, but there are limits. Fix: throttle redstone clocks, limit the area they affect, or replace redstone-heavy designs with plugin-based alternatives where possible.
Every loaded chunk has to be simulated each tick. View distance controls how many chunks around each player are loaded. At view-distance=16 with 10 players, you're simulating thousands of chunks simultaneously. Fix: reduce view-distance to 8–10 and simulation-distance to 4–6 in server.properties. Players rarely notice the difference below 10 chunks.
When players explore new areas, the server has to generate terrain in real time. This causes temporary TPS spikes rather than sustained drops. Fix: pre-generate your world using the Chunky plugin before opening the server to players. Define a world border and pre-generate everything within it — players will never trigger on-the-fly generation within that area.
Download Spark from spark.lucko.me and install it as a plugin. Run /spark profiler start, let it run for 3–5 minutes while the lag is occurring, then /spark profiler stop. Open the generated report URL. The top entries in the flame graph are your biggest tick-time consumers — start there.
If Spark shows "entity tick" as a top consumer, run /paper entity or install ClearLag to see your entity counts per chunk. Kill excess mobs with /kill @e[type=!player] carefully, or use ClearLag's warnings + auto-clear on a schedule. Set Paper's per-world mob caps lower in paper-world-defaults.yml.
In server.properties, set view-distance=8 and simulation-distance=5. Restart the server. This is the fastest single change to improve TPS on an overloaded server. Fine-tune upward from there based on what your hardware handles.
Install the Chunky plugin and set a world border: /chunky radius 5000 then /chunky start. This pre-generates a 5000-block radius around spawn. Generation runs in the background and takes 10–30 minutes depending on server speed. After this, no new terrain generates within that radius — eliminating generation-spike lag entirely.
Paper exposes many performance knobs not available in vanilla. Key settings in paper-world-defaults.yml: reduce max-entity-collisions from 8 to 2, set disable-chest-cat-detection to true, enable armor-stands-tick false if you use decorative stands, and increase hopper cooldown. The full recommended config is documented at docs.papermc.io.
If Spark names a specific plugin as consuming significant tick time, check its SpigotMC or Modrinth page for recent updates. Outdated plugins are a common TPS killer. If no update exists, consider alternatives — for example, older versions of ShopGUI+ had per-tick economy sync issues that killed TPS on busy economy servers.
Players often confuse TPS lag with ping lag — they both feel like "lag" but have completely different causes and solutions.
If one player is lagging and everyone else is fine: ping problem. If everyone is lagging at once: TPS problem. This distinction saves hours of debugging in the wrong place.
Want a Minecraft server that starts at 20 TPS and stays there? Paper is pre-installed on FreeGameHost.
Create Free Minecraft Server →Related: How to fix Minecraft server lag • Best Minecraft server plugins • What is server CPU usage?