WELCOME20 · −20%Claim
MinecraftValheimHytale· SOONPalworld· SOONRust· SOON
Guides / Troubleshooting

How to Fix Minecraft Server Lag — Complete 2026 Guide

Lag is the number one killer of Minecraft servers. This guide covers everything from understanding TPS to optimizing server settings, so your players get smooth, spike-free gameplay.

10 min readUpdated March 2026

1. Understanding Server Lag

Before you can fix lag, you need to understand what's actually happening. Not all lag is the same, and the fix depends on which type you're dealing with.

TPS — Ticks Per Second

Minecraft servers run on a tick-based system. The server processes everything — mob AI, block updates, redstone, player actions — in discrete steps called ticks. A healthy server runs at 20 TPS, meaning 20 ticks per second. Each tick has a budget of 50 milliseconds (1000ms / 20 = 50ms).

  • 20 TPS — Perfect. Everything runs smoothly.
  • 15-19 TPS — Slight delays. Most players won't notice.
  • 10-14 TPS — Noticeable lag. Block breaks feel delayed, mobs stutter.
  • Below 10 TPS — Unplayable. Blocks reappear after breaking, rubber-banding everywhere.

Three Types of "Lag"

Server Lag (Low TPS)

The server can't keep up. Affects ALL players. This is what this guide fixes.

Client FPS Lag

The player's computer is slow. Only affects that player. Install OptiFine or Sodium.

Network Lag (Ping)

High latency between player and server. Choose a host closer to your players.

2. Check Your TPS

Before changing anything, measure your current performance. You can't fix what you can't see.

The /tps Command

Most server software includes a built-in TPS command. As an operator, type /tps in the server console or in-game chat. You'll see three numbers representing the average TPS over the last 1, 5, and 15 minutes.

Install Spark Profiler

Pro Tip

Spark is the gold standard for Minecraft server profiling. Install it as a plugin (Paper/Spigot) or mod (Forge/Fabric), then run /spark profiler start. After a few minutes, run /spark profiler stop to get a shareable report link that shows exactly what's eating your tick time.

Reading a Spark Report

Spark breaks down your tick time by category. Look for:

  • Entity tick — Too many mobs or animals. See Section 5.
  • Block entity tick — Hoppers, furnaces, or modded machines. See Section 5.
  • Chunk generation — Players exploring unloaded chunks. See Section 6.
  • Plugin/mod timings — A specific plugin or mod is the bottleneck. See Section 9.

3. Choose the Right Server Software

Your choice of server software has a massive impact on performance. Here's the progression from worst to best for vanilla/plugin servers:

Warning

Never run the vanilla Minecraft server JAR in production. It has zero performance optimizations and will lag with just a handful of players. Always use Paper or Purpur for plugin servers.

Plugin Servers (Vanilla-Compatible)

  1. Vanilla — No optimizations. Don't use this.
  2. CraftBukkit — Legacy. Outdated and unmaintained.
  3. Spigot — Better than vanilla, but Paper has surpassed it.
  4. Paper — Recommended. Dozens of performance patches, async chunk loading, and extensive configuration options.
  5. Purpur — Builds on Paper with extra gameplay and configuration features. Great if you want more control.

Modded Servers

For modded Minecraft, you'll use NeoForge (1.20.5+) or Forge (older versions). Modded servers can't use Paper's optimizations, so proper config tuning and mod selection matter even more. See Section 9 for modded-specific tips.

4. Optimize Server Settings

These settings changes are free performance. Every server should tune these. The files to edit are server.properties, spigot.yml, and paper-world-defaults.yml.

View Distance & Simulation Distance

These two settings have the biggest impact on performance:

  • view-distance: 6-8 (default 10) — How far players can see. Each chunk in range costs CPU.
  • simulation-distance: 4-6 (default 10) — How far entities and redstone tick. This is the real performance lever.

Reducing simulation distance from 10 to 5 can cut entity processing by 75%. Players can still see distant terrain — it just won't be simulated.

Entity Settings (spigot.yml)

  • entity-activation-range — Mobs outside this range skip AI ticks. Set monsters to 24, animals to 16, misc to 8.
  • mob-spawn-range — Keep at 4-6. No point spawning mobs players can't interact with.
  • tick-inactive-villagers: false — Villagers outside activation range stop ticking. Huge performance win.

Paper-Specific Optimizations

  • optimize-explosions: true — Uses a faster explosion algorithm.
  • use-faster-eigendecomposition: true — Speeds up certain math operations.
  • armor-stands-tick: false — Prevents armor stands from ticking. Safe to disable unless mods use them.
  • per-player-mob-spawns: true — Distributes mob caps per player instead of globally. Already default in recent Paper.

Tired of Tweaking Configs?

ModReady servers come pre-optimized with all of these settings tuned for your specific modpack and player count.

Get a Pre-Optimized Server — $4.99$3.99/mo

Cancel anytime. No questions asked.

5. Entity & Hopper Management

Entities (mobs, animals, dropped items) and block entities (hoppers, furnaces, brewing stands) are usually the biggest TPS drain on established servers.

Why 1000 Chickens Kill Your Server

Every entity runs AI and pathfinding calculations each tick. A single chicken is cheap. But players love building massive farms, and 1000 chickens in a 3x3 pen means 1000 pathfinding calculations every tick. Multiply that by several farms and your TPS collapses.

  • Entity cramming — Set maxEntityCramming to 8-12 (default 24). Excess entities in a small area get killed.
  • Mob caps — Reduce spawn-limits in bukkit.yml. Try monsters: 50, animals: 8, water-animals: 3.
  • Merge radius — Increase item and XP merge radius in spigot.yml to reduce dropped item entities.

Hopper Optimization

Hoppers are notoriously expensive. Each one checks for items above it every tick. A large sorting system with 200+ hoppers can eat 5-10ms of tick time alone.

  • hopper-transfer & hopper-check — Increase from 8 to 16 or 24 ticks in spigot.yml.
  • Paper's hopper optimizations — Paper includes significant hopper performance patches by default. Another reason to switch from Spigot.
  • Alternative designs — Water streams and droppers are much cheaper than hoppers for item transport.

6. World Pregeneration

Chunk generation is one of the most CPU-intensive operations in Minecraft. When a player explores new territory, the server has to generate terrain, caves, structures, and biome features in real time. This causes massive lag spikes.

Chunky Plugin

Chunky pregenerates your world in the background. Install it and run:

  1. /chunky radius 5000 — Set a 5000-block radius from spawn
  2. /chunky start — Start pregeneration
  3. /chunky pause — Pause if needed (safe to stop/restart)

Pregenerating a 5000-block radius eliminates lag spikes from exploration for the vast majority of players. It takes 30-60 minutes depending on your hardware but it's a one-time investment. Set a world border to match your pregenerated radius.

7. RAM & Java Optimization

How Much RAM Do You Need?

More RAM doesn't always mean better performance. What matters is having enough and configuring garbage collection properly. For a detailed breakdown, see our RAM guide.

  • Vanilla (1-10 players) — 2-3 GB
  • Light modpacks (10-20 mods) — 4-6 GB
  • Heavy modpacks (100+ mods) — 8-12 GB
  • Large modpacks (ATM10, RLCraft) — 10-16 GB

Aikar's Flags

Recommended JVM Flags

Aikar's flags are the gold standard for Paper servers. They tune the G1GC garbage collector to minimize lag spikes from GC pauses. Use them for any server with 8 GB or more of RAM.

java -Xms8G -Xmx8G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -jar server.jar nogui

ZGC for Java 21+

If you're running Java 21 or newer (required for Minecraft 1.21+), the Z Garbage Collector (ZGC) is an excellent alternative. ZGC keeps GC pauses under 1ms regardless of heap size, which means virtually zero lag spikes from garbage collection.

To use ZGC, replace the G1GC flags with: -XX:+UseZGC -XX:+ZGenerational. Keep your -Xms and -Xmx values the same.

8. When to Upgrade Your Hosting

If you've optimized settings, reduced entities, pregenerated your world, and your TPS is still low, the hardware is the bottleneck. Signs you need better hosting:

  • TPS drops below 18 even with optimized configs
  • Spark shows most time spent in core server code, not plugins/mods
  • Adding more players consistently tanks performance
  • Your host uses shared vCPUs or old hardware (pre-Ryzen)
  • Chunk generation is still slow despite pregeneration

Minecraft is single-threaded for the main game loop, so single-core CPU speed matters more than core count. Look for hosts using AMD Ryzen 9 or Intel i9 processors with high clock speeds.

Having server issues beyond lag? Check our troubleshooting guide for connection errors and common problems.

9. Modded Server Tips

Modded servers face unique performance challenges because you can't use Paper's optimizations. Here's how to keep your modded server running smoothly:

Disable Unused Mods

Every mod has a performance cost, even if small. If your modpack includes 200 mods and your players only interact with 150 of them, consider removing the unused ones. Pay special attention to mods that add world generation, entities, or ticking blocks.

Check Mod-Specific Configs

Many mods have their own performance settings buried in their config files. Look in the config/ folder for options like:

  • Tick rates for machines and generators
  • Render distances for mod-specific features
  • Entity spawn limits for mod mobs
  • Chunk loading limits for quarries or similar blocks

Spark for Mod Profiling

Spark works with Forge and NeoForge servers too. Install the mod version and use /spark profiler to identify which specific mods are consuming the most tick time. This is the fastest way to find the culprit in a large modpack.

Performance Mods for Modded Servers

  • Starlight — Rewrites the lighting engine. Massive improvement for chunk generation.
  • FerriteCore — Reduces memory usage. Essential for large modpacks.
  • Lithium (Fabric) — General-purpose server optimization. Compatible with most mods.
  • ModernFix — Fixes various performance issues in modern Forge/NeoForge.

Skip the Optimization Headache

ModReady servers are pre-optimized for every modpack. We handle TPS tuning, Java flags, and performance monitoring so you can just play.

Get Started