An offline reporter for a documented, normalized subset of a saved browser trace. It identifies main-thread tasks of at least 50 ms and attributes their duration to route, script, and interaction windows where the export supplies enough evidence. Unknown or overlapping context remains an explicit unknown bucket. This makes blocking time visible without inventing source-level detail.
This walkthrough uses the tool's public README and checked-in example files. Run the command from a repository checkout with Node.js 22+.
Run the checked-in example
node bin/long-task-analyzer.mjs --root examples --input pass.json
node bin/long-task-analyzer.mjs --root examples --input blocking.json
node bin/long-task-analyzer.mjs --root examples --input unknown.json
npm run checkRead the result
The examples exit 0, 1, and 2 respectively. Stdout is one JSON report. Stderr has a fixed human summary unless --json is present. --help alone prints usage. Optional --report FILE writes exactly the stdout bytes to a separate path under --root; it refuses a symlink destination, symlinked parent escaping root, hard link or path alias to an input, including a dangling one- or two-hop input symlink. A refused or failed write emits an incomplete report on stdout and exits 2; no task is claimed as analyzed in that report.