# Why Is My Minecraft Server Lagging? Complete Troubleshooting Guide

> Find out which kind of lag you have (server tick lag, network latency, low client FPS, memory pressure or an overloaded CPU) and fix the cause instead of guessing.

Source: https://www.beaconhosting.org/knowledgebase/why-is-my-minecraft-server-lagging-complete-troubleshooting-guide
Category: Minecraft
Last updated: 2026-10-22

"Lag" is five different problems that look alike. Each has a different cause and a different fix, and only some of them are solved by a bigger server. Work out which one you have first.

## Step 1: Which kind of lag is it?

| What players notice | Who's affected | Most likely cause |
| --- | --- | --- |
| Mobs freeze, blocks reappear after breaking, crops and furnaces slow down, everyone rubber-bands | Everyone at once | **Server tick lag** (low TPS) |
| One player rubber-bands or has high ping; others are fine | One or a few players | **Network latency** |
| The picture stutters or the frame rate drops, even in singleplayer | One player | **Client FPS** |
| Everything freezes for a second every few minutes, then catches up | Everyone at once | **Memory pressure** |
| Constant slowness that gets worse with more players or near farms | Everyone at once | **Overloaded CPU** |

The quickest way to tell server lag from the rest: if **everyone** lags at the **same moment**, it's the server. If it's one person, it's their connection or their computer.

## Step 2: Measure the server

Install **spark** (from **Package Manager** on Beacon, or from Modrinth for any loader) and run these in **Console**:

```
spark tps
spark health
```

- **TPS** (ticks per second) should be **20**. Minecraft runs its game loop 20 times a second; below 20, the world slows down.
- **MSPT** (milliseconds per tick) should be **under 50**. Each tick has 50 ms; anything over that and the server falls behind. MSPT is the better number to watch, because TPS stays at 20 right up until the server is out of time.
- `spark health` also shows **CPU** and **memory** use.

Paper also has `/mspt` and `/tps` built in. On Beacon, the **Console** page shows CPU and memory graphs too.

If TPS is 20 and MSPT is comfortably under 50 while players complain, the server isn't the problem: skip to network latency or client FPS.

## Server tick lag

TPS is below 20, or MSPT is above 50. Something in the world is taking too long each tick. Don't guess what: profile it.

```
spark profiler start
```

Let it run for a few minutes while the lag is happening, then:

```
spark profiler stop
```

Open the link it prints. The profile shows exactly which entities, block entities, plugins or mods are using the tick. See [How to Find Lag With the spark Profiler](/knowledgebase/how-to-install-spark-and-run-a-spark-profiler-on-a-minecraft-server).

The usual culprits, roughly in order:

1. **Entities.** Huge mob farms, thousands of animals in one pen, item piles, villagers trapped in trading halls. Run `spark profiler` and look for `entity` and `tickEntity`; on Paper, `paper entity list` shows counts by type.
2. **Chunk generation.** Players exploring new land makes the server generate terrain live. Pre-generate the world with **Chunky** before players spread out.
3. **Redstone and hoppers.** Clocks that never stop, and long hopper chains. Paper's `paper-world-defaults.yml` has hopper and redstone settings that cut the cost.
4. **Simulation distance.** Every player keeps the chunks around them ticking. Lower `simulation-distance` in `server.properties` to 6–8. This is often the single biggest win, and players still see as far (that's `view-distance`).
5. **One plugin or mod.** The profile names it. Update it, configure it, or replace it.

The fix is almost always one of these, not more hardware. See [How to Pre-Generate a World](/knowledgebase/how-to-pre-generate-a-world-on-a-minecraft-fabric-server) and [How to Change the View Distance](/knowledgebase/how-to-change-the-view-distance-on-a-minecraft-server).

## Network latency

TPS is fine, but one or a few players rubber-band, see delayed block breaks, or get "Timed out".

1. Check their ping: `spark ping` lists every player's latency, and the bars in the **Tab** player list show it too. Under 100 ms is fine; over 200 ms is noticeable.
2. If **one player** has high ping, the cause is their connection: Wi-Fi far from the router, someone else downloading or streaming, or distance from the server. Ask them to try a wired connection.
3. If **everyone far away** has high ping, the server is a long way from them. Choose a location closer to most of your players.
4. If **everyone** suddenly lags and disconnects together while TPS stays at 20, it may be a network problem at the host or an attack. Hosts with DDoS protection filter most attacks; contact support if it continues.

A bigger plan doesn't help network latency.

## Client FPS

The game itself stutters or the frame rate drops. This is the player's computer, not the server.

1. Press **F3**: the top-left shows the frame rate. Under 30 FPS feels laggy.
2. Check whether it happens in singleplayer too. If it does, it's definitely the client.
3. Lower **Render Distance** in **Video Settings**, turn off shaders, and close other programs.
4. Install **Sodium** (Fabric) or **Embeddium** (NeoForge/Forge) for a large FPS boost. See [How to Install OptiFine (or Better Alternatives)](/knowledgebase/how-to-install-optifine-on-minecraft).
5. For modpacks, give the launcher enough memory: see [How to Allocate More RAM on Modded Launchers](/knowledgebase/how-to-allocate-more-ram-on-modded-minecraft-launchers).

Nothing on the server fixes low FPS.

## Memory pressure

Everyone freezes together for a moment every few minutes, then the world jumps forward. Memory use sits near the limit.

1. Watch memory while players are on. If it climbs to the limit, drops, and climbs straight back, the garbage collector is struggling.
2. Run `spark gc` to see how often collection runs and how long the pauses are. Pauses of hundreds of milliseconds cause visible freezes.
3. Look in the log for `OutOfMemoryError` or `Java heap space`.

Fixes: lower `view-distance` and `simulation-distance`, cut entity counts, remove unused plugins or mods, and restart daily with a schedule if a plugin leaks memory. If memory is at the limit **after** that, the server genuinely needs more RAM. See [How to Fix Out of Memory Errors](/knowledgebase/how-to-fix-out-of-memory-errors-on-a-minecraft-server) and [How Much RAM Does a Minecraft Server Need?](/knowledgebase/minecraft-server-ram-requirements).

## Overloaded CPU

TPS drops below 20 when more players are on, CPU sits near its limit, and memory has plenty of room. The log may say `Can't keep up! Is the server overloaded?`

Minecraft runs each world's tick on one main thread, so the server can be overloaded while overall CPU looks only partly used. The profile from **Server tick lag** above tells you what's using it. Fix those causes first: they're usually cheaper than an upgrade, and an upgrade won't help if one farm is using the whole tick.

## When does upgrading actually help?

| Your measurements | Upgrade? |
| --- | --- |
| TPS 20, MSPT low, one player lags | No: their connection or computer |
| Low FPS on one player's screen | No: client settings |
| Low TPS, profile shows one farm, plugin or mod | No: fix or remove that |
| Low TPS while exploring | Not first: pre-generate the world |
| Memory at the limit after reducing distances and entities | Yes: more RAM |
| Low TPS spread across normal play, after the fixes above, with the CPU at its limit | Yes: a plan with more CPU |

## Still lagging?

Collect a spark profile link from while the lag is happening, and [open a ticket](/billing/tickets) with it. A profile shows exactly where the time goes, which makes it far quicker to help.

