Paste your timeline
Paste lines that each start with a time, then click Build timeline.
Response metrics
| Time (UTC) | Phase | Event |
|---|
Silent gaps
Postmortem draft (Markdown)
Want it in a script?
Same logic, zero dependencies. It reads one local file (or stdin) and nothing else:
node postmortem.mjs incident.txt # metrics
node postmortem.mjs incident.txt --md --title "Checkout outage" > postmortem.md
node postmortem.mjs incident.txt --max-ttr 60m # exit 1 if resolve took longer
Get postmortem.mjs and classify.mjs from the repo. Node 18+, nothing to install, no network calls.
Common questions
How do I calculate MTTR from an incident log?
Mark when impact started and when service was restored, then subtract. This tool does it for each phase: time to detect is start to the first alert or report, time to acknowledge is detection to a human picking it up, time to mitigate is start to the first rollback or workaround, and time to resolve is start to the all-clear. MTTR across many incidents is the average of the resolve times.
How does it know which line is which phase?
It looks for plain wording such as alert fired, acknowledged, rolled back and incident closed. If a line is misread, begin it with a tag: start:, detected:, ack:, mitigated: or resolved:. A tag always wins over guessing.
What timestamp formats work?
Each line starts with a time such as 14:09, 14:09:30 or 2026-10-03 14:09, optionally followed by Z or an offset like +02:00. Lines with only a time use the date of the last dated line, and a time that goes backwards is read as the next day.
Does this tool upload my incident log?
No. The log is read in this page and never leaves your device. The page makes no network calls, and the CLI reads one local file.
Is the postmortem draft finished?
No. It fills in the timeline and metrics and leaves impact, root cause and action items for your team to write. It is a starting point and not professional advice.