HomeJavaModsLagXpert Free Java/Bedrock
LagXpert Free Java/Bedrock
⚡ LagXpert Free v2.7 — Stop Guessing Why Your Server Lags

Most lag plugins tell you your TPS. LagXpert tells you which chunk is causing it, why, and fixes it for you.

Free. No premium tier. No dependencies. Java and Bedrock. Real Folia support.

The Feature Nobody Else Has: Actual Lag Diagnosis

You know the drill. TPS drops to 14. You check
Code (Text):
/tps
. It says 14. Now what?

You start guessing. Maybe it's a mob farm. Maybe someone built a hopper monstrosity. Maybe it's a redstone clock. You fly around the map hoping to spot something, or you restart and hope.

Code (Text):
/lagxpert diagnose
ends that.
It scans every loaded chunk, ranks them by how much pressure each one is actually creating, and tells you in plain English what's wrong:

Load is concentrated: the top 5 chunks account for 78% of all detected pressure. Fixing a handful of locations will likely resolve most of it, starting with world at -1240, 512 (94 hoppers).
Click to expand...
The most common violation is 'hoppers', over its limit in 7 of the top chunks. Lowering that limit, or dealing with the builds responsible, will have the widest effect.
Click to expand...
TPS is 15.2 but no chunk exceeded its limits. The cause is likely outside LagXpert's scope: another plugin, world generation, disk I/O, or an undersized host.
Click to expand...
That last one matters. LagXpert will tell you when the problem isn't something it can fix, so you stop looking in the wrong place.

Why the ranking is actually useful

Other tools rank by raw entity count. That surfaces the wrong chunks. A chunk with 40 mobs where the limit is 200 is perfectly fine. A chunk with 12 hoppers where the limit is 8 is your problem.

LagXpert scores every chunk as a percentage of the limit that actually applies to it — including per-world limits and any live adaptive tightening. It also weighs how often it has already had to clean that chunk up, because a location the plugin fights with twenty times an hour matters more than one that happens to be full right now.

Diagnosing lag doesn't cause lag

Chunk snapshots are taken on the owning thread; all scoring happens asynchronously. Results are cached briefly so a command and a GUI opened together share one scan, and overlapping scans are rejected rather than queued.

️ Interactive Diagnostics GUI — Built for Bedrock From Day One

Five screens, navigable in-game:

Screen What you get
Overview Server state, TPS across 1/5/15m, memory, entities per world, the plain-language diagnosis, and the limits currently being enforced
Hotspots Ranked problem chunks, colour-coded by severity, showing exactly which metrics are over limit
Chunk detail Every measured contributor for one chunk — plus a teleport button to go look at it
Actions Full audit trail: what LagXpert did, when, where, and why
Trends Worst hour of the day, peak player count, entity growth direction and 24h projection


Real Bedrock support, not an afterthought

Bedrock players reach your server through Geyser, which translates Java inventory packets — and that translation is not lossless. LagXpert handles it properly:


The same compatibility layer is applied to the configuration GUI too, so both interfaces behave identically for Java and Bedrock players.

Autonomous Emergency Response

A four-level state machine that watches TPS and memory and acts on its own:

State What happens
NORMAL Full capacity, nothing restricted
WARNING Mob limits at 75%. Chunk preloading paused. AI distance reduced to 48 blocks
CRITICAL Mob limits at 50%. Natural spawns blocked. Item cleanup forced. Redstone clocks cut. Aggressive chunk unloading. AI distance 32
EMERGENCY Mob limits at 25%. AI distance 16. Extreme unloading. Optional custom commands


Hysteresis prevents flapping: three consecutive bad readings to escalate, five good to de-escalate, minimum time in each state. It also escalates on sustained degradation — a server pinned at 12 TPS for two minutes is an emergency in practice, even if it never crosses the raw threshold.

Every state and every response is configurable.
Code (Text):
/lagxpert emergency force-normal
is your panic button.

Natural spawn blocking is precise. It suppresses environmental spawning pressure only — spawn eggs, breeding, plugin spawns and commands keep working, because blocking those makes a server look broken rather than busy. The exact set is yours to configure, and players with bypass permission are always exempt.

Limits That Adapt to Your Server

Every per-chunk limit scales with real-time server health. When TPS drops or memory climbs, limits tighten. When the server recovers, they return to your configured values.

Two inputs are combined — continuous health (TPS + memory) and the discrete emergency state — and whichever is more restrictive wins. They're never multiplied, which would compound into unplayable values.


One-Command Optimization Profiles

Four presets you can switch between instantly:

Code (Text):

/lagxpert profile relaxed small servers, minimal restrictions
/lagxpert profile balanced the sensible default
/lagxpert profile aggressive large servers or weak hardware
/lagxpert profile performance events and crisis mode
/lagxpert profile revert undo, exactly
 
Code (Text):
revert
restores your configuration, not an assumed default — the values a profile replaces are snapshotted before anything is written. Apply a second profile on top of a first and revert still takes you all the way back to where you started.

There's an auto-revert timer too, because everyone has applied an aggressive profile during an incident and then forgotten about it.

Real Folia Support

Folia splits your server into independently ticking regions. An entity may only be touched by the thread that owns its chunk, which means no thread is allowed to sweep an entire world. Plugins that call
Code (Text):
world.getEntities()
and remove things are simply not Folia-safe, whatever their description claims.

LagXpert dispatches every entity operation per chunk through the region scheduler: item cleaning, entity cleanup, vehicle cleanup, per-chunk entity trimming, the emergency AI freeze, the diagnostics scan, even entity counting for snapshots.

Bonus for Spigot and Paper users: the same dispatch processes chunks in batches spread across ticks, turning one long stalling tick into several short ones. That matters, because these sweeps run precisely when your server is already struggling.

Per-World Configuration

Different rules for the Nether, the End, creative hubs, or any custom world. Drop a file named after the world into
Code (Text):
config/worlds/
and override only what you need — everything else inherits the global value.

Overridable per world: all 13 per-chunk block and mob limits, the total entity ceiling, chunk unload timing, chunk preloading, and TPS alert thresholds.

Full Audit Trail

Every corrective action LagXpert takes is recorded with type, world, chunk, count, trigger and timestamp — mob removals, entity cleanups, item clears, chunk unloads, blocked spawns, blocked placements, redstone cuts, explosion limits, vehicle removals, AI toggles, state transitions, config changes.

Queryable in-game through
Code (Text):
/lagxpert status
and the diagnostics GUI. When a player asks "what happened to my minecart", you have an answer.

⚙️ Everything Else

Limits & enforcement

Cleanup

Optimization

Monitoring

Commands

Code (Text):

/lagxpert diagnose [chat|refresh] Find what is causing lag and where
/lagxpert status Live performance dashboard
/lagxpert optimize Full optimization pass, before/after
/lagxpert emergency [status|force-normal] Emergency state control
/lagxpert profile [list|<name>|revert] Apply optimization profiles
/lagxpert inspect <x> <z> [world] Inspect a specific chunk
/lagxpert reload Hot-reload everything, no restart
/lagxpertgui [open|diagnostics] Interactive GUIs
/chunkstatus Your current chunk's usage
/tps [summary|detailed|memory|chunks|lagspikes|history|reset]
/clearitems [all|<world>] Manual item cleanup
/abyss Recover cleaned items
 
Permissions

Code (Text):

lagxpert.use Basic access (default: true)
lagxpert.admin Everything below (default: op)
lagxpert.admin.status Read-only dashboard
lagxpert.admin.diagnostics Read-only lag analysis
lagxpert.admin.diagnostics.teleport Teleport to a problem chunk
lagxpert.admin.optimize Run optimization (removes entities)
lagxpert.admin.emergency Emergency controls
lagxpert.admin.profile Apply profiles (rewrites configs)
lagxpert.gui GUI access
lagxpert.tps / .abyss / .chunkstatus Player-facing commands
lagxpert.bypass.* Bypass limits
lagxpert.limits.<type>.<N> Per-player custom limits
 
The fine-grained admin nodes exist so you can give a moderator read-only diagnostics without also handing them the ability to delete entities or rewrite your configuration.

Compatibility

Minecraft 1.16.5 – 26.2.x
Server software Spigot, Paper, Purpur, Pufferfish, Folia
Java 11 or newer
Bedrock Geyser + Floodgate (optional soft dependencies)
Dependencies None. bStats is bundled and optional


Installation


  1. []Drop the
    Code (Text):
    .jar
    into
    Code (Text):
    plugins/
    [
    ]Restart your server to generate the configuration files
    []Run
    Code (Text):
    /lagxpert diagnose
    to see what's actually happening
    [
    ]Adjust the
    Code (Text):
    .yml
    files, or use
    Code (Text):
    /lagxpertgui
  2. Code (Text):
    /lagxpert reload
    applies changes without a restart

Upgrading from v2.6.x? Replace the jar and restart once so the new configuration files generate. Your existing settings stay compatible and new keys use safe defaults.
Code (Text):
lagshield.yml
is no longer used and can be deleted.

️ For Developers

Code (Text):

// Count chunk contents
LagXpertAPI.countLivingEntitiesInChunk(chunk);
LagXpertAPI.countTileEntitiesInChunk(chunk, Material.HOPPER);
LagXpertAPI.getLimitForMaterial(Material.HOPPER);

// The limit actually being enforced right now, after adaptive scaling
AdaptiveThresholdEngine.getInstance().getEffectiveMobLimit(world);

// Server state, audit trail, history
EmergencyController.getInstance().getCurrentState();
ActionLogger.getInstance().getRecent(50);
PerformanceHistory.getInstance().getEntityTrend(6);

// Full diagnostics report (callback runs on the main thread)
LagDiagnosticsEngine.getInstance().requestReport(false, report -> {
report.getTopChunks(10);
report.getObservations();
});

// React to chunk overloads
@EventHandler
public void onChunkOverload(ChunkOverloadEvent event) { }
 
⭐ Why LagXpert

Completely free — no premium tier, no paywalled features, no "pro version"
Tells you the cause, not just the symptom
Acts on its own — detects, fixes, logs, and recovers without you watching
Genuinely Bedrock-compatible, with a text fallback that always works
Genuinely Folia-compatible, with per-region dispatch throughout
Zero dependencies — works the moment you drop it in
Open source — read every line before you trust it
Honest changelogs — known limitations are documented, not hidden

Links


Ready to stop guessing?

Install LagXpert, run
Code (Text):
/lagxpert diagnose
, and find out what your server has been doing to itself.

lagxprt212.jpg
lagxprt213.jpg
lagxprt214.jpg
lagxprt215.jpg
lagxprt216.jpg
lagxprt217.jpg
lagxpert12.jpg
lagxpert13.jpg
lagxpert14.jpg

Commands

Plugin details

Read from the plugin's own plugin.yml.

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

LagXpert Free Java/Bedrock is a free Minecraft Java mod. Compatible with Minecraft 1.16, 1.17, 1.18, 1.19 and newer. Downloaded 573 times (via Spigot). Download it and open it directly in the game.

Explore more