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.
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.
One plugin, no dependencies to install, no ports to open. It connects outbound only.
/unlag webIt profiles for a few minutes and prints a code and a link in chat. Either one opens the dashboard.
Findings are ranked by how much time they cost, each with the evidence and the exact change to make.
Stack sampling and flame graphs are table stakes. The reason people keep it installed is the four modules underneath them.
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.
Every plugin ranked by the milliseconds it adds to each tick, with its listeners, scheduled tasks and database queries broken out.
Heap over time, every collection with its pause length, and leak candidates — classloaders still held after a reload.
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.
Mobs and dropped items ranked by tick cost rather than count, with clustering that names the farm instead of listing 4,000 items.
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.
Crash packets, NBT and book abuse, duplication patterns, exposed RCON, wildcard permissions and plugin versions with published exploits.
The join sequence split into stages — auth, plugin handlers, permission lookups, data load, chunk send — so slow logins have an owner.
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.
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.
It keeps working when nobody is looking. Staff get told the moment something starts costing ticks, and the server can defend itself.
No history yet. A row appears for each day the server runs.
The detectors that are not in Spark. Each one is a full tab — this is their current state.
The sampler looks at the server thread on a fixed interval and counts what it sees. Widths are share of samples.
Ranked by the share of server-thread samples they appear in.
Heap, pools and collection pauses, read from the JVM.
No collections recorded yet.
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.
No redstone has fired since the dashboard connected.
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.
Every recommendation carries a number measured on this server. Settings already correct are listed as correct rather than dropped.
What the server does on its own when nobody is watching. These are the rules that exist in the plugin, with their real thresholds.
The configuration mistakes that get servers taken over, and the state of the protections this plugin runs.