SLO & Error Budget Calculator

Turn an availability target into allowed downtime, a request budget, and a burn rate you can actually alert on.

Quality Attributes·Last reviewed · revision 1

Inputs

Optional — request-based budget

Runs entirely in your browser. Nothing is uploaded, stored, or sent anywhere.

Results

Allowed downtime per 30 days

Total for the window

43m 12s

Error budget 0.1000% — 1 bad request in 1,000

Downtime allowance by period

Per day
1m 26s
Per week
10m 5s
Per 30 days
43m 12s
Per year
8h 45m 36s

Downtime figures assume the error budget is spent as continuous unavailability — a worst-case reading, and the right one for planning. Burn rate follows Google SRE's multi-window convention: 1x consumes the budget exactly at the window boundary, 14.4x consumes it in about 2% of the window.

In short

An error budget is the inverse of your SLO: a 99.9% target permits 0.1% failure, which is 43 minutes 12 seconds of downtime in a 30-day window. Burn rate is observed error rate divided by budgeted error rate — 1x spends the budget exactly at the window boundary, 14.4x spends it in about 2% of the window and is the conventional page-a-human threshold.

How the numbers are derived

Four formulas, all of them arithmetic:

error budget (fraction)  = 1 − (SLO ÷ 100)
allowed downtime         = error budget × window duration
allowed bad requests     = error budget × total requests in window
burn rate                = (bad requests ÷ total requests) ÷ error budget
                           ÷ (fraction of window elapsed)

Nothing is estimated and nothing is fitted. If a figure surprises you, the SLO surprised you.

Downtime allowance by target

The table people actually come for. Read the row, then ask whether your on-call rotation can credibly detect and fix an incident inside that budget — because if it cannot, the SLO is aspirational.

SLOPer dayPer 30 daysPer year
99%14m 24s7h 12m3d 15h 36m
99.5%7m 12s3h 36m1d 19h 48m
99.9%1m 26s43m 12s8h 45m 36s
99.95%43.2s21m 36s4h 22m 48s
99.99%8.6s4m 19s52m 34s
99.999%864 ms25.9s5m 15s

Two things fall out of this table immediately.

Below 99.9%, humans can be in the loop. Seven hours a month is enough to page someone, have them wake up, read a dashboard, and act. At 99.99% they cannot. Four minutes a month means detection and mitigation must both be automatic; a human who responds in three minutes has already spent three quarters of the monthly budget on one incident.

Every nine costs roughly an order of magnitude. Not in downtime — in engineering. The jump from 99.9% to 99.99% typically means multi-AZ, automated failover, load shedding, and a serious investment in observability. Ask what the extra nine is for before buying it.

Why request-based budgets beat minutes

A time-based budget silently assumes traffic is uniform across the window. It never is.

Consider a 30-day window and a five-minute total outage. Time-based, that is 11.6% of a 99.9% budget, regardless of when it happened. Request-based, a five-minute outage at your traffic peak might cost 4% of daily requests, and the same outage at 3am might cost 0.05%. Those are not the same incident, and a budget that cannot tell them apart will let you burn real user-facing reliability while the dashboard stays green.

Use minutes only when you have no per-request telemetry — and treat the answer as a worst case, not a measurement.

The burn-rate bands

Burn rate is what makes an SLO alertable. A raw error-rate threshold either pages you for noise or misses a slow bleed; burn rate normalises for both.

Burn rateBudget gone inConventional response
14.4x~2% of window (≈10h of 30d)Page immediately
6x~5% of window (≈36h of 30d)Page
3x~10% of window (≈3d of 30d)Ticket
1xExactly at the window boundaryOn budget, watch it
< 1xNot exhaustedWithin budget

The reason to run two windows per band — a long one for significance and a short one to confirm the problem is still happening — is that a single long window keeps alerting long after an incident has resolved, and a single short window fires on every blip. Google's workbook has the full multi-window configuration; the calculator above gives you the single-window burn rate that those alerts are built on.

The part nobody implements

An error budget with no policy attached is a dashboard. The mechanism only works if exhausting the budget causes something specific to happen — feature freeze, reliability work takes priority, releases require an explicit exception. Write that down before you publish the SLO, get whoever owns the roadmap to agree to it in advance, and make the consequence automatic rather than a negotiation held under pressure during an incident.

The most common failure I see is not a badly chosen SLO. It is a well-chosen SLO that nothing is attached to, quietly breached for two quarters, with everyone still shipping features.

Choosing the target

Do not start from a number of nines. Start from these three questions:

  1. What do users actually notice? If they cannot distinguish 99.9% from 99.99% because their own network is worse than both, you are buying reliability nobody consumes.
  2. What do your dependencies give you? Your availability cannot exceed the product of everything on your critical path. Three sequential dependencies at 99.9% each cap you at 99.7% before you write a line of code.
  3. What would you stop doing to fund it? An extra nine is paid for in engineering time. If nothing comes off the roadmap, the nine is not real.

Then pick the lowest target your users cannot tell apart from perfect, and spend the difference on shipping.

Sources

Frequently asked

How much downtime does 99.9% uptime allow?

43 minutes and 12 seconds over a 30-day window, or 8 hours 45 minutes and 36 seconds over a year. At 99.99% those figures drop to 4 minutes 19 seconds per month and 52 minutes 34 seconds per year. Each additional nine divides the allowance by ten.

What is a burn rate in SLO terms?

Observed error rate divided by the error rate your budget permits. A burn rate of 1 spends the whole budget exactly as the window closes. A burn rate of 14.4 spends it in roughly 2% of the window — about ten hours of a 30-day window — which is why that value is the conventional threshold for waking someone up.

Should an error budget be measured in time or in requests?

Requests, wherever you can. Time-based downtime assumes every second of the window carries equal traffic, which is never true — a five-minute outage at 3am and one at peak are the same number of minutes and wildly different numbers of failed requests. Use minutes only when you have no per-request telemetry, and treat the figure as a worst case.

What should happen when the error budget is exhausted?

Feature releases stop and reliability work takes priority until the budget recovers. That consequence is the entire point — an error budget without a policy attached is a dashboard, not a control. If nothing changes when the budget runs out, the SLO is decorative.

Can an SLO be 100%?

No, usefully. A 100% target sets the error budget to zero, which means any single failure is a breach and there is no room to deploy, patch, or fail over. It also makes burn rate undefined. Pick the lowest number of nines your users cannot distinguish from perfect, then spend the difference on shipping.

Revision history

  • First publication. Time-based and request-based budgets, budget consumed, burn rate with the multi-window alerting bands, and projected exhaustion.

Go deeper

← All architecture tools