Understanding the Mean Time to Recover (MTTR) Chart

Last updated: October 27, 2026

The Mean time to recover chart on the DORA page measures each incident from its start time to its resolution time. What counts as the start depends on where the incident comes from.

Why it matters

Knowing which timestamps Span uses explains why Span's MTTR can differ from the number in your incident tool, and tells you what to send if you want MTTR to reflect the full time your system was impacted.

How it works

Span calculates each incident's time to recover as:

Time to recover = resolved time − start time

Incident source

Start time

End time

incident.io

When the incident was created in incident.io

The incident's latest "Resolved at" time

Rootly

When the incident was created in Rootly

The incident's resolved time

DORA API

The startedAt you send

The endedAt you send

Two timestamps are easy to mix up:

  • Incident created: when someone declared or filed the incident.

  • Incident started: when the impact or outage actually began. This can be earlier than the creation time.

For incident.io and Rootly, Span uses the creation time as the start. For incidents you send through the DORA API, Span uses the startedAt you send, so you decide whether it marks when impact began or when work started. issuedAt on the API is the declared time; Span uses it to place the incident in a date range, not to measure recovery.

The chart then shows the average, P50, P75, P90, or max across every incident created in your date range.

Setup

  • incident.io and Rootly: nothing extra. Span reads the creation and resolution times from the integration.

  • DORA API: send startedAt and endedAt on every incident. If you want MTTR to cover the full impact window, set startedAt to when impact began. You can add or correct it later with PATCH /api/dora/v1/incidents/:incidentId.

Things to know

  • Open incidents count as 0. An incident with no resolution time adds 0 to MTTR and pulls the average down until it resolves.

  • API incidents without startedAt count as 0. Span can't measure an incident without a start.

  • Your incident tool may report a different MTTR. incident.io, for example, can start its own MTTR at "Impact started" or "Accepted at". Span starts at creation for incident.io and Rootly incidents.

  • Worked example. Impact begins at 14:00, someone declares the incident at 14:20, and it resolves at 15:30. Sent through the DORA API with startedAt 14:00 and endedAt 15:30, the incident adds 1 hour 30 minutes. The same incident from incident.io adds 1 hour 10 minutes, because Span starts at the 14:20 creation time.

Related articles

Mean Time To Recover (MTTR) Report

How to use the DORA API to send deployment activity to Span

How does the Incident.io integration work?

Rootly Integration

Need help?

Contact your Span account team or reach out to support@span.app.