Fixing Minecraft server lag: TPS, RAM, and disk fixes
Diagnose Minecraft server lag the right way: check TPS first, then RAM and disk, and only upgrade once you know which one is the real bottleneck.
What "lag" actually means in Minecraft
"Minecraft server lag" gets used for three different problems, and the fix depends on which one you have. TPS lag is the server itself running slow: mobs glide, hits don't register, redstone stutters. Ping lag is your connection to the server: everyone else is fine, you're rubber-banding. Render lag is your own client struggling with chunks: low FPS, frozen frames. This doc is about the first one, because that's the one the host can actually fix.
Step 1: check your TPS
TPS (ticks per second) is the server's heartbeat. A healthy Minecraft server runs at 20 TPS. Anything lower means the world is falling behind real time, and that's what your players feel as lag.
Two ways to check:
- 1.20+ vanilla and most modpacks: run
/tick queryin-game or from the dashboard console. It prints current TPS and average tick time. - Spark profiler plugin or mod: install Spark from Modrinth or CurseForge, then run
/spark tps. Works on Paper, Fabric, Forge, NeoForge, and Bukkit derivatives.
If TPS sits at 20.0, your server isn't lagging, your connection or client is. If it's at 15 or below, keep reading.
Step 2: find the TPS killer
Three culprits cover the vast majority of cases:
Entity pile-ups
A mob farm with no kill chamber, a villager breeder that ran for a week, or a chunk full of dropped items will tank TPS instantly. Fly out to your farms with /tp and look at the entity count. In Spark, /spark tickmonitor highlights entity-heavy chunks.
A greedy mod or plugin
One badly behaved addon can eat 80% of your tick time on its own. Run:
/spark profiler --timeout 60
Wait a minute, then open the link Spark prints. The flame graph shows exactly which mod or plugin is hogging the tick. Common offenders: outdated chunk pre-generators, lag-machine dynmap configs, and any mod doing world scans every tick.
Chunk-loading abuse
Too many chunkloaders, an explorer flying at full elytra speed, or auto-generating world borders will thrash your disk and CPU. Limit chunkloaders, pre-generate the world with Chunky, and set a sensible world border.
Step 3: check RAM
Open Dashboard → your server → Stats panel. The RAM graph is live. If you're sitting at 95% or higher most of the time, the JVM is spending more cycles garbage-collecting than ticking the world, and no amount of plugin tuning will save you. Upgrade.
The Java tier ladder, for reference:
- Vanilla 3 GB is fine for survival with a few friends, no mods.
- Modded 6 GB handles small modpacks (Create, Better Minecraft lite).
- Heavy 10 GB is the floor for ATM, RLCraft, and most kitchen-sink packs.
- Extreme 14 GB for huge packs, big player counts, or both.
Bedrock is a separate ladder (Lite 2 GB up to Max 12 GB) and uses less RAM per player; 95% sustained still means upgrade.
Step 4: check disk
If your modpack's world folder and mod cache exceed your plan's disk allocation, every chunk load becomes a stutter. The Stats panel shows disk usage next to RAM. Modpacks like ATM 9 and FTB Skies want plenty of headroom; if you're at 90%+, that's your lag.
Cleaning helps short-term: prune old backups (Files → Backups), delete unused dimensions, run /forceload remove all. Long-term, upgrade.
Upgrade vs optimise: a one-line triage
If TPS is fine but ping is bad, it's your connection, not the server. If TPS is bad and RAM is below 80%, optimise (Spark, entity cleanup, chunk pre-gen). If TPS is bad and RAM sits at 95%+, upgrade. Don't guess: check the graph.
Playing a different game?
These steps are Minecraft-specific (Java and Bedrock). Other games have their own lag patterns, so we've split troubleshooting per game:
- Rust troubleshooting
- ARK: Survival Ascended troubleshooting
- CS2 troubleshooting
- Valheim troubleshooting
- Palworld troubleshooting
And if your Minecraft server isn't lagging, it just won't boot, see Minecraft server won't start.
Last updated 2026-05-20. Notice a mistake? Tell us.