The monthly uptime report gives you a fixed, final uptime figure for each monitor over one calendar month — the number you can safely send to a client.
#Overview
- Covers one calendar month at a time, not a rolling window, so the figure stops changing once the month ends.
- Shows uptime, downtime, incident count, longest outage, and how much of the month was actually measured.
- Excludes planned maintenance and counts every unplanned minute in full, with no softening rules.
- Can be exported as a CSV to share with a client.
#Why a month, and not "the last 30 days"
The uptime column on the Monitors page, and the bars on your status page, both cover a rolling window. That's right for a status page, but wrong for a promise: "99.94% over the last 30 days" is a different number tomorrow, so it isn't something anyone can hold you to — or that you can point at.
An SLA is stated per calendar month. Once a month ends, that month's figure is final.
#Pick a month
- Use the month picker in the top right of the Uptime report page, or click any row in the Last 12 months table.
- The page opens on the most recently finished month by default, since that's the newest one whose numbers are settled.
- If you choose a month that hasn't ended yet, the page tells you so — those figures can still move. They're still real figures, covering the days so far: the Measured column shows how much of the month they're based on, and today counts only up to the hour you're reading it.
#What each row tells you
- Uptime — the share of the month the monitor was not down, to three decimals. 99.9% and 99.94% are different promises, so the report doesn't round away the difference.
- Downtime — how long the monitor was down, in hours and minutes. Only confirmed outages count — the ones that opened an incident. A single failed check from one location, without the others agreeing, is not downtime.
- Incidents — how many separate unplanned outages there were.
- Longest outage — the single worst stretch. One long outage is a very different month from twenty short ones adding up to the same total.
- Measured — how many of the month's days went into the figure, and which probes took the readings.
#How the figure is worked out
The denominator is the time you actually watched, not the length of the month.
- A day with no measurements — the monitor was paused, or created partway through the month — drops out of the calculation completely. It is never counted as "up". The Measured column shows this, for example, as "12 of 31 days".
- A monitor with no measurements at all shows "—", not 100%.
- Planned maintenance is excluded and reported separately, so a scheduled window never counts against you. Each row shows how much was left out, and a Planned maintenance tile shows the month's total. This includes windows that hold alerts back.
- Time a monitor was paused is not downtime. If an outage was still open when you paused the monitor, only the part before the pause counts.
- A monitor with an uptime target gets a Target column: the target, whether the month met it, and the minutes of downtime used of those it allows.
NoteSee Uptime targets to learn how targets are set and tracked.
#Why this doesn't match your status page
Two reasons, both deliberate:
- Different window. The status page rolls over the last 90 days and changes daily. This report is one fixed calendar month.
- No softening. Status pages conventionally count a minor incident at about a third of its length. This report counts every unplanned minute in full.
So the monthly figure is usually the lower of the two — and the one that's safe to put in writing.
#Check third-party services
- Open the Uptime report page for the month you want.
- Scroll to the Third-party services section if you have third-party monitors, such as one tracking Cloudflare's status page.
- For each provider, review how many incidents it had that month on the components you follow, how many reached your own monitors, and for how many minutes. For example: "Cloudflare had 3 incidents on what you follow. 1 reached you, for 22 minutes."
- Use this to decide whether to keep a provider or add a fallback. The emailed report carries the same lines.
#Send it to a client
- Open the Uptime report page and pick the month you need.
- Click Export CSV.
- The download includes one row per monitor, with the uptime, the downtime, the incident count, the longest outage, and the days-measured basis in the same file.
TipThe measured basis travels with the figure on purpose — a percentage without its denominator can't be defended in the conversation it exists for.
Every export is recorded in your Audit Log.
#Troubleshooting
- There's no PDF option. The CSV opens in any spreadsheet and prints from there. If you specifically need a client-facing PDF, let us know — it's the one place a PDF would genuinely beat a CSV.
- A monitor shows "—" instead of a percentage. It has no measurements for that month, so no figure is claimed.
- The month I picked still shows moving numbers. That month hasn't finished yet — the page will say so, and the Measured column shows how much of the month is covered so far.
Was this article helpful?
Thanks for your feedback!
Thanks, this goes straight to the docs team.