{{ summaryHeading }} {{ summaryPrimary }} {{ summaryLine }} {{ flowBadge }} {{ instabilityBadge }} {{ deploymentBadge }}
{{ node.label }}
DORA analysis workspace
DORA deployment analysis inputs
Paste one production deployment per row, or browse/drop one CSV or TXT file. Source text stays out of the share URL.
{{ sourceMeta }}
{{ sourceError }}
{{ fileStatus || 'Drop one CSV or TXT file onto the textarea.' }}
The label appears in copied and downloaded review artifacts.
{{ window_days }} days
Keep the same window when comparing this service over time.
days
Use the same contextual reference across recurring service reviews.
{{ lead_time_target_hours }} hr
Local review guardrail; the analyzer does not assign a universal grade.
hr
{{ cfr_target_pct }}%
Review the token policy before comparing periods.
%
{{ recovery_target_hours }} hr
Missing recovery timestamps remain an evidence gap rather than a fast result.
hr
{{ rework_target_pct }}%
Use stable rework labels across review periods.
%
Default: failed, rollback, incident, hotfix, revert, outage.
Default: hotfix, rework, emergency, incident, patch, unplanned.
{{ tableExportStatus.scorecard }}
MetricCurrentReferenceSignalReview noteCopy
{{ row.metric }}{{ row.current }}{{ row.reference }}{{ row.signal }}{{ row.note }}
{{ tableExportStatus.evidence }}
DeploymentDeployed UTCLead timeOutcomeRecoveryWork typeCopy
{{ row.id }}{{ row.deployed_at }}{{ row.lead_label }}{{ row.outcome }}{{ row.recovery_label }}{{ row.work_type }}
{{ tableExportStatus.plan }}
PrioritySignalEvidenceNext actionCopy
{{ row.priority }}{{ row.signal }}{{ row.evidence }}{{ row.next_action }}
{{ chartExportStatus.flow }}
{{ chartState.flow === 'loading' ? 'Loading weekly flow chart…' : 'Weekly flow chart unavailable. Check your connection, then retry. CSV remains available.' }}
{{ chartExportStatus.instability }}
{{ chartState.instability === 'loading' ? 'Loading weekly instability chart…' : 'Weekly instability chart unavailable. Check your connection, then retry. CSV remains available.' }}

A delivery review can look healthy for the wrong reason. Frequent releases may include a stream of emergency fixes, while a low failure rate may sit beside changes that wait days to reach production. DORA metrics keep speed, flow, recovery, and repair work separate so a team can see which part of delivery changed.

The current five-metric model divides software delivery performance into throughput and instability. Throughput covers how often changes reach production, how long they take to get there, and how long recovery takes after a failed deployment. Instability covers the share of deployments that need immediate intervention and the share devoted to unplanned incident-driven rework.

DORA metrics grouped by throughput and instability
Measure Question it helps answer Evidence needed
Deployment frequencyHow often does this service reach production?Deployment count and a defined reporting window
Change lead timeHow long does committed work wait before production?Commit and deployment timestamps
Failed deployment recovery timeHow long does restoration take after a failed deployment?Deployment and recovery timestamps for every failure being judged
Change fail rateWhat share of deployments require immediate intervention?A stable rule for classifying failures
Deployment rework rateWhat share is unplanned work caused by a production incident?A stable rule for classifying rework

Those measures become comparable only when the observation boundary stays steady. One service should not be mixed with unrelated applications, and a 30-day window should not be compared with another period whose deployment records or failure definitions were collected differently. Changes in timezones, incident labels, or what counts as production can move a number without changing the delivery system.

Medians summarize a typical duration, but they do not expose every slow change. A higher percentile can reveal a delayed tail that the median hides. Counts also need context: a rate based on a few deployments can swing sharply, and missing commit or recovery times reduce the evidence available for the duration measures.

DORA metrics are team-level improvement signals, not grades for individuals or universal targets for every service. They do not measure customer impact, product value, incident severity, or root cause. Their strongest use is a repeated review that keeps definitions stable, checks the source records, and connects a movement in the numbers to release, build, review, approval, rollback, or incident work.

How to Use This Tool:

Prepare one production-deployment history for one service, then choose comparison rules that can remain stable across later reviews.

  1. Name the Service or team and set the Measurement window. The window is the denominator used to normalize deployment frequency to a weekly rate.
  2. Paste or load the Deployment CSV. A valid deployment time admits a row. Commit time supplies lead-time evidence, while failed rows need recovery times at or after deployment to support the recovery metric.
    Invalid deployment times skip their rows. Missing or reversed optional timestamps remain evidence gaps; they are never converted to zero-hour durations.
  3. Choose a Weekly cadence reference and four guardrails. Use Trend only when no cadence threshold is justified. Change the failure or rework tokens under Advanced only when the source vocabulary requires it.
  4. Read Metric scorecard beside Deployment evidence. Resolve skipped rows, duplicate IDs, and missing timestamps before using Improvement plan or the weekly views to choose a delivery constraint for follow-up.

Interpreting Results:

Start with evidence coverage, then read the five measures as a set. A faster or more frequent flow is not a complete improvement when failure, recovery, or rework worsens.

  • Compare median lead time with P85 lead time. A wide gap means a slower group of changes is hidden behind the typical value.
  • A duration guardrail is met at equality, and percentage maximums are also inclusive. Cadence passes when frequency equals or exceeds its selected reference.
  • Recovery passes only when there are no failures, or every failed row has usable recovery evidence and the median is within the guardrail.
  • Failure and rework depend on the configured substring tokens. Inspect matched rows before treating either rate as an operational fact.

Verify the deployment ledger against the release and incident systems of record. For trend comparisons, keep the service boundary, window, timestamp convention, token policy, and guardrails unchanged.

Technical Details:

Each usable row represents one production deployment. The deployment timestamp controls admission to the dataset; the other fields determine which duration samples and classifications that row contributes. Aggregation occurs only after timestamps and tokens have been normalized.

Formula Core

The service-level measures use valid deployment rows as the common population. Durations are elapsed hours, and rates are percentages of all accepted deployments.

F=7NW Li=tdeploy,itcommit,i CFR=NfailedN×100 Ri=trecovered,itdeploy,i RWR=NreworkN×100
Symbols and aggregation rules for the five DORA measures
SymbolMeaningAggregation
NAccepted deploymentsCount
WMeasurement window in daysUsed to produce deployments per week
LiCommit-to-deployment hours for row iMedian; p85 is also reported by linear interpolation
CFRChange fail rateFailed rows divided by N
RiDeployment-to-recovery hours for a failed rowMedian of usable recovery intervals
RWRDeployment rework rateRework rows divided by N

For p85 lead time, sorted observations use position (n − 1) × 0.85; a fractional position is linearly interpolated between its neighboring values. Canonical aggregates are rounded to six decimal places. Displayed frequency uses two decimals, rates use one decimal, and durations switch among whole minutes, one-decimal hours, and one-decimal days.

Two accepted deployments in a 14-day window produce 1 deployment per week. Lead intervals of 2 and 4 hours have a 3-hour median and a 3.7-hour p85. If one row matches the failure tokens and one matches the rework tokens, both rates are 50%.

Transformation Core

CSV evidence follows an ordered path from source row to metric sample. This preserves incomplete evidence instead of silently manufacturing values.

Transformation from deployment CSV to metric evidence
StepRuleConsequence
Map columnsRecognize common aliases for ID, commit, deployment, status, recovery, and work type; otherwise use that positional order.Quoted and unquoted CSV cells are accepted.
Normalize timestampsDate-only values become midnight UTC; values without a zone are treated as UTC.Intervals and Monday-start weekly buckets use one elapsed-time basis.
Admit deploymentA valid deployment time is mandatory.Rows missing it are skipped; duplicate IDs remain and create a warning.
Build durationsCommit cannot be after deployment, and recovery cannot be before a failed deployment.An invalid optional interval is excluded without removing the deployment from rate denominators.
Classify outcomesFailure and rework tokens use case-insensitive substring matching across status plus work type.A row may count in both categories.

Rule Core

Inclusive reference and evidence rules
SignalPass ruleEvidence condition
Deployment frequencyF ≥ 14, 1, or 0.25 per week for the selected referenceTrend only removes the threshold
Change lead timeMedian L ≤ the selected hoursAt least one usable lead interval
Change fail rateCFR ≤ the selected percentageEvery accepted row remains in the denominator
Failed deployment recoveryMedian R ≤ the selected hoursNo failures, or usable recovery evidence for every failed row
Deployment rework rateRWR ≤ the selected percentageEvery accepted row remains in the denominator

The combined flow signal requires both frequency and lead time to pass. The combined instability signal requires failure rate, recovery, and rework rate to pass. Empty token lists yield zero matches but produce warnings, so an apparently low rate still needs its classification policy checked.

Accepted boundaries

Accepted DORA analysis input boundaries
InputBoundary
Measurement window1 to 180 whole days
Lead and recovery guardrails0 to 168 hours inclusive
Failure and rework guardrails0% to 100% inclusive
Deployment historyUp to 1,048,576 characters and 5,000 rows plus a header
Failure and rework token listsUp to 500 characters each

Limitations and Privacy Notes:

The analysis is only as reliable as its deployment history and classification policy. Treat the result as a review of supplied evidence, not as an independent source of release or incident truth.

  • Deployment text and selected files are processed in the browser and excluded from the share URL. Copied or downloaded artifacts can still reveal service names, timestamps, incident labels, and delivery history.
  • Substring tokens may be too broad or may miss local terminology. Review the rows they classify before comparing rates.
  • Skipped rows, retained duplicate IDs, and missing duration evidence can distort a small sample.
  • Chosen references are local guardrails, not official DORA performance grades or a basis for ranking unlike teams.

References: