Reads jstack-style Java thread dumps and points at what is wrong.
One HTML file. Runs in your browser.
| Before using it | After using it |
|---|---|
![]() |
![]() |
Parsed in the browser. No upload, no backend, no analytics, no external request — not even a font. Save the page and it works offline.
Reads both layouts:
"name" - Thread t@N "name" #N ... tid=0x... nid=0x...
| Findings | What looks wrong, ranked. Start here. |
| Pools | Which pools are saturated, and what their busy threads do. |
| Population | Which thread groups exist and how big they are. |
| Top frame | Where threads sit right now, most crowded first. |
| States | State counts, plus a Thread.State reference. |
| Creation order | Threads in dump order. Leaks show up as a growing tail. |
| Locks | Who waits on which lock, and who holds it. |
| Stack search | Regex over full stacks. |
| Compare | Two dumps: what grew, what went away. |
Most checks are generic: a pool with every worker busy, threads piling up in one frame, several waiters on one lock, a deadlock the JVM reported itself.
Checks that match frames of a specific library carry a signature: badge, so a library-specific guess never reads as a universal truth. Only HikariCP ships built in; narrower ones live in rules/.
Add your own without touching the source. Findings > Custom rules > + New rule. Write the body of function (d, helpers):
var starved = d.threads.filter(function (t) {
return t.state === "BLOCKED" && t.top.indexOf("com.acme.cache.") === 0;
});
if (starved.length < 5) return [];
return [{
level: "alert",
title: nThreads(starved.length) + " blocked on the cache lock",
text: "Find the holder in the Locks tab first.",
items: starved
}];
Return one finding, an array of them, or nothing when the dump does not match. Every thread field and helper is listed in the editor, under How to write a rule, and in the full reference.
Rules live in localStorage: your browser only, never sent anywhere. A rule that throws becomes its own finding card instead of breaking the tab.
Ready-made rules for specific libraries: rules/. Paste one into the form to use it.