Calculating uptime percentage seems simple: divide the time your site was up by total time, multiply by 100. But the reality involves important nuances — how you define "up," what you exclude from measurement, how check intervals affect accuracy, and how different measurement windows change reported numbers. Get these wrong and your uptime reports are meaningless.
The Basic Formula
Uptime % = (Total Minutes - Downtime Minutes) / Total Minutes × 100
For a 30-day month (43,200 minutes), with 25 minutes of downtime:
Uptime % = (43,200 - 25) / 43,200 × 100 = 99.942%
This looks right, but several variables determine whether this number actually means what you think it means.
Defining "Downtime"
The most important (and most contested) definition in any SLA is what counts as downtime. Common approaches:
Monitoring check failures: Downtime = any period where monitoring checks fail. This is the simplest and most objective definition. AzMonitor uses this definition.
User impact based: Downtime = any period where a significant percentage of users can't access the service (e.g., >5% error rate). More nuanced but harder to measure objectively.
Full unavailability only: Downtime = only periods where 100% of requests fail. Excludes partial degradation. Favors service providers over customers.
Consecutive failure definition: Downtime begins when 2+ consecutive monitoring checks fail and ends when 2+ consecutive checks succeed. This eliminates transient failures from the calculation.
The definition matters enormously. The same 30 minutes of degraded service might count as 0 minutes downtime (if you only count full unavailability) or 30 minutes downtime (if you count any failures).
Measurement Windows and Their Impact
Monthly vs Annual Measurement
Most SLAs measure uptime monthly, not annually. This matters because:
Monthly measurement (30 days = 43,200 minutes):
99.9% uptime allows: 43.2 minutes of downtime per month
Annual measurement (365 days = 525,600 minutes):
99.9% uptime allows: 525.6 minutes (8.76 hours) of downtime per year
If you measure monthly, a single 90-minute outage breaches 99.9% for that month even if the rest of the year is perfect. If you measure annually, the same 90-minute outage barely dents your annual number.
Customers prefer monthly measurement (tighter accountability). Providers prefer annual measurement (more buffer).
Business Hours vs 24/7
Some SLAs only measure uptime during "business hours" (e.g., 9 AM to 5 PM, Monday through Friday). This dramatically reduces the measurement window:
24/7 measurement: 720 hours/month
Business hours only: 160 hours/month (Mon-Fri, 9-5)
A business-hours SLA allows proportionally less downtime, but only counts outages that occur during that window. A 3-hour outage at 2 AM Saturday doesn't count at all.
For consumer services or global businesses, business-hours SLAs are inappropriate. For B2B SaaS with a specific user timezone, they might be reasonable.
How Check Interval Affects Accuracy
Your check interval determines the resolution of your uptime calculation. With 5-minute check intervals, you have 288 data points per day. With 1-minute intervals, you have 1,440.
The underreporting problem with long intervals:
If you check every 5 minutes and your site is down for 3 minutes between checks, you might never catch that downtime. The site could come back up before the next check fires, and you'd report 100% uptime for a period that included real downtime.
The overreporting problem with long intervals:
If your site goes down exactly when a check fires and comes back up exactly when the next check fires (5 minutes later), you report 5 minutes of downtime even if the actual downtime was only 30 seconds.
Minimum check frequency for SLA measurement:
- 5-minute checks: Sufficient for annual SLA tracking, not precise enough for monthly SLAs
- 1-minute checks: Adequate for monthly 99.9% SLA measurement
- 30-second checks: Best for precise monthly SLA measurement and 99.99%+ SLAs
What to Exclude from Uptime Calculation
Most SLAs explicitly exclude certain types of downtime from the calculation:
Scheduled maintenance windows: Planned maintenance that was communicated in advance. Typically requires 24-48 hours advance notice.
Force majeure events: Natural disasters, acts of government, power grid failures beyond the provider's control.
Customer-caused issues: Downtime caused by customer's own actions (misconfiguration, DDoS attacks originating from customer's network).
Third-party dependency failures: Some SLAs exclude downtime caused by third-party services (CDN provider, DNS provider, payment processor) that are outside the provider's control.
Exclusions always favor the service provider. As a customer, understand exactly what's excluded before signing.
Uptime Calculation Example
Let's calculate monthly uptime for a service with the following incidents in November:
| Incident | Start | End | Duration | Excluded? | |----------|-------|-----|----------|-----------| | Database failover | Nov 3, 2:15 AM | Nov 3, 2:28 AM | 13 min | No | | Scheduled maintenance | Nov 15, 10:00 PM | Nov 15, 11:30 PM | 90 min | Yes (scheduled) | | CDN outage | Nov 22, 3:00 PM | Nov 22, 3:45 PM | 45 min | Depends on SLA | | App crash (deploy) | Nov 29, 4:30 PM | Nov 29, 4:37 PM | 7 min | No |
With CDN excluded:
Total November minutes: 43,200
Downtime (non-excluded): 13 + 7 = 20 minutes
Uptime: (43,200 - 20) / 43,200 × 100 = 99.954%
With CDN included:
Downtime: 13 + 45 + 7 = 65 minutes
Uptime: (43,200 - 65) / 43,200 × 100 = 99.850%
The CDN exclusion changes the result from breaching 99.9% to comfortably meeting it.
Automating Uptime Calculation
Manual uptime calculation is error-prone and time-consuming. Automate it with:
- Continuous monitoring — AzMonitor records every check result with timestamps
- Automated report generation — Pull check data via API, calculate uptime automatically
- Exclusion handling — Mark maintenance windows in advance; exclude them automatically from calculation
- Stakeholder reports — Generate and email uptime reports to customers or management on schedule
AzMonitor handles all of this automatically — your monthly uptime report is generated automatically with exclusions applied, ready to share with customers or your board.
Start accurate uptime measurement with AzMonitor and know your real uptime percentage with confidence. See also our SLA monitoring guide for turning accurate uptime data into SLA compliance reporting.
3 monitors free forever · No credit card needed · Set up in 2 minutes
Start monitoring free →