MINECRAFT

Minecraft Server Lag in 2026: Diagnose TPS, MSPT, CPU and RAM

A practical, evidence-first guide to fixing Minecraft Java server lag: read TPS and MSPT, profile with spark, tune chunks, and diagnose CPU, memory and plugins.

A player breaks a block and waits for it to drop. Another person walks through a doorway and suddenly snaps backward. Someone else complains that Minecraft is running at 35 FPS. The complaints sound similar, but they may have three different causes. Throwing more RAM at all three problems will not solve them.

This guide shows you how to find the actual bottleneck on a Minecraft Java server. We will measure TPS and MSPT, use the spark profiler, distinguish server lag from client FPS drops and network latency, and make controlled changes you can reverse. The workflow works with a Volyx-hosted Minecraft instance if the relevant server software, commands and file permissions are available; it also applies to many other Paper and compatible Java servers.

The short answer: a healthy Minecraft Java server aims for 20 TPS. To sustain that rate, the game loop needs to complete ticks within an average budget of roughly 50 milliseconds. Measure first, then optimize the expensive work—not the number that looks most alarming in a dashboard.

Safety first: Back up the world and configuration before changing server software, plugin sets, or world-related settings. If you use Volyx, check your server’s available Coins, resource limits and renewal conditions separately. This guide does not assume that every account has the same CPU, RAM, storage or uptime guarantees.

Quick diagnosis: which kind of lag is it?

Use this table before touching the server settings. A lag report is useful only when you can reproduce what the players experienced.

What players noticeMost likely area to investigateBest first check
Mobs stop moving, block breaks are delayed, redstone is slowServer tick performance/spark tps and MSPT during the event
Teleporting or rubber-banding with otherwise normal ticksNetwork, packet loss or locationPing, route and whether others are affected
One player’s graphics stutter while everyone else is fineClient FPS or client modsF3 performance details and client settings
Lag appears when someone explores new terrainChunk generation and disk/CPU workspark profile during exploration
Lag starts after installing a pluginPlugin task or compatibilityCompare before/after and collect a spark profile
Lag begins after loading a large mob farmEntity AI and tickingProfile with players near the farm
Periodic freezes followed by normal playGarbage collection, saves, backups or scheduled workProfile the spikes and check console timestamps

A three-minute checklist

  1. Ask when the lag happens, how many players are online, and whether everyone feels it.
  2. Check server console for crashes, excessive warnings, out-of-memory messages, or repeated save errors.
  3. If the server runs a compatible Paper version, execute /spark tps in-game as an operator, or use the console form spark tps.
  4. Record TPS and MSPT while the server is actually lagging; an idle sample can hide the cause.
  5. Keep that measurement, change one thing, test again under similar conditions, and roll back if the result gets worse.

Original Volyx diagram showing normal ticks versus a slow tick exceeding the fifty millisecond budget

TPS versus MSPT: the two numbers that matter

TPS stands for ticks per second. Minecraft normally targets 20 simulation ticks each second. If work consistently takes longer than the tick budget, the server cannot maintain that pace. The result can be delayed entity movement, slow farms and interactions that appear to happen late.

MSPT means milliseconds per tick: roughly how much work the server spends processing an individual tick. Lower is generally better, although real servers have variation. A server might show 20 TPS while its MSPT climbs from 15 ms to 45 ms. Nothing may look broken yet, but there is less headroom for a raid, a new chunk, a backup, or several players entering busy areas.

Illustrative measurementWhat it suggestsYour next move
20 TPS, 18 MSPTSignificant spare tick-time budgetCheck network/client if players still complain
20 TPS, 46 MSPTNear the budget ceilingProfile during busy moments; look for expensive tasks
17 TPS, 62 MSPTServer tick loop strugglingRun spark with the issue active; isolate the hot path
20 TPS average, occasional 180 ms spikeIntermittent stutter despite a good averageInvestigate spike events, GC, saves and generation

These are teaching examples, not measurements taken from Volyx or any other provider. The official spark guide explains how to read TPS, MSPT, median and high-percentile tick timings: TPS and MSPT documentation.

Why 20 TPS does not always mean perfect performance

Two servers can both report 20 TPS. One may use half its available tick budget; the other may already use almost all of it. Average TPS also disguises occasional expensive ticks. If players complain about a short freeze every two minutes, look for spikes, not only long-term averages. The profiler’s timings and sampling report provide much more context than a single green number.

TPS is not ping, and ping is not FPS

Ping measures network round-trip delay. A player far from the server can experience noticeable input delay even when the server runs at a steady 20 TPS. FPS is the rendering rate on that player’s computer. Resource packs, shaders, weak GPUs or client mods can reduce FPS without affecting server tick speed. Test each symptom separately before recommending a plan upgrade.

Step-by-step: diagnose Minecraft lag using Volyx

The following steps use the familiar Pterodactyl-style workflow in Volyx. Labels and access can change depending on your server type, runtime and account. If a command is unsupported, verify your Minecraft software and permissions before trying an alternative.

Step 1 — Open the server console and identify the workload

Sign in at Volyx, open your server through the panel and select Console. Write down the server software (Vanilla, Paper, Purpur or a modded loader), Minecraft version, Java runtime, configured memory allocation and current player count. You do not need to post tokens, IP allowlists or private file contents in a public support channel.

Look for clear warnings such as a server being behind schedule, a repeated plugin exception or a failure to save world data. One warning at startup is not automatically the source of lag: compare the timestamp with the actual event. If your server is suspended or expired, first resolve that condition; a suspended instance is not a performance symptom.

Save this baseline: server version, player count, approximate lag time, TPS/MSPT if supported, and the actions that reproduce the problem. Repeating a test in the same world area is more useful than making random adjustments.

Step 2 — Measure TPS and MSPT on Paper

For a recent compatible Paper server, run:

/spark tps

The command is provided by spark. Paper bundles spark starting with Paper 1.21, and Paper recommends spark over the older Timings workflow. On systems without bundled spark, you may need an appropriate separately installed spark build, subject to your server software’s compatibility and installation permissions.

If you enter the command in a Pterodactyl console, the same command may need to be entered without the leading /:

spark tps

Do not conclude that a server is healthy from a reading taken when nobody is online. Run the command again during normal use and during the problem.

Step 3 — Capture a profiler report while the problem occurs

When lag is active, capture a short sample:

/spark profiler start --timeout 300

This requests a five-minute profile. If you need to focus on stalls above approximately 100 milliseconds and your installed spark version supports it, Paper documents this example:

/spark profiler start --only-ticks-over 100 --timeout 300

Profiling has an overhead, so use a limited capture window rather than leaving diagnostic collection running indefinitely. The report URL can be sensitive: it may reveal server configuration, plugin names, versions and operational details. Share it only with trusted administrators or support staff who need it.

Step 4 — Read the profile instead of guessing

Look for the highest-cost areas during the lag window. Does the report point to a plugin event handler, excessive entities, new-chunk work, scheduled tasks, world saves or Java garbage collection? A large method or stack in the report is a clue, not proof that the entire plugin is broken. Compare multiple samples and match them to what players were doing.

If the profile indicates plugin work, test in a safe copy or maintenance period with one suspected plugin disabled at a time. If the expensive work occurs when entering unexplored terrain, test chunk generation separately. If most time is in entity ticking, inspect farms and mob concentrations before buying more RAM.

Step 5 — Make one reversible change

Use a short experiment: write down before → change → after. Example: measure 55–60 MSPT while four players explore; lower simulation distance from 10 to 6; restart as required; then retest with the same four players doing similar work. If the measurement improves but farms and gameplay become unacceptable, restore the previous setting. Performance is a trade-off, not just a leaderboard of low numbers.

Step 6 — Confirm the fix across different sessions

Check the result once under a normal player load and again during the activity that triggered the issue. Look for fewer spikes and sustained TPS, but also confirm there are no new side effects: farms still work, mobs behave as expected, chunks load acceptably and backups still complete. A change that produces great MSPT by disabling useful mechanics may not be an improvement for your community.

Original Volyx workflow illustration: reproduce, measure, profile, change one setting, and compare

CPU, RAM, storage and network: which resource is actually limiting you?

Minecraft Java’s primary server tick work can be sensitive to single-thread performance, even though the Java process and some surrounding work use other threads. A large CPU percentage across all cores does not describe which thread is saturated. The opposite is also true: a single busy game thread can cause lag while the machine’s total CPU usage looks moderate.

RAM holds the live world state, loaded chunks, entity data and Java heap. Too little memory can cause allocation pressure or crashes. Allocating excessive heap is not a universal cure: it can reduce memory available to the container and operating system, and may change garbage collection behavior. Never set Java heap sizes above your panel’s actual memory allowance. If your hosting plan manages launch flags automatically, avoid overriding them without understanding the configuration.

Storage matters during world loads, saves, logging and backups. Full or slow storage can create stalls; enough available space is necessary for safe backups and routine writes. Check the server’s allocated disk space rather than assuming the VPS host’s global free space is available to your instance.

Network is especially relevant when one region or player reports problems. High packet loss, unstable Wi-Fi or geographical distance can produce rubber-banding with healthy TPS. Testing another player, another connection and the same time window helps distinguish causes.

ResourceTypical clueBetter action than guessing
CPU / tick threadMSPT rises with mobs, redstone, plugins or generationProfile the hot workload and reduce its cost
MemoryOut-of-memory logs, repeated GC pressure, crash near allocation limitReview heap allocation and actual process usage
StorageStalls during saves, full quota, slow backupsCheck free space, save frequency and I/O activity
NetworkRegional rubber-banding with stable 20 TPSCompare latency and packet loss among players
Client graphicsLow FPS affecting one client onlyCheck shaders, drivers, render distance and client mods

Why adding 2 GB RAM might change nothing

Imagine a server with spare heap memory and a plugin spending too much time scanning entities every tick. Doubling its memory does not remove that per-tick computation. A profiler would show where the time is spent; the correct fix might be a plugin update, configuration change, or redesign of a costly task. Conversely, if the heap is too small and garbage collection is frequent, a carefully sized allocation could help. The evidence determines the recommendation.

Tune view distance and simulation distance carefully

The two settings are related but serve different purposes. View distance controls the chunk radius sent to clients. Simulation distance controls how far many gameplay systems—including mob behavior and block ticking—stay active around players. Larger values can increase server work, especially with several players spread across different parts of the world.

Find server.properties in your Volyx server’s Files page, download a backup copy, and locate the keys below. These are example starting values for a controlled test, not global recommendations:

view-distance=8
simulation-distance=6

If your server currently uses 10 for both, a moderate reduction can be worth testing. The exact impact depends on the Minecraft version, software, world design, number of players and mechanics your community relies on. Read the impact before applying the change: lowering simulation distance may affect where farms run and how far mobs remain active. Save the file and perform a normal restart if your server software requires it.

Avoid the extreme approach: setting simulation distance to the minimum just to produce a green graph can break gameplay expectations. Begin with a modest adjustment, profile again, and document any trade-offs.

Chunks and exploration: why new terrain can cause spikes

A peaceful spawn area may run smoothly, while flying rapidly into unexplored terrain produces stalls. Generating new chunks involves terrain generation, structures, entities, lighting and writes. Multiply that by several players moving in different directions and the load changes dramatically.

If profiling associates the spike with generation, consider lowering the rate at which players explore, reducing world/view distances, or preparing new world areas before a busy event using software-compatible pregeneration tools. Pregeneration itself consumes substantial resources; schedule it during quiet periods, respect disk limits, and keep a world backup. Never run an arbitrary world conversion or pregeneration script against production without testing it first.

Do not delete world region files in an attempt to fix lag. They contain player-built terrain and structures. If you need to remove or regenerate chunks, that is a separate, backup-first maintenance project.

Entity farms, hoppers and redstone: the expensive neighborhoods

Some performance problems are geographically concentrated. One collection of villagers, item entities and hoppers may account for a disproportionate amount of tick work when a player stands nearby. Inspect those locations while profiling; then review whether the design can be simplified without changing the experience everyone expects.

  • Entities: check oversized animal or villager collections, item accumulation and constantly running mob grinders.
  • Hoppers: evaluate large hopper networks and repeated item movement, especially around farms and sorting rooms.
  • Redstone: identify high-frequency clocks and contraptions that run continuously without serving active gameplay.
  • Worlds and dimensions: reproduce lag separately in the Overworld, Nether and End; one dimension may be responsible for most expensive work.
  • Player-created mechanisms: discuss adjustments with owners before removing farms or limiting mechanics unilaterally.

A single screenshot of a crowded farm is not proof. Use measurements, timestamps and a repeatable test. Sometimes a creative build is perfectly fine, and an unrelated plugin is causing the trouble.

Plugins and mods: choose the right troubleshooting path

Paper is a plugin-oriented Minecraft Java server implementation, with an ecosystem compatible with many Bukkit/Spigot-style plugins. Purpur builds on the Paper family with additional customization. Fabric is a mod loader that targets a different ecosystem. Vanilla preserves Mojang’s base dedicated-server behavior without a third-party plugin stack.

They are not interchangeable packages. A Fabric mod cannot simply be dropped into a Paper plugins folder, and a Paper plugin cannot be assumed to work in a Fabric mods directory. Your software choice should follow the features your community needs, not a blanket claim that one is always faster.

Server typeBest fitPerformance investigation
VanillaMostly unmodified Java survival and controlled behaviorUse available built-in measurements and compatible tooling
PaperPlugin-based Java servers seeking a mature diagnostic ecosystemUse bundled spark on supported releases; audit plugins
PurpurPaper-style server with more gameplay configuration choicesProfile first; inspect custom settings and plugin compatibility
FabricModded or lightweight mod-loader setupsUse a spark build compatible with the loader/version and profile mods

A controlled plugin isolation test can help when a crash or lag started right after an update. Keep an inventory of installed versions, review their release notes, and temporarily disable only the suspected component on a backup or staging copy when feasible. Do not delete plugin data folders as a debugging shortcut; they may contain the configuration and player information you need to restore.

A practical before-and-after record

Suppose a new minigame plugin appears to coincide with tick spikes. Record the player count, reproduce the minigame activity, collect a spark sample, and note what code dominates it. Update or reconfigure the plugin in a controlled test. Re-run the same event. If a reduction in expensive work appears in the report and players no longer experience stalls, you have a stronger explanation than “the RAM upgrade fixed it.”

Should you change Java flags or the server jar?

A popular optimization video may suggest ten JVM flags, a custom garbage collector, a huge heap and a server jar change simultaneously. That makes it nearly impossible to identify which change helped or hurt. Start with a supported Java version for your specific Minecraft/server release, the host’s recommended startup settings, and a backup. If a Paper version needs a particular Java runtime, follow its current installation documentation rather than copying a command for an unrelated Minecraft release.

Changes to JVM flags can alter garbage collection, memory usage and diagnostics. Paper’s own documentation cautions that startup properties and flags have side effects. For a small server, identifying a runaway plugin often delivers more value than an exotic JVM configuration. Consider jar migrations separately because they can affect plugins, configuration keys and gameplay behavior.

What to check in Volyx before increasing resources

Volyx uses a free-hosting model supported by Coins and provides a Pterodactyl-based panel for file, console and server management. That makes it practical to inspect the actual instance rather than relying on general hosting claims. The resource allocation shown in your own panel—not a marketing example from another provider—is the correct starting point.

In Console: look for tick warnings, crashes and recurring errors. In Files: review server.properties, plugin configuration, log files and the world backup plan. In Startup: verify the Java runtime and launch arguments available to your server type. In Backups: check whether the available backup feature and quota cover the size of your world. In your account: check available Coins, renewal requirements, the server’s current status and any limits that might affect operation.

No article can truthfully promise the same RAM, CPU allocation, storage or 24/7 availability for every Volyx account without verifying the actual plan and current conditions. If profiling genuinely shows a resource bottleneck, consult the available options in your dashboard. If the issue is a specific farm or plugin, more resources may only postpone the problem.

A reusable diagnostic note for support

When asking for help, include a short report with these fields (remove sensitive values before sharing):

Software: Paper / Purpur / Fabric / Vanilla
Minecraft version:
Java version:
Player count when lagging:
TPS and MSPT during the incident:
When the issue began:
What reproduces it:
Recent updates or plugins:
Spark report: private link shared only with trusted support
Changes tested and measured:

This saves time and makes it possible to compare your current server with yesterday’s behavior. Avoid sending tokens, database credentials, session cookies or unredacted private logs.

Common fixes that do not work—and why

Popular shortcutWhy it can disappointWhat to do instead
“Add more RAM”Tick time may be CPU/plugin-bound rather than heap-boundLook at MSPT and profiling data
“Switch to the fastest jar”Compatibility and actual workload matter more than brandingTest a compatible server build on a backup
“Set every distance to minimum”Gameplay, mob behavior and farms can changeReduce gradually and retest
“Disable every plugin at once”Removes the ability to identify the culprit cleanlyIsolate changes one at a time in staging
“Clear all region files”Risks destroying player worldsKeep world files; diagnose generation separately
“Install five performance plugins”Adds complexity and may introduce conflictsProfile, choose one compatible solution, compare
“Ignore healthy TPS because someone has 30 FPS”Client rendering and server ticks are differentAsk which player/client is affected
“Use old /timings reports for everything”Paper now recommends spark, and Timings is deprecated on current releasesFollow version-specific spark documentation

Original Volyx diagnostic illustration comparing CPU-bound, memory-bound, world-generation and network symptoms

A safe optimization plan for your first hour

You do not need an afternoon of random file edits. Try this sequence:

Minutes 0–10 — Define the problem. Ask for player reports with timestamps, map locations and the kind of delay. Separate low FPS from actual tick lag. Capture an initial TPS/MSPT reading if available.

Minutes 10–25 — Profile the workload. Use spark during the lag, and identify whether plugin work, entity ticking, world generation or periodic tasks dominate. Avoid the temptation to tune everything at once.

Minutes 25–35 — Back up and adjust one variable. This might be one plugin setting, one distance value, or a controlled change to a farm. Write down the original value and verify that your world backup is usable.

Minutes 35–50 — Retest realistically. Use comparable player counts and activities, and check both average MSPT and slow ticks. Recheck user experience, not just dashboards.

Minutes 50–60 — Decide. Keep the change only if it consistently helped without unacceptable side effects. Otherwise restore the original value and test the next most plausible cause.

If you cannot access the needed profiling tools under your server type or permissions, document the symptoms and request support rather than attempting unsafe workarounds.

Frequently asked questions

What is a good TPS for a Minecraft Java server?

The usual target is 20 TPS. A healthy number during idle time does not guarantee the server stays responsive during exploration, a large raid or a crowded farm. Track the number when players experience lag and examine MSPT for how much spare capacity exists.

Is 50 MSPT bad?

Roughly 50 milliseconds is the tick-time budget at 20 TPS. Consistently spending more than that means the server can struggle to keep up. Occasional spikes require context: look at how frequent they are, whether players notice them and what the profiler records.

Can a server have 20 TPS and still lag?

Yes. Players may have network latency or low client FPS. The server may also maintain 20 TPS on average while delivering occasional expensive ticks that cause stutter. Look at timing distributions and reproduce the symptom.

Does more RAM increase Minecraft TPS?

Only when memory pressure contributes to the problem. If a plugin or entity workload exhausts tick time, allocating additional RAM will not remove the underlying computation. Check memory usage, garbage collection behavior and spark samples first.

Should I lower view distance or simulation distance first?

Both can affect load. Simulation distance influences how far gameplay mechanics remain active; view distance influences which chunks are sent to players. Make a modest change to one setting, document the impact, and check gameplay side effects before changing the other.

Is Paper faster than Vanilla for every server?

No universal performance claim fits every world and configuration. Paper offers tools and optimization choices that are useful for many plugin servers, but mod compatibility, version, world design and player behavior influence actual results. Test under your own workload.

Does Volyx guarantee 24/7 Minecraft hosting for free?

Do not assume that. Volyx’s hosting and Coins model is subject to the resources and renewal rules shown in your account. Check the current server status, resource allocation, Coins balance and applicable terms for your instance.

Why does my server lag when players explore?

Unexplored terrain can require new chunk generation, lighting and saving. If a spark report shows generation work rising during exploration, lower unnecessary chunk load or consider safe, version-compatible pregeneration during a quiet period with backups.

What is spark, and do I need to install it?

spark is a performance profiler. Paper bundles it starting with version 1.21. Other server types or older versions may need a compatible standalone plugin or mod. Check the software and the profiler documentation before adding files.

Can plugins cause lag even when memory usage is low?

Yes. A costly repeating task, entity scan, database interaction or event handler can consume tick time without filling the heap. Profile the problematic period and confirm with a controlled change or test copy.

What if only one Minecraft player experiences lag?

Compare that player’s FPS, ping, packet loss, distance to the hosting region and installed client mods. If server TPS/MSPT is healthy and everyone else is fine, a client or network issue becomes more likely—but still verify rather than assuming.

Should I remove world files to fix lag?

No. Removing world region data can destroy builds and player progress. Keep recoverable backups and diagnose disk, chunk-generation or world corruption problems independently before performing any potentially destructive maintenance.

Conclusion: measure first, optimize second

A server with lag is not automatically an underpowered server. TPS tells you whether the game loop keeps pace. MSPT tells you how much work ticks require. A profiler helps reveal which code or game activity spends that time. With those three pieces of information, you can make changes that are explainable, testable and reversible.

If your Minecraft world runs on Volyx, start with your server console and actual allocated resources. Back up the world, record the baseline, test one fix, and verify it under the same conditions. That is a better long-term habit than changing ten settings and hoping the lag disappears.

Ready to check your server? Open the Volyx dashboard to inspect your instance, or read the Volyx Minecraft lag guide for additional platform context. Also see the Pterodactyl beginner’s guide for core panel concepts.

Technical sources and further reading

Editorial note: this guide covers Minecraft Java Edition. The exact commands and server behavior can differ across server software and Minecraft versions. Sample values illustrate a method, not measured Volyx benchmarks.

Keep learning.

Explore more in-depth articles with code, visuals, and practical walkthroughs.

Browse all articles ↗