unlag.me
Paper, Purpur, Folia · MC 1.20 – 1.21.4

Find out why your server is lagging, in about ninety seconds.

unlag.me profiles the server thread, watches redstone and entities, reads your configs, and tells you in plain English which plugin, machine or setting is costing you ticks — and what to change.

Run /unlag web in game, then enter the code it prints

The code is good for one session. Links stay live for 30 minutes, then readable for 24 hours. Player IPs, config passwords and file paths are stripped before anything leaves your server.
Sign in instead to keep your servers linked permanently.

STEP 01

Drop in the jar

One plugin, no dependencies to install, no ports to open. It connects outbound only.

STEP 02

Run /unlag web

It profiles for a few minutes and prints a code and a link in chat. Either one opens the dashboard.

STEP 03

Fix what it found

Findings are ranked by how much time they cost, each with the evidence and the exact change to make.

Everything a profiler does — plus the things it doesn't

Stack sampling and flame graphs are table stakes. The reason people keep it installed is the four modules underneath them.

Sampling profiler

Thousands of stack samples a second, merged into a call tree with Minecraft-aware labels, so a frame reads as a plugin and an event — not a raw class name.

Call trees · flame graph · per-thread

Plugin accounting

Every plugin ranked by the milliseconds it adds to each tick, with its listeners, scheduled tasks and database queries broken out.

34 plugins · ms/tick · query counts

Memory & GC

Heap over time, every collection with its pause length, and leak candidates — classloaders still held after a reload.

GC timeline · pools · leak check

Redstone detector

Counts redstone events per chunk per tick, not components on the ground. Finds the one clock costing you 12 ms and throttles it without breaking the build.

Not in Spark · live heatmap · throttling

Entity & farm pressure

Mobs and dropped items ranked by tick cost rather than count, with clustering that names the farm instead of listing 4,000 items.

Not in Spark · per-chunk · farm detection

Config advisor

Reads paper, spigot and bukkit configs, then recommends changes based on what it measured on your server — with a diff, a backup and a one-click revert.

Not in Spark · per server type · applies safely

Exploits & security

Crash packets, NBT and book abuse, duplication patterns, exposed RCON, wildcard permissions and plugin versions with published exploits.

Not in Spark · anti-xray · anti-VPN

Login timing

The join sequence split into stages — auth, plugin handlers, permission lookups, data load, chunk send — so slow logins have an owner.

Not in Spark · per-stage · per-plugin

Auto-response

Rules that act on their own: if TPS drops below your line, cut spawn ranges, throttle redstone, clear item piles — and tell staff exactly what it did.

Not in Spark · in game · staff alerts

In the browser

The full picture, on a screen big enough to read it. Share a link with a plugin author or a host without giving anyone access to your server.

  • Live session while you watch, readable for 24 hours after
  • Findings ranked by cost, each with its evidence
  • Advanced view for the full call tree and raw counters
  • Nothing identifying leaves the server

In the game

It keeps working when nobody is looking. Staff get told the moment something starts costing ticks, and the server can defend itself.

  • Alerts in chat and Discord for redstone spikes and TPS drops
  • "If TPS < 17, cut spawn range and throttle redstone" rules
  • Every automatic action logged and announced to staff
  • The same numbers in an in-game GUI, no browser needed
CONNECTING

Connecting…

waiting for the server…
Players
peak today —
Plugins
 
Worlds
— chunks
Findings
 
Ticks per second · last 60 seconds
/ 20
Waiting for the first snapshot from your server.
−60s−45s−30s−15snow
Past 7 days

Worst TPS per day

Tick time (MSPT)
ms
Budget is 50 ms.
Heap used
 
Longest GC pause
ms
 
Entities loaded
 
Shape of the last few minutes

Tick time distribution

Diagnosed automatically · updating live

What is wrong

Click a row to expand

Beyond the profiler

The detectors that are not in Spark. Each one is a full tab — this is their current state.

Profiler

The sampler looks at the server thread on a fixed interval and counts what it sees. Widths are share of samples.

Server thread

Call tree

Sort
Percent of
Advanced raw

Threads

Advanced raw

Event dispatch

Plugins

Ranked by the share of server-thread samples they appear in.

Measured from every plugin's join handlers

Login timing

Memory

Heap, pools and collection pauses, read from the JVM.

Heap used · last 4 minutes
Waiting for memory samples.
−4m−3m−2m−1mnow
Most recent

GC pause lengths

Memory pools

Collections

Redstone

Counted as events fired per chunk, as they fire — not components sitting on the ground. A museum build with 900 components costs nothing; a twelve-block clock can cost everything.

Activity heatmap

Around the busiest chunk

quietrunawayevents / second / chunk

Hotspots

by events/s
Advanced raw

Event breakdown

From /unlag redstone scan

Components built

Entities

What is loaded, and where it is piled up. Bukkit exposes no per-entity timing, so these are counts — the densest chunk is almost always the one worth visiting.

By type

by count

Clusters

By world

Config advisor

Every recommendation carries a number measured on this server. Settings already correct are listed as correct rather than dropped.

Tune recommendations for

Server type

Recommendations

Built from this server's heap, pauses and core count

Start-up command

Advanced raw

JVM flags in use

Auto-response

What the server does on its own when nobody is watching. These are the rules that exist in the plugin, with their real thresholds.

Evaluated every second

Rules

Since this server started

Action log

Security

The configuration mistakes that get servers taken over, and the state of the protections this plugin runs.

Packet decode and handle layer

Exploit protection

Configuration audit

Ore mining rates

vs this server's median