Whether you’re reporting SLA compliance, evaluating your monitoring data, or calculating availability for a contract, here’s exactly how to calculate uptime percentage.
The Basic Formula
Uptime % = ((Total time - Downtime) / Total time) x 100That’s it. The challenge is getting the inputs right.
Step-by-Step Examples
Example 1: Monthly SLA Report
Your service had 3 incidents in March:
- Incident 1: 15 minutes (database connection pool exhaustion)
- Incident 2: 8 minutes (bad deployment, rolled back)
- Incident 3: 22 minutes (DNS provider outage)
Total downtime: 45 minutes Total time in March: 31 days x 24 hours x 60 minutes = 44,640 minutes
Uptime = ((44,640 - 45) / 44,640) x 100 = 99.899%This rounds to 99.9% — just barely meeting a three-nines SLA.
Example 2: Weekly Report
Your monitoring recorded 12 failed checks this week at 1-minute intervals:
- 7 consecutive failures on Tuesday (7 minutes downtime)
- 5 consecutive failures on Thursday (5 minutes downtime)
Total downtime: 12 minutes Total time in a week: 7 x 24 x 60 = 10,080 minutes
Uptime = ((10,080 - 12) / 10,080) x 100 = 99.881%Example 3: From Monitoring Data
Your monitoring tool ran 43,200 checks this month (1-minute intervals for 30 days). Of those, 43,157 succeeded and 43 failed.
Uptime = (43,157 / 43,200) x 100 = 99.900%This is the simplest calculation when you have monitoring data: successful checks divided by total checks.
The Reverse: Downtime from Uptime Percentage
If someone tells you “we had 99.95% uptime last month,” how much downtime is that?
Downtime = (1 - Uptime/100) x Total timeFor 99.95% over 30 days:
Downtime = (1 - 0.9995) x 43,200 = 21.6 minutesUse the uptime calculator to convert between any uptime percentage and downtime duration instantly.
Common Calculation Mistakes
1. Wrong Time Base
A “month” varies: 28 days (February), 30 days, or 31 days. Use the actual number of minutes in the specific month, not a generic 30-day estimate. For SLA reporting, define in the agreement whether you use calendar months or rolling 30-day windows.
2. Ignoring Partial Outages
If your service responds to 80% of requests successfully for 30 minutes, that’s not 30 minutes of downtime. It’s 6 minutes of equivalent downtime (20% failure x 30 minutes).
For request-based SLIs:
Equivalent downtime = Failure rate x Duration3. Excluding Scheduled Maintenance Incorrectly
Most SLAs exclude scheduled maintenance. But you need to define “scheduled” clearly:
- Announced 24h+ in advance? 48h? 1 week?
- What qualifies as “maintenance” vs “fixing something that broke”?
- Is there a cap on maintenance windows per month?
4. Rounding Too Early
99.896% is not 99.9%. Don’t round until the final report. Small rounding differences compound when tracking trends or when you’re near an SLA threshold.
5. Mixing Measurement Methods
If you calculate uptime from monitoring data (check-based) for some months and from log data (request-based) for others, the numbers aren’t directly comparable. Pick one method and use it consistently.
Uptime by Period
Here’s a reference table for common SLA levels:
| SLA | Downtime/Day | Downtime/Week | Downtime/Month | Downtime/Year |
|---|---|---|---|---|
| 99% | 14.4 min | 1.68 hr | 7.31 hr | 3.65 days |
| 99.5% | 7.2 min | 50.4 min | 3.65 hr | 1.83 days |
| 99.9% | 1.44 min | 10.1 min | 43.8 min | 8.76 hr |
| 99.95% | 43.2 sec | 5.04 min | 21.9 min | 4.38 hr |
| 99.99% | 8.64 sec | 1.01 min | 4.38 min | 52.6 min |
Tracking Uptime Over Time
One month’s number isn’t very useful. Track trends:
- Monthly trend — Is availability improving or degrading?
- Rolling average — 3-month rolling average smooths out anomalies
- By component — API might be 99.99% while the dashboard is 99.8%
- Error budget consumption — How fast are you burning your budget?
The trend is more important than the absolute number. A team improving from 99.8% to 99.9% over 6 months is in better shape than one fluctuating around 99.95%.
Related tools:
- Uptime Calculator — Instant conversion between uptime and downtime
- Error Budget Calculator — Track budget consumption
- Downtime Cost Calculator — Financial impact of each minute