How to calculate an uptime SLA: the formula, a downtime table for 99% to 99.999%, what to include in the measurement window, and how to set a target you can defend.
By H. Marcell, Freelance Software Developer
Updated July 17, 2026
H. Marcell is a freelance software developer who builds and runs web services and APIs, and writes about uptime monitoring, incident response, and status-page communication.
An SLA (Service Level Agreement) turns "we are reliable" into a number you are contractually on the hook for. This guide shows how uptime percentage is calculated, translates the common targets into real allowed downtime, and explains how to choose a measurement window and a target you can actually defend when a customer holds you to it.
Uptime percentage is simply: (total time − downtime) ÷ total time × 100, measured over an agreed window (usually a calendar month). If a service was down for 20 minutes in a 30-day month (43,200 minutes), uptime is (43,200 − 20) ÷ 43,200 × 100 = 99.95%. The window matters: the same 20-minute outage is 99.95% monthly but 99.996% annually, so always state the window alongside the number.
This is what each "nines" target actually permits. Use it to sanity-check any SLA you are asked to sign, or work it out for your own target with the uptime SLA calculator.
Work backwards from your operations, not from what sounds good. Ask: how fast do we detect an outage, how fast do we respond, and what dependencies do we not control? A single unmanaged third-party dependency with its own 99.9% SLA effectively caps yours at 99.9% or lower. Promising more than your weakest link supports means paying out credits on incidents you could never have prevented.
Measure availability the way your customers experience it — external checks against customer-facing endpoints — and use that as the basis for your SLA reporting. Sandglass records uptime from your checks so the percentage you report is grounded in measured, customer-visible availability rather than internal server metrics that hide user-facing failures.
An SLA number is a commercial promise, not just a dashboard metric. Do not quote 99.99% because it sounds impressive if your architecture, dependencies, and response process only support 99.9%. Also decide upfront whether planned maintenance is excluded — and only exclude it if the contract explicitly says so.
Decide which failures in this topic actually reach customers before adding any monitoring.
Match each risk to a single HTTP, content, TCP, SSL certificate, or heartbeat check instead of stacking duplicates.
Give each alert one owner and one destination — email, a Slack webhook, or a generic webhook.
Revisit intervals, thresholds, and ownership once a real incident shows what was missing.
Free plan, no credit card required.