Why is my Minecraft server lagging?
Your Minecraft server is lagging because some ticks take longer than 50 milliseconds, and the game is built to run 20 ticks per second. Mobs, crops, furnaces and redstone all wait for the next tick, and most game timers count ticks rather than seconds, so at a lower TPS the whole world runs slower. These are the usual causes, in the order we would check them:
- Farms with too many mobs or hoppers. Every mob needs pathfinding, and every hopper keeps looking for items in the block above it. A solid block on top of a hopper stops that search, and a composter does it even better.
- Redstone clocks and long lines of redstone dust, which send out floods of block and light updates. Switch clocks off when nobody uses them.
- New terrain. A player flying out with an elytra makes the server generate fresh chunks, which is far more work than loading chunks that already exist.
- One plugin or mod that does heavy work every tick. spark tells you which one.
- Too little memory, so Java keeps pausing to clear it out, which is called garbage collection, and the ticks run late.
- A slow or busy processor. The world ticks on one main thread, so the speed of a single core matters, and on shared threads other servers on the same machine compete for it.
- A random tick speed above 3, the default of the
random_tick_speedgame rule (randomTickSpeedbefore 1.21.11). Crops grow faster, but every chunk section does more work each tick.
How to check Minecraft server TPS
To check Minecraft server TPS, type /tps on Paper or Purpur, /spark tps on any server with spark, or /tick query on Java Edition 1.20.3 or later. A healthy server shows 20 TPS and an MSPT, milliseconds per tick, below 50:
| Command | Works on | What it shows |
|---|---|---|
/tps | Paper and Purpur | The TPS over the last 1, 5 and 15 minutes |
/mspt | Paper and Purpur | The average, lowest and highest MSPT over the last 5, 10 and 60 seconds |
/spark tps | Any server with spark, built into Paper since 1.21 | The TPS and the processor use |
/spark health | Any server with spark | A live report in your browser with TPS, processor, memory and disk use, refreshed every 10 seconds |
/tick query | Java Edition 1.20.3 and later, for operators of level 3 or higher | The target tick rate, the average time per tick and its percentiles |
The F3 screen will not help here. Its tick numbers come from the game's own built-in server, so they only describe singleplayer or a LAN world you host. A server at 15 TPS runs at three quarters of its normal speed, so a Minecraft day that should last 20 minutes takes more than 26.
How to see what is causing lag on a Minecraft server
To see what is causing lag on a Minecraft server, run /spark profiler start --timeout 300 while the server lags, and after 5 minutes spark gives you a link to a report of where the tick time went. Paper has shipped spark since 1.21, so on Paper and Purpur the command is already there. On Fabric, Forge and NeoForge you add the spark mod to the server's mods folder.
Run the profiler at your busiest hour, because it only records a problem that happens while it runs. In the report, open the Server thread: that is the main thread that runs the world, and the plugin or mod with the largest share of its time is the place to start. Paper's help channel asks you to bring a spark report when you need help with lag, and for good reason: the report replaces guessing.
How to reduce lag on a Minecraft server
To reduce lag on a Minecraft server, start with 4 changes that cost nothing: run Paper instead of the vanilla server, lower the simulation distance, pre-generate the world and clean up the biggest farms. These are the settings that make a server less laggy, and the file each one lives in:
| Setting | File | Default | Try | What it changes |
|---|---|---|---|---|
| simulation-distance | server.properties | 10 | 6 to 8 | How many chunks around each player keep running mobs, crops and redstone |
| view-distance | server.properties | 10 | 8 | How many chunks the server loads and sends to each player |
| misc.redstone-implementation | config/paper-world-defaults.yml | VANILLA | ALTERNATE_CURRENT | Much cheaper redstone dust, though some dust contraptions behave differently |
| misc.update-pathfinding-on-block-update | config/paper-world-defaults.yml | true | false | Mobs stop working out a new path every time a block changes near farms and clocks |
| hopper.disable-move-event | config/paper-world-defaults.yml | false | true | Far faster hoppers, but plugins that watch hoppers, such as protection plugins, stop working |
Paper is built on Spigot to improve performance, with asynchronous chunk loading and optimised light, hopper and entity code, and it opens a vanilla world without a reset. Our guide to Paper Minecraft server hosting covers the switch. If you build technical farms, read Paper's page on a vanilla-like experience first, because Paper fixes some vanilla bugs that certain machines rely on.
Simulation distance matters more for the TPS than view distance does, because only the chunks inside it keep running. Going from 10 to 6 cuts the area that runs around each player by more than half, while players still see as far as before if you leave the view distance alone. Restart the server after you change server.properties.
How to pre-generate chunks on a Minecraft server
To pre-generate chunks on a Minecraft server, set a world border and let the Chunky plugin generate everything inside it before players get there. For a world of 10,000 by 10,000 blocks, run these 3 commands in the console:
worldborder set 10000puts the border 5,000 blocks out from the centre in every direction.chunky worldbordergives Chunky the same area as that border.chunky startstarts generating.chunky pauseandchunky continuelet you stop for the evening and pick up where it left off.
Chunky runs on Paper, Spigot, Fabric, Forge and NeoForge, with builds up to Minecraft 26.3. Generating takes a lot of processor time, so start it when nobody is online, and watch the free disk space, because every generated chunk is saved. Once it has finished, the server never has to build new terrain while people play inside the border.
How to fix Minecraft server lag spikes
To fix Minecraft server lag spikes, catch them first: /spark tickmonitor --threshold-tick 100 reports every tick that takes longer than 100 milliseconds, twice the normal budget, and says when garbage collection ran at the same moment. Spikes usually come from one of these:
- Garbage collection. When the memory is almost full, Java stops to clean it up.
/spark gcshows how often that happens. The answer is more RAM or fewer memory-hungry plugins. - Chunk generation. Players who fly into new land on elytras make the server generate chunks, and the spikes last as long as they keep flying. Pre-generating the world removes them.
- Saving the world. Paper spreads the autosave over many ticks, at most 24 chunks per tick by default, set by
chunks.max-auto-save-chunks-per-tick. - Backups and big edits. A backup that compresses the world, or a large WorldEdit change, can hold the server up while it runs.
A spike at the same minute every hour usually points at something on a timer, such as a backup or a scheduled task in a plugin.
Minecraft server lagging for friends but not for you
When a Minecraft server is lagging for your friends but not for you, the server is usually fine and the connection is the problem. On a server you run at home, you play over your own network with a ping close to 0 ms, while every friend connects through your home internet, often from much further away. /spark ping shows the average ping of all players, and /spark ping --player Name the ping of one.
Players rarely notice a ping below 50 ms, while above 100 ms they start to feel it in fights and parkour. If your friends are well above that, put the server near the whole group rather than near you, in a data centre close to most of them: see Minecraft hosting in Europe or Minecraft hosting in the USA. If only one friend lags, the cause is usually on their side: Wi-Fi, a busy connection or a slow computer.
How to reduce lag on a modded Minecraft server
To reduce lag on a modded Minecraft server, add the performance mods for your loader to the server. Players do not need them in their own game, because every mod below works on the server alone. These are the best known, with the newest Minecraft version each one had on Modrinth on 10 October 2026:
| Mod | What it speeds up | Loaders | Newest version |
|---|---|---|---|
| Lithium | Mob AI, physics and block ticking, without changing vanilla mechanics | Fabric, NeoForge | 26.3 |
| FerriteCore | Memory use | Fabric, Forge, NeoForge | 26.3 |
| C2ME | Chunk generation and loading | Fabric, NeoForge | 26.3 |
| ScalableLux | Light updates, based on Starlight | Fabric, NeoForge | 26.3 |
| Krypton | The network code | Fabric | 26.3 |
| ModernFix | Performance and memory use, plus many bug fixes | Fabric, Forge, NeoForge | 26.1.2 |
Many modpacks already ship several of these, so look in the mods folder before you add one twice. A big modpack lags more often from one machine or mob farm than from the pack itself, and spark names the mod behind it. Our guide to modded Minecraft hosting explains how much RAM a modded server needs.
How to reduce lag on a Minecraft Bedrock server
To reduce lag on a Minecraft Bedrock server, lower view-distance in server.properties from its default of 32 chunks and leave tick-distance at 4, the lowest value it allows. Tick distance on Bedrock does the job of simulation distance on Java: it goes up to 12, and every step adds a ring of chunks that keeps running around each player. The advice on farms, hoppers and redstone clocks works the same on Bedrock.
A crossplay server is a different case. Bedrock players join it through Geyser, but the server underneath is a Java server, so every fix on this page for Paper applies to it. Read more in our guide to crossplay hosting.
Does more RAM reduce lag on a Minecraft server?
More RAM reduces lag on a Minecraft server only when the memory is full: if /spark health shows the memory close to its limit and garbage collection running all the time, add RAM. If it shows plenty of free memory, more RAM changes nothing, and Paper's own docs warn that past a certain point extra memory brings almost no gain.
In that case the processor is the limit. Because the world ticks on one main thread, a fast core helps more than many cores, and reserved threads keep other servers on the same machine from using your share at the busiest hour. Our guide to high performance Minecraft hosting compares those plans, and the Minecraft server RAM calculator shows how much memory your players and plugins really need.

