What Is Mean Time to Recovery (MTTR) and Why It Matters for Dev Teams
This article explains what is mean time to recovery (MTTR), how to calculate it with a simple formula, and how dev teams use it to spot reliability risks before they cause outages.
Mean time to recovery (MTTR) measures how long it takes a team to restore service after an incident, and it's one of the clearest signals of how resilient your engineering org really is. A low MTTR means your team detects problems, diagnoses them, and gets systems back to normal quickly. A high or erratic one usually points to gaps in monitoring, unclear on-call ownership, or risky deploy habits. This article explains what MTTR means, how to calculate it, why it's often confused with similar metrics, and how startup teams can use it to spot risk before it turns into an outage.
The Formula: How to Calculate MTTR
The math behind MTTR is simple: add up the total downtime across all incidents in a given period, then divide by the number of incidents. The result is your average recovery time per incident.
Suppose your team had four incidents in a month, and the combined downtime across all four was 8 hours. Divide 8 hours by 4 incidents and you get an MTTR of 2 hours. That number becomes more useful when you track it over multiple months and watch the trend, rather than treating any single month's figure as a verdict on your system's health.
Where teams get tripped up is defining the endpoint of "recovery." Some count recovery as the moment a service is technically restored, users can log in, transactions process, the page loads, even if the underlying root cause hasn't been fixed. Others don't consider an incident resolved until the root cause is identified and a permanent fix is shipped, which can stretch the clock by days.
Neither definition is wrong, but you need to pick one and apply it consistently. A common and practical approach for SaaS teams is to measure recovery as "service restored to an acceptable state for users," and track root-cause resolution as a separate, related metric. That keeps MTTR focused on operational response speed rather than conflating it with engineering follow-through.
You'll also want a clear internal definition of what counts as an "incident" in the first place. Degraded service, like slower response times or a partial feature outage, is not the same as full downtime, and mixing the two into one bucket without a rule for when something counts will make your engineering operational signals hard to compare month over month. Decide upfront whether a P2 incident (partial degradation) gets averaged in alongside a P1 (full outage), or whether you'll report them separately. Without that consistency, MTTR becomes a number that shifts based on how generously someone logged incidents that week, not on how your system actually performed.
MTTR vs. MTTA, MTBF, and MTTF: Untangling the Acronyms
MTTR rarely appears alone in incident reporting, and the acronyms around it get conflated often enough that it's worth separating them clearly.
Mean time to acknowledge (MTTA) measures the time between an alert firing and someone acknowledging it. It's effectively a subset of the recovery clock: the interval before remediation even starts. A team can have a fast MTTA (someone's on it within two minutes) but a slow overall MTTR if the actual fix takes hours. Tracking MTTA separately tells you whether your alerting and on-call rotation are working, independent of how good your team is at solving the underlying problem.
Mean time between failures (MTBF) measures something different altogether: how often incidents happen, not how fast you recover from them. A system with an MTBF of one incident per month and a system with an MTBF of one incident per week can both have identical MTTR numbers, but they represent very different levels of underlying stability. This is where the most common misreading of MTTR happens: a low, tight MTTR looks great in a report, but it says nothing about whether incidents are becoming more frequent. A team that resolves incidents fast but has them constantly is not necessarily healthier than a team with slower recovery but far fewer incidents overall, which is why it's worth tracking alongside broader dev team health metrics.
Mean time to failure (MTTF) is a term borrowed from hardware reliability engineering, and it applies to non-repairable systems, components that are replaced rather than fixed, like a hard drive or a sensor. It shows up in vendor materials sometimes interchangeably with MTTR, which is a mistake: software incidents are (almost always) repairable events, and MTTF doesn't map cleanly onto a deployed service the way it does onto physical hardware.
The practical takeaway is that MTTR should never be read in isolation. Pair it with MTBF (frequency) and MTTA (detection speed) to get a fuller picture of whether your incident response is actually improving or just getting better at absorbing an underlying problem that keeps recurring.
Why MTTR Matters Beyond Uptime Reports
MTTR functions as a proxy for operational maturity. A team with a consistently low MTTR usually has good monitoring coverage, clear on-call ownership, tested rollback procedures, and runbooks that don't require guesswork under pressure. A team with a high or wildly variable MTTR is often missing one or more of those pieces, and the metric surfaces that gap even if nobody has diagnosed the root cause yet.
It's also not purely an infrastructure or SRE concern. MTTR correlates with deploy practices further upstream. Large merge batches, high code churn, and rushed releases all increase the odds that an incident happens in the first place, and they tend to make diagnosis harder once something does break, since there's more surface area of recent change to sift through. A team shipping small, frequent, well-tested changes will generally recover faster than one that ships infrequent, large, sprawling releases, simply because the blast radius of "what changed recently" is smaller and easier to reason about, a pattern that shows up clearly in deployment frequency analysis.
For SaaS startups specifically, MTTR has a direct line to customer trust and contractual obligations. If you've committed to SLA terms with enterprise customers, prolonged recovery times aren't just an internal embarrassment, they're a compliance and revenue risk. Leadership tends to pay attention to MTTR for that reason: it's one of the few engineering metrics that translates cleanly into a conversation with a customer or a board member about reliability. That visibility is exactly why it shouldn't be treated as a vanity number to keep low at all costs. A metric that leadership watches closely is also a metric that's easy to game by narrowing incident definitions or rushing "restored" status before an issue is truly stable, which defeats the point of tracking it.
What a 'Good' MTTR Looks Like
There's no universal benchmark that applies equally to a two-person infra team and a 200-engineer platform org. What counts as "good" depends on your system's own incident history, the complexity of your architecture, and the SLA commitments you've made to customers. A team recovering from a database failover in 15 minutes might be performing exceptionally well; a team taking 15 minutes to recover from a bad frontend deploy might be underperforming relative to what that kind of incident should require.
Industry research offers a useful directional reference. DORA's State of DevOps research, published annually, groups recovery time into performance bands, roughly spanning less than an hour for elite performers up to a week or more for low performers, based on survey data collected across thousands of engineering organizations. These bands are helpful for orienting yourself broadly (are we closer to elite or closer to low?), but the exact thresholds shift somewhat from year to year as the survey population and industry norms evolve, so it's worth checking the most recent report rather than anchoring to older figures.
Use DORA's bands as a compass, not a target you engineer toward directly. The more useful exercise is internal: look at your own incident history over the past two or three quarters, segment it by severity, and set a realistic target for each severity level based on what your team has actually demonstrated it can do, ideally as part of a broader effort in engineering metrics for startups. A P1 outage and a minor degraded-service incident shouldn't be held to the same recovery expectation, and blending them into one target number will either make your goal too easy for critical incidents or unreasonably strict for minor ones.
The goal is a target grounded in your system's real constraints, not an arbitrary number borrowed from a report describing organizations with different architecture, team size, and risk tolerance than yours.
Common Mistakes That Inflate or Hide MTTR
Averaging has a well-known blind spot: it hides outliers. If your team had nine incidents resolved in five minutes each and one that took 10 hours, the arithmetic mean will still look reasonably tidy, even though that single 10-hour outage may represent the actual risk worth addressing. Reporting a median alongside the mean, or breaking out your worst incident of the period separately, gives a much more honest picture than a single blended average.
Inconsistent incident logging is another common distortion. If your team only logs incidents severe enough to page someone, but quietly fixes smaller issues without creating a ticket, your MTTR will look artificially fast, because you're only counting the subset of problems that happen to resolve quickly or that someone remembered to document. The fix isn't to log every minor blip with the same rigor as a full outage, but to apply a consistent, written definition of what qualifies as an incident, and stick to it regardless of how the number will look at the end of the month.
A third mistake is treating the recovery window as a single undifferentiated block of time, rather than separating detection from remediation. If it takes 40 minutes to notice a problem and 10 minutes to fix it once someone's looking at it, that's a very different story than 10 minutes to notice and 40 minutes to fix. The first case points to a monitoring and alerting gap; the second points to a diagnosis or tooling gap. Blending both into one MTTR number obscures which part of the pipeline actually needs investment. Splitting your incident timeline into detect, acknowledge, diagnose, and remediate phases, even roughly, is a form of engineering observability that will tell you far more about where to focus than the aggregate MTTR figure ever will on its own.
Reducing MTTR Without Adding More Dashboards
Most efforts to improve MTTR focus entirely on the incident response side: better alerting, tighter runbooks, more practiced rollback procedures. Those matter, but they're reactive by design. They make you faster at handling incidents that have already started. The other lever, often underused, is reducing the odds that a risky change turns into an incident in the first place.
That means paying attention to the conditions that precede incidents, not just the incidents themselves. Large merge batches, spikes in code churn, and stalled work that gets rushed out under deadline pressure are recurring precursors to production issues, which is why deployment risk assessment has become such a useful discipline. Most teams don't have a clean way to see those conditions building up before a deploy goes out, which means the risk is invisible until it becomes an outage. This is the layer Progress is built to surface. Its deployment risk and change-pressure signals track merge volume and code churn across a codebase, flagging when a release looks riskier than usual based on the actual size and shape of the change, not a gut feeling from whoever's reviewing the PR. Combined with signals that flag stalled work and emerging risk before it ships, teams get a earlier warning than "the alert fired."
The other half of the MTTR equation is how fast you can reconstruct what happened once something does break, and that's often where teams lose time digging through commit history, deploy logs, and Slack threads trying to piece together what changed recently. Progress's pre-computed executive summaries and its MCP server and Claude API integration let a lead ask a plain-language question like "what changed in the two days before this incident" and get an answer grounded in real activity data, rather than manually cross-referencing GitHub and Linear. That doesn't replace an incident postmortem, but it compresses the early diagnosis phase that so often eats into MTTR before the actual fix even begins.
MTTR is a useful health signal, not a vanity metric, and its real value shows up when you stop treating it as an isolated number to minimize and start pairing it with visibility into what actually causes incidents: deploy risk, code churn, and the pressure a team is under when it ships. A tight MTTR built on top of blind spots in those areas is fragile, not resilient. The teams that hold up under pressure are the ones that catch risky conditions building before they become a page at 2 a.m., and that's the layer most incident tooling doesn't touch. Learn more about our services to see how Progress connects deployment risk, team momentum, and incident context into one place.