Skip to main content

How to Reduce Lag on Your Minecraft Server

Lag has three different causes that all look the same from a player's chair. This page goes through them in the order that finds the problem fastest, and every number in it is worked out from the settings our own panel actually offers.

The short answer

  1. Measure first

    TPS under 20 or a tick over 50 ms means the server is the slow part. The panel or Spark tells you which.

  2. Then the four free fixes

    Pre-generate the chunks, lower the view distance, thin the entities, calm the redstone. In that order.

  3. Still slow with memory to spare

    One core is out of time. That is a plan question, not a settings question.

Everything below is those three lines worked out, with the numbers behind each step.

Understanding TPS

TPS is ticks per second, and it is the heartbeat of the server. Everything the world does, mob movement, block updates, redstone, growth, happens once per tick, and the target is 20 of them a second. That gives each tick 50 milliseconds to finish in. Go over and the next tick starts late, TPS falls, and the whole world slows down together: this is why lag makes furnaces smelt slower rather than making the game look choppy. Type /tps in the console to see it. Paper reports three averages, over one, five and fifteen minutes, and the one-minute figure is the one that answers "is it bad right now".

What a tick rate means in milliseconds, and what it looks like in the world.
TPSOne tick takesWhat it feels like
20 TPS50 msNormal. Nothing to fix.
18 TPS55.6 msBarely visible. Redstone timing starts to drift.
15 TPS66.7 msMobs stutter, hoppers fall behind, farms produce less.
10 TPS100 msHalf speed. Furnaces, growth and daylight all take twice as long.
5 TPS200 msUnplayable. Blocks reappear after you break them.
The F3 debug screen of Java Edition with entity and chunk counts on the left
The F3 screen. The left column counts the entities and chunks around you; the server's own tick time you read in the panel or in Spark. Image: DebugScreen.png from minecraft.wiki, CC BY-NC-SA 3.0.

What are your own numbers?

Everything below only helps once you know which number is out of line on your server. You do not have to work that out by hand: the AI performance optimizer in your panel measures your own server in about seven seconds, from tick time and tick rate to entities per type, chunks, memory and your plugins, and names the culprit in one sentence with the number behind it.

Three Types of Lag

Three different problems get called lag, and only one of them is yours to fix. Telling them apart first saves you from optimising a server that was never the slow part.

Three problems that all get called lag, and which of them is yours.
KindWhere it happensWhat you can do about it
Server-sideOn the machine. This is what TPS measures.Everything else on this page. Entities, chunk loading, plugins and redstone all land here.
Client-sideOn the player's own computer. Shows up as low FPS and stuttering, not as slow furnaces.Nothing directly, but a lower view distance sends fewer chunks and lightens their load too.
Network, or pingBetween the two. Distance and routing, not processing.Pick a region near your players. No amount of CPU fixes an ocean.

Pre-Generate Your Chunks

Generating terrain is the most expensive thing a server does. Biomes, caves, structures, ore and lighting all get worked out the first time somebody walks that way, and four players riding horses in four directions can drop a healthy server to single-digit TPS on their own. Doing it in advance, while nobody is on, moves that cost to a moment when it does not matter.

  1. Install Chunky

    It is an ordinary plugin jar in the plugins folder, and it works on any of our Bukkit-based server software.

  2. Set the radius you actually want

    Pick the same number as your world border, in blocks. Generating far past the border is hours of CPU for terrain nobody will ever stand on.

    /chunky radius 5000
  3. Start it on an empty server

    The generation itself is heavy, so run it overnight or before you hand out the address. It resumes if it gets interrupted.

    /chunky start
The striped red and blue wall of a world border in Java Edition
A world border. Set one first, then let Chunky generate everything inside it while nobody is on, and terrain generation stops happening during play. Image: World Border.png from minecraft.wiki, CC BY-NC-SA 3.0.

Lower Your View Distance and Simulation Distance

View distance is a radius, so the cost of raising it is square rather than linear. Our own panel takes 2 to 32, and across that range one player goes from 25 chunks to 4,225. Multiply by the number of people online and you can see why this is the first dial to touch. Dropping from 10 to 8 costs almost nothing anyone notices and takes about a third of the chunks off the server.

A radius, squared: what one player costs at each setting, against a view distance of 10.
View distanceChunks one player holdsAgainst 10
2 chunksThe lowest our panel allows256%
4 chunks8118%
6 chunks16938%
8 chunks28966%
10 chunks441100%
12 chunks625142%
16 chunks1,089247%
32 chunksThe highest our panel allows4,225958%

Simulation distance is the one that pays. View distance decides what a player can see; simulation distance decides how far the world keeps running, so it is what actually costs ticks. Setting it a few chunks below view distance is the usual answer. These are the 5 performance settings our own panel exposes, with the text we put next to them.

The performance group of our own settings screen, read straight out of it.
SettingRangeWhat it does
View distance (chunks)view-distance2 to 32How far players can see. Lower is lighter on CPU and memory.
Simulation distance (chunks)simulation-distance2 to 32How far the world keeps ticking. The biggest single performance lever.
Entity range (%)entity-broadcast-range-percentage10 to 500How far entities are sent to clients. Lower reduces network load.
Watchdog (ms)max-tick-time1000 to 600000How long one tick may take before the server considers itself hung. Below 60000 the server may restart itself during heavy lag.
Synchronous chunk writessync-chunk-writesOn or offTurning this off is usually faster on shared storage.
The Java Edition video settings with Render Distance at 12 chunks and Simulation Distance at 8 chunks
Render distance and simulation distance as the player sees them. The server's own values in server.properties cap both, and those are the dials this section is about. Image: Options - Video Settings - Simulation Distance control example.png from minecraft.wiki, CC BY-NC-SA 3.0.
Chunk borders drawn over a Java Edition landscape with F3 and G
Chunk borders, F3 and G. Each of those 16 by 16 squares is one chunk the server ticks, and the view distance decides how many of them one player keeps loaded. Image: Chunk borders.png from minecraft.wiki, CC BY-NC-SA 3.0.

Clean Up Entities

Every mob, dropped item, item frame, armour stand and minecart is an entity, and the server walks the whole list every tick. Five hundred chickens packed into ten blocks cost more than fifty players walking around. Paper can thin this out without anyone noticing: activation ranges and tick rates in paper-world-defaults.yml make distant entities tick less often, and spawn limits in bukkit.yml cap how many can exist at once. Item frames and armour stands in a build are the sneaky ones, because nothing kills them and they never move.

A tall mob farm tower in a desert, the kind of build that fills the server with entities
A mob farm. Every mob it spawns and every item it drops is an entity the server walks past each tick, which is what the spawn limits and activation ranges are for. Image: LargeMobFarm.png from minecraft.wiki, CC BY-NC-SA 3.0.

Optimize Redstone

A redstone update cascades: one change fires block updates through everything connected to it, and a fast clock does that hundreds of times a second. Paper ships an alternate redstone implementation that is measurably cheaper for large circuits and is worth turning on before you start banning designs. Hoppers deserve their own rule: each one checks for items every tick whether anything is moving or not, so a two-hundred-hopper sorting system runs all day at full price.

Top view of a hopper clock built from hoppers, comparators and gold blocks
A hopper clock. Every hopper checks for items each tick whether anything moves or not, and a clock keeps the whole circuit updating for as long as the chunk is loaded. Image: Sethbling's hopper clock.png from minecraft.wiki, CC BY-NC-SA 3.0.

Use Spark to Find the Bottleneck

Everything above is a guess until you measure. Spark is a profiler that tells you where the ticks went: entity ticking, chunk loading, one plugin's event handler, or the garbage collector. Start it while the server is actually struggling, leave it running a few minutes, stop it, and it hands you a link with the breakdown. Paper 1.21 and up ships with it already installed, so on most of our servers there is nothing to install first.

/spark profiler start /spark profiler stop
The debug pie chart of Java Edition, opened with Shift and F3, splitting the tick into slices
The built-in pie chart splits a tick into what took the time. Spark does the same for the server and hands you the breakdown as a link. Image: Debug Pie Chart.png from minecraft.wiki, CC BY-NC-SA 3.0.

Plugin-Related Lag

Plugin count is not the number that matters. Fifteen well-chosen plugins beat forty where half overlap, but one plugin scanning chunks on the main thread beats them all for damage. If a Spark profile puts a single plugin at the top, look for a newer version, then for a config option that turns off the expensive part, and then for something else that does the job. Going through the list twice a year and deleting what nobody uses costs an hour and pays for itself.

When to Upgrade Your Plan

If you have pre-generated your chunks, cut simulation distance, thinned the entities and profiled with Spark, and the one-minute average still will not hold 20, then the machine is the limit and not the settings. Sitting above eighty percent memory all day, or CPU spikes during ordinary play, is the signal. All 7 of our plans list what they give you, and our memory guide has which of them fits which kind of server.

What each plan gives you, straight from the price list.
PlanvCPUMemoryStorage
Mini2 vCPU4 GBA cobblestone block, the icon of the Mini Minecraft server plan60 GB SSD
Starter2 vCPU8 GBA block of coal, the icon of the Starter Minecraft server plan60 GB SSD
Standard3 vCPU12 GBA block of iron, the icon of the Standard Minecraft server plan75 GB SSD
Premium4 vCPU24 GBA block of gold, the icon of the Premium Minecraft server plan150 GB SSD
Ultimate6 vCPU48 GBA block of diamond, the icon of the Ultimate Minecraft server plan300 GB SSD
Enterprise8 vCPU64 GBA block of emerald, the icon of the Enterprise Minecraft server plan375 GB SSD
Dedicated9 vCPU96 GBA block of netherite, the icon of the Dedicated Minecraft server plan450 GB SSD

What comes with every plan, on every tier, is on the full feature list.

Questions people ask when the server drags

Will more RAM fix low TPS?

Only if memory was the problem. TPS is a CPU measure: a server can sit at half its memory and still miss ticks because one plugin is doing too much work per tick. Profile first, then decide what to buy.

What view distance should I run?

Something between 6 and 10 for most servers, with simulation distance a few chunks below it. The table above shows what each step costs, so you can pick a number instead of copying one.

How many players before a server starts to lag?

There is no such number. Twenty players spread over an explored world are cheaper than five building redstone in one chunk. What the players do decides it, not how many there are.

Do scheduled restarts help?

They paper over a leak rather than fixing it, but they do work: a nightly restart clears accumulated entities and returns memory the garbage collector never got back. Worth having, not worth relying on.

Is Spark safe to run on a live server?

Yes, that is what it is for. It samples rather than instruments, so the overhead is small, and you have to run it during real lag for the report to mean anything.

Plans with room to grow into

See all 21 plans across three editionsAnswer four questions and get the size

The chunk counts on this page are the square of twice the view distance plus one, worked out over the range our own settings screen allows, and the settings table is that screen: the labels, the limits and the help text are read from it when the page is built.

When the tuning is finished and it is still slow

Pre-generate the chunks, drop the view distance, thin out the entities, and measure again. If the tick time still sits near fifty with memory to spare, none of the four steps above is the answer any more: one core is out of time. That is the case the Performance line is for, on an AMD Ryzen 9 5900X, with the same memory you have now.

Written and checked by the Astroworld Hosting team. Last reviewed on 6 September 2026.

Delivery: most servers are handed over instantly and run within seconds of payment, the rest follow within 60 minutes during the day and within 12 hours at night.