---
title: "How to Fix Minecraft Server Lag: Causes & Fixes | ZCS"
description: "Fix Minecraft server lag by finding the real cause first: TPS, MSPT, plugins, entities and chunks, then apply the right fix."
url: "https://www.zcraftstudios.com/blog/reduce-minecraft-server-lag"
updated: "2026-10-29T07:28:04.415039+00:00"
source: "ZCraft Studios"
---

> Site index for AI agents: https://www.zcraftstudios.com/llms.txt (full reference: https://www.zcraftstudios.com/llms-full.txt). Every page is available as Markdown by adding `.md` to its URL or sending `Accept: text/markdown`.

1. [Home](https://www.zcraftstudios.com/)
2. [Blog](https://www.zcraftstudios.com/blog)
3. How to Fix Minecraft Server Lag: Find the Cause, Then Fix It

[ All posts](https://www.zcraftstudios.com/blog)

# How to Fix Minecraft Server Lag: Find the Cause, Then Fix It

ZCraft StudiosSep 12, 2026Updated Oct 29, 2026

Fix Minecraft server lag by finding the real cause first: TPS, MSPT, plugins, entities and chunks, then apply the right fix.

## In this guide

- [Lag has three different meanings](#lag-has-three-different-meanings)
- [Step 1: measure with spark](#step-1-measure-with-spark)
- [Step 2: lower view and simulation distance](#step-2-lower-view-and-simulation-distance)
- [Step 3: control mob and entity counts](#step-3-control-mob-and-entity-counts)
- [Step 4: pregenerate the world](#step-4-pregenerate-the-world)
- [Step 5: tame hoppers and redstone](#step-5-tame-hoppers-and-redstone)
- [Step 6: audit plugins](#step-6-audit-plugins)
- [Step 7: check Java and your jar](#step-7-check-java-and-your-jar)
- [What about giving it more RAM?](#what-about-giving-it-more-ram)
- [A realistic checklist](#a-realistic-checklist)
- [Frequently asked questions](#frequently-asked-questions)
- [Related guides](#related-guides)
- [Official documentation and links](#official-documentation-and-links)
- [Official projects used in this guide](#official-projects-used-in-this-guide)
- [Test checklist for How to Fix Minecraft Server Lag](#test-checklist-for-how-to-fix-minecraft-server-lag)
- [Detailed profiling walkthrough](#detailed-profiling-walkthrough)
- [Spawner plugins](#spawner-plugins)
- [More guides](#more-guides)

## How to Fix Minecraft Server Lag: Find the Cause, Then Fix It

**Short answer:** server lag almost never means "not enough RAM". It means ticks are taking longer than 50 milliseconds. To fix it, measure which part of the tick is slow (entities, chunks, or a plugin), then change the setting that controls that part. This guide shows how to do that on Paper, in the order that usually pays off fastest.

## Lag has three different meanings

Players say "lag" for three unrelated problems, and each has a different fix.

- **Low TPS (server lag).** The server cannot finish a tick in 50 ms, so the game slows down. Mobs stutter, blocks reappear after breaking, and the day cycle crawls. This is a server problem and is what most of this guide covers.
- **High ping (network lag).** Everything is smooth but delayed. This is distance or routing between the player and the host. No server setting fixes it. Choosing a host in the right region does.
- **Low FPS (client lag).** The player's own computer is struggling. Lowering render distance on the client helps, and nothing on the server will.

Check which one you have before changing anything. `/tps` or `/mspt` on Paper shows the server side. If TPS is a steady 20 and players still complain, it is ping or FPS.

## Step 1: measure with spark

Guessing is how people end up copying fifty config tweaks and fixing nothing. spark is a free profiler plugin that tells you where tick time is going. Install it in `plugins/` (some server jars bundle it already), restart, and run:

```
/spark tps
/spark healthreport
/spark profiler start --timeout 120
```

The profiler runs for 120 seconds and then gives you a link to a report in your browser. Run it while the lag is happening, not at 4 a.m. when nobody is online.

In the report, open the "Server thread" and look at what sits at the top:

- A **plugin name** high in the list means that plugin is the problem. Update it, reconfigure it, or replace it.
- **Entity ticking** high means too many mobs, items, or minecarts.
- **Chunk loading or generation** high means players are exploring new terrain faster than the server can generate it.
- **Hopper ticking** high means too many hoppers, usually in farms and storage systems.

This one report decides which of the sections below you need. Skip the rest.

## Step 2: lower view and simulation distance

Two settings in `server.properties` have an outsized effect:

```
view-distance=8
simulation-distance=6
```

`view-distance` is how many chunks around each player are sent to them. `simulation-distance` is how many chunks around each player are actually ticked (mobs move, crops grow, redstone runs). Since Minecraft 1.18 these are separate, which is useful: players can still see far while the server only does work nearby.

The defaults are 10 and 10\. Dropping simulation distance to 5 or 6 is one of the cheapest big wins, because the number of ticked chunks grows with the square of the distance. Going from 10 to 6 cuts the ticked area to roughly a third. Players rarely notice, because anything they are actively near still works.

## Step 3: control mob and entity counts

Entities are the most common cause of sustained low TPS on survival servers. Cows in a pen the size of a house, item frames everywhere, and mob farms that never get emptied add up.

In `bukkit.yml` you can lower the mob caps:

```
spawn-limits:
  monsters: 50
  animals: 8
  water-animals: 3
  ambient: 1
```

Lower caps mean fewer mobs spawn per player. Paper spawns mobs per player rather than globally by default, so these numbers apply around each player.

In `config/paper-world-defaults.yml` (Paper 1.19 and later), look at the entity sections. Useful options include `despawn-ranges` (how far from a player mobs despawn), `per-player-mob-spawns` (leave it `true`, so one player in a farm area cannot use up the cap for everyone) and `entity-per-chunk-save-limit` (caps how many of certain entities, such as experience orbs and arrows, get saved per chunk, which stops runaway entity piles).

Setting names move between Paper versions, so search the generated file for the setting rather than trusting a path from an old guide. Each setting is documented in the Paper docs for your version.

For farms and animal pens, the fix is a server rule: a limit of animals per chunk, enforced by a plugin or by clear rules. A single chunk holding 150 chickens will cost you more than the rest of the map put together.

## Step 4: pregenerate the world

Generating new terrain is expensive. If players are running into unexplored land, every new chunk is created while they wait, and TPS drops each time. The fix is to generate it ahead of time, while the server is quiet, with the Chunky plugin:

```
/chunky world world
/chunky center 0 0
/chunky radius 5000
/chunky start
```

Pregenerating a 5,000 block radius takes a while and uses disk space, so decide how big your world should actually be. Combine it with a world border so players cannot leave the pregenerated area. Exploring then costs only chunk loading, which is much cheaper than generation.

## Step 5: tame hoppers and redstone

If the profiler showed hoppers, redstone, or tile entities, these are the usual culprits:

- **Hoppers.** Every hopper checks for items many times per second. In `spigot.yml`, `ticks-per.hopper-transfer` and `ticks-per.hopper-check` control how often. Raising them slows hoppers slightly and saves a lot of time on servers with big storage systems.
- **Redstone clocks.** Very fast clocks that run forever are a common cause. Use a spark report to find the chunk, then talk to the owner.
- **Item entities on the ground.** Items that never despawn pile up. Paper's `alt-item-despawn-rate` lets you make specific items such as cobblestone despawn faster.

## Step 6: audit plugins

If one plugin dominates the profile, you have three options: update it, find a setting that reduces its load, or replace it. The most common offenders are plugins that run something every tick that could run every second or every minute: scoreboards that refresh constantly, hologram plugins with huge numbers of lines, and anti-cheat checks.

A good rule is to remove plugins you do not understand. Every plugin you keep should be one you can explain in a sentence. Plugins that have not been updated for your Minecraft version are the first ones to check.

## Step 7: check Java and your jar

Two basics that matter more than clever flags:

- **Use a current Java version.** Minecraft 1.20.5 and later need Java 21.
- **Use Paper (or a Paper fork).** Paper has performance work that the vanilla and Spigot jars do not. If you are on the vanilla server jar, switching to Paper is usually the single biggest improvement you can make.

JVM flags such as Aikar's can reduce garbage collection pauses, but only if garbage collection was your problem. Measure first. Our [Aikar's flags guide](https://www.zcraftstudios.com/blog/aikars-flags-performance-tuning) shows how to tell.

## What about giving it more RAM?

Adding RAM does not fix a slow tick. A small survival server often runs fine on 4 to 6 GB. Giving a server far more memory than it needs can even make garbage collection pauses longer. Add memory when you see the server running out of it, with out-of-memory errors or constant GC activity in the spark health report, not when TPS is low.

## A realistic checklist

1. Run `/spark healthreport` and a two minute profile during lag.
2. Lower `simulation-distance` to 5 or 6, and `view-distance` to 8.
3. Lower mob caps and add animal-per-chunk rules.
4. Pregenerate the world and set a world border.
5. Fix whatever the profiler named: a plugin, hoppers, or a redstone clock.
6. Confirm you are on Paper and a current Java version.
7. Re-run the profile and compare.

Change one thing at a time and measure after each change. That is how you learn which change worked.

## Frequently asked questions

### What is a good TPS for a Minecraft server?

20 TPS is perfect. Anything that stays at 19 or above feels fine. If it regularly drops under 18, players notice, and under 15 the server feels broken.

### What is MSPT and why does it matter more than TPS?

MSPT is milliseconds per tick. TPS is capped at 20, so it hides how much headroom you have: a server at 20 TPS could be using 10 ms per tick or 48 ms per tick. MSPT shows you how close you are to the limit of 50 ms.

### Does more RAM reduce lag?

Only if the server is actually out of memory. Most lag is CPU-bound on a single thread, so a faster CPU helps more than more RAM.

### Will lowering view distance hurt the experience?

Lowering simulation distance hurts the least. Players still see far, but only nearby chunks are ticked. Lower view distance as well if you need more.

### Why is my server lagging with only a few players online?

Usually a loaded chunk is doing too much work: a large farm, a mob grinder, a plugin task, or a chunk full of entities. Profile it and look at what is at the top.

## Related guides

- [Aikar's flags explained: do you need them?](https://www.zcraftstudios.com/blog/aikars-flags-performance-tuning)
- [Hardening a Minecraft server with a firewall](https://www.zcraftstudios.com/blog/minecraft-server-firewall-hardening)
- [Choosing Minecraft server software: Paper, Purpur, or Folia](https://www.zcraftstudios.com/blog/minecraft-server-software-paper-purpur-folia)

## Official documentation and links

- [Paper profiling documentation](https://docs.papermc.io/paper/profiling/)
- [Aikar's Flags Explained: Do You Need Them, and How to Check](https://www.zcraftstudios.com/blog/aikars-flags-performance-tuning)

## Official projects used in this guide

Open the relevant project for its downloads, supported versions and installation instructions. Install only the plugins needed for the workflow you choose.

[sparkspark is a performance profiler for Minecraft clients, servers and proxies.On Modrinth ](https://modrinth.com/plugin/spark)

## Test checklist for How to Fix Minecraft Server Lag

Measure MSPT and loaded entity/chunk activity before changing configuration. Apply one controlled optimization and compare under similar load. Lowering simulation distance can help certain workloads but may also change gameplay; explain the tradeoff to players.

### Related troubleshooting

- [Understanding JVM heap and Minecraft RAM errors](https://www.zcraftstudios.com/blog/minecraft-java-heap-ram-errors): Java and RAM problems.

### Further reading

- [Minecraft World Pregeneration Before Launch](https://www.zcraftstudios.com/blog/minecraft-world-pregeneration-launch-guide)

### More troubleshooting

- [Server tick warning diagnosis](https://www.zcraftstudios.com/blog/minecraft-server-cant-keep-up-warning-fix)
- [TPS vs ping vs FPS](https://www.zcraftstudios.com/blog/minecraft-server-tps-vs-ping-vs-fps)

## Detailed profiling walkthrough

For an annotated example of collecting and interpreting server-thread samples, see [How to Read a Spark Profiler Report](https://www.zcraftstudios.com/blog/how-to-read-spark-profiler-minecraft).

## Spawner plugins

- [Virtual Spawners for Minecraft: Lag-Free Spawner Farms](https://www.zcraftstudios.com/blog/virtual-spawners-minecraft-lag-free-spawner-farms)
- [EliteSpawner: Virtual Spawners Plugin Setup, Config, Commands](https://www.zcraftstudios.com/blog/elitespawner-plugin-setup-guide)
- [Best Spawner Plugins for Minecraft (2026): Compared](https://www.zcraftstudios.com/blog/best-spawner-plugins-minecraft-compared)
- [DonutSMP-Style Spawners: Add Virtual Spawners to Your Server](https://www.zcraftstudios.com/blog/donutsmp-style-spawners-plugin-setup)
- [How to Stack Spawners on a Minecraft Server](https://www.zcraftstudios.com/blog/how-to-stack-spawners-minecraft-server)

## More guides

- [Minecraft Inventory Missing After Update or Migration](https://www.zcraftstudios.com/blog/minecraft-server-join-but-inventory-gone)
- [sync-chunk-writes: What It Does and When to Disable It](https://www.zcraftstudios.com/blog/sync-chunk-writes-server-properties)
- [Minecraft Server Backup Strategy: What to Back Up](https://www.zcraftstudios.com/blog/minecraft-server-backup-strategy)
- [Paper Reload vs Restart: Why Plugins Break After /reload](https://www.zcraftstudios.com/blog/paper-reload-versus-restart-explained)
- [PaperMC Config Files Explained: Global and Per-World](https://www.zcraftstudios.com/blog/minecraft-paper-configuration-files-explained)

## Continue reading

- [Aikar's Flags Explained: Do You Need Them, and How to Check](https://www.zcraftstudios.com/blog/aikars-flags-performance-tuning)
- [Folia vs Paper vs Purpur: Which Server Software?](https://www.zcraftstudios.com/blog/minecraft-server-software-paper-purpur-folia)
- [Spawner Lag Fix: Virtual Spawners for Minecraft Servers](https://www.zcraftstudios.com/blog/virtual-spawners-minecraft-lag-free-spawner-farms)
- [Minecraft Connection Refused: Find the Real Cause](https://www.zcraftstudios.com/blog/minecraft-server-connection-refused-fix)

[ Previous guide Common Minecraft Server Setup Mistakes to Avoid](https://www.zcraftstudios.com/blog/minecraft-server-mistakes)[ Next guide Minecraft Server Staff Roles: Responsibilities Explained](https://www.zcraftstudios.com/blog/minecraft-staff-roles)

<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","@id":"https://www.zcraftstudios.com/#organization","name":"ZCraft Studios","alternateName":["ZCS","ZCraft","ZCraftStudios"],"logo":{"@type":"ImageObject","url":"https://www.zcraftstudios.com/favicon-192.png","width":192,"height":192},"image":{"@type":"ImageObject","url":"https://www.zcraftstudios.com/favicon-192.png","width":192,"height":192},"url":"https://www.zcraftstudios.com","description":"ZCraft Studios (ZCS) creates Minecraft plugins, server configs and tools. Browse resources, compatibility details and setup guides.","email":"Support@zcraftstudios.com","slogan":"Minecraft resources, configurations and custom server development.","knowsAbout":["Minecraft plugins","Minecraft server configuration","Java plugin development","Minecraft server optimization"],"sameAs":["https://dsc.gg/zcraftstudios","https://x.com/ZCraftNetwork","https://www.youtube.com/@zcraft_studios","https://www.instagram.com/ZCraftStudios"],"contactPoint":[{"@type":"ContactPoint","contactType":"customer support","email":"Support@zcraftstudios.com","availableLanguage":["English"],"areaServed":"Worldwide"}]}</script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","@id":"https://www.zcraftstudios.com/#website","url":"https://www.zcraftstudios.com","name":"ZCraft Studios","alternateName":["ZCS","ZCraft"],"description":"ZCraft Studios (ZCS) creates Minecraft plugins, server configs and tools. Browse resources, compatibility details and setup guides.","inLanguage":"en","publisher":{"@type":"Organization","@id":"https://www.zcraftstudios.com/#organization","name":"ZCraft Studios","url":"https://www.zcraftstudios.com"}}</script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"BlogPosting","@id":"https://www.zcraftstudios.com/blog/reduce-minecraft-server-lag#article","headline":"How to Fix Minecraft Server Lag: Find the Cause, Then Fix It","url":"https://www.zcraftstudios.com/blog/reduce-minecraft-server-lag","mainEntityOfPage":"https://www.zcraftstudios.com/blog/reduce-minecraft-server-lag","isPartOf":{"@type":"WebSite","@id":"https://www.zcraftstudios.com/#website","name":"ZCraft Studios","url":"https://www.zcraftstudios.com"},"speakable":{"@type":"SpeakableSpecification","cssSelector":["h1","main"]},"description":"Fix Minecraft server lag by finding the real cause first: TPS, MSPT, plugins, entities and chunks, then apply the right fix.","datePublished":"2026-09-12T07:20:10.183599+00:00","dateModified":"2026-10-29T07:28:04.415039+00:00","author":{"@type":"Organization","@id":"https://www.zcraftstudios.com/#organization","name":"ZCraft Studios","url":"https://www.zcraftstudios.com/about"},"publisher":{"@type":"Organization","@id":"https://www.zcraftstudios.com/#organization","name":"ZCraft Studios","url":"https://www.zcraftstudios.com","logo":{"@type":"ImageObject","url":"https://www.zcraftstudios.com/favicon-192.png","width":192,"height":192}},"inLanguage":"en","image":"https://www.zcraftstudios.com/api/og/blog/reduce-minecraft-server-lag?v=hwgy6l"}</script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.zcraftstudios.com/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https://www.zcraftstudios.com/blog"},{"@type":"ListItem","position":3,"name":"How to Fix Minecraft Server Lag: Find the Cause, Then Fix It","item":"https://www.zcraftstudios.com/blog/reduce-minecraft-server-lag"}]}</script>
