We've been tracking 62 major AWS, Azure, Google Cloud, and Cloudflare outages since 2020 that have a public write-up. Each one has the provider's own root cause, the region, and how long it lasted.
Once you line them up, a few patterns jump out, and most of them aren't what people expect. Here's the cheat sheet.
The 30-second version
- The median major outage lasted 6 hours and 8 minutes. Not a blip. A full workday.
- 55% were caused by a change or a bug. Config pushes and deployments (32%) and software bugs or automation (23%). Fires and floods are the minority.
- Power and cooling failures are rarer but brutal. 18% of outages, with a median of about 21 hours.
- 37 of the 57 outages with a known end ran longer than 4 hours. 16 ran longer than 12.
- Only 7 were fixed within an hour. Plan for "hours," not "minutes."
- 2025 and 2026 had the most incidents we recorded (16 and 18). Partly more outages, partly more detailed public write-ups.
What actually takes the cloud down
| Cause | Share of outages | Median duration |
|---|---|---|
| Configuration or deployment change | 32% | 5h 21m |
| Software bug or automation | 23% | 5h 35m |
| Power or cooling | 18% | ~21h |
| Network | 6% | 3h 17m |
| Capacity or overload | 6% | 9h 22m |
| Physical damage (fire, water, drones) | 5% | 27h to months (2 still ongoing) |
| Other or not stated | 5% | n/a |
| DNS | 5% | 1h 35m |
Two things stand out. Most outages start with the provider's own changes or code, and the physical ones (power, cooling, fire) are rare but last the longest, because you can't roll back a flooded room.
Five lessons, and what to do about each
1. "Multi-AZ" won't save you from a regional outage
Plenty of these outages took out a whole region, or a regional control plane that every zone depends on. In Paris, a cooling-water leak flooded a UPS room and started a fire, and shutting down that one building took the region's control plane offline for over a day. When an outage is regional, spreading across zones doesn't help, and the median outage in this data lasted about six hours.
Do this: run critical services in at least two regions, and know which managed services you use are regional (they often are, even when compute is zonal).
2. The scariest outages start with a routine change
Paused gateway OS updates resuming all at once. A cache optimization that reordered DNS records. A release that withdrew about 1,100 customer IP prefixes. None of these were exotic. They were routine changes.
Do this: roll out your own changes the way you wish your provider did: one location at a time, gated on health metrics, with automatic rollback. Your config changes count too, not only code.
3. DNS breaks fast and heals slow
DNS outages had the shortest median (about an hour and a half), but the effects can outlast the fix: resolver caching keeps bad answers alive, and downstream systems take time to catch up. One CloudFront DNS incident caused 1h 35m of errors, while CloudFront configuration propagation stayed delayed for up to 7h 48m.
Do this: know your TTLs, keep them low on records you might need to fail over, and don't assume a fixed DNS problem is fixed for your users.
4. Backups that live in the same region aren't backups
In March 2026, drone strikes in the UAE and near a facility in Bahrain damaged AWS infrastructure. AWS later said some data held only in the affected UAE zones, and data held only in the Bahrain region, cannot be restored. The teams that recovered had copies somewhere else.
Do this: copy backups to another region (or another provider) and actually test a restore from there.
5. Your recovery plan has a human bottleneck
With a median outage of six hours, the question isn't whether you'll get paged. It's whether your system shifts traffic by itself or waits for someone to wake up, read the status page, and run a runbook for the first time.
Do this: automate the failover path and rehearse it. A failover you've never tested is a guess.
The cheat sheet
| If this fails... | ...this is what saves you |
|---|---|
| One availability zone | Running in 3 zones with load balancer health checks |
| A whole region | Active capacity in a second region and health-checked traffic routing |
| The provider's control plane | Workloads that keep serving without new API calls (no scaling or deploys needed to survive) |
| DNS | Low TTLs, a failover plan, and patience with resolver caches |
| A bad config push | Gradual rollouts with automatic rollback |
| Your only copy of data | Cross-region backups with tested restores |
| Power or cooling at a facility | Not being in only one facility |
How the data was built
Most entries come from the provider's official status page or post-incident report; a handful of older or thinly documented incidents rely on press coverage. Every source is linked in the full tracker. It only includes major outages with a public write-up, so smaller incidents are missing, and recent years look busier partly because providers now publish more detail. Durations are the provider's own numbers where they give them.
The full tracker, with every incident, cause, and source link, is here: Cloud Outage Tracker. It's updated every week.
If you want the math on why one bad hour wrecks a 99.99% SLA, I wrote that up separately: Four nines is 4 minutes and 19 seconds. Nobody on your team can respond that fast.
Disclosure: I work at Control Plane, where we build a platform for running apps active-active across regions and clouds. The data above comes from the providers' own reports, plus press coverage for a few older incidents.
What's the worst outage you've lived through, and what would have saved you? Curious what people's real failover setups look like.

