{
  "$comment": "Machine-readable dataset behind sla.24h.sh. Every row was read from the provider's own SLA document or, where no SLA document exists, from the contractual document that says so. Accessed 2026-08-24. Ladder tiers are [uptimeFrom, uptimeTo, creditPercent] on monthly uptime, matched as uptime >= from and uptime < to. model: ladder = published credit percentages; prorata = credit proportional to outage length, no tiers; blocks = a fixed percentage per block of time beyond the allowance; none = no published availability commitment; ladder_unpublished = tiers exist in the document but the credit percentages were not published.",
  "updated": "2026-08-24",
  "rows": [
    { "id":"aws-ec2-region", "provider":"AWS", "service":"EC2, Region-Level", "target":99.99, "model":"ladder",
      "tiers":[[99.0,99.99,10],[95.0,99.0,25],[0,95.0,100]], "cap":100,
      "base":"Monthly EC2 bill in the affected region, upfront Reserved Instance payments excluded",
      "claim":"Support case by the end of the second billing cycle after the incident",
      "proof":"Your own request logs documenting the errors. Failure to provide disqualifies the claim.",
      "plans":"All accounts",
      "note":"A Region-Level and an Instance-Level claim cannot be combined for the same incident. Credits are issued only above 1 USD and are not transferable." },
    { "id":"aws-ec2-instance", "provider":"AWS", "service":"EC2, Instance-Level", "target":99.5, "model":"ladder",
      "tiers":[[99.0,99.5,10],[95.0,99.0,25],[0,95.0,100]], "cap":100,
      "base":"Monthly EC2 bill in the affected region",
      "claim":"Support case by the end of the second billing cycle",
      "proof":"Your own request logs",
      "plans":"All accounts",
      "note":"A single instance is guaranteed 99.5%, not 99.99%. That is 3 h 43 min of allowed downtime in a 31-day month." },
    { "id":"aws-s3", "provider":"AWS", "service":"S3 Standard", "target":99.9, "model":"ladder",
      "tiers":[[99.0,99.9,10],[95.0,99.0,25]], "cap":25,
      "base":"Fees for the affected storage class in the affected region, not all of S3",
      "claim":"Support case by the end of the second billing cycle",
      "proof":"Your own request logs",
      "plans":"All accounts",
      "note":"Uptime is the average of per-5-minute error rates, and an interval in which you made no requests is assumed to have a 0% error rate, which dilutes the average in AWS's favour. There is no 100% rung." },
    { "id":"azure-vm-az", "provider":"Microsoft Azure", "service":"Virtual Machines across 2+ zones", "target":99.99, "model":"ladder",
      "tiers":[[99.0,99.99,10],[95.0,99.0,25],[0,95.0,100]], "cap":100,
      "base":"Fees for the particular service, resource or tier only, and only for the actual downtime, not the overall outage duration",
      "claim":"Within 60 days of the incident, which is a different deadline from the rest of the Microsoft portfolio",
      "proof":"Claim submitted by the customer. An outage communication from Microsoft is explicitly not a confirmation of eligibility.",
      "plans":"All Azure subscriptions",
      "note":"For metered pay-as-you-go services the measurement window is the 30 days prior to and including the first day of the incident, not the calendar month. One credit per service per period, so a customer must choose between multiple breached service levels." },
    { "id":"azure-vm-hdd", "provider":"Microsoft Azure", "service":"Single-instance VM on Standard HDD", "target":95.0, "model":"ladder",
      "tiers":[[92.0,95.0,10],[0,92.0,25]], "cap":25,
      "base":"Fees for that resource",
      "claim":"Within 60 days of the incident",
      "proof":"Claim submitted by the customer",
      "plans":"All Azure subscriptions",
      "note":"The target itself is 95%, so a single-instance VM on Standard HDD can be down for more than 36 hours in a 30-day month before anything is owed. The ladder is set by disk type, and Premium SSD or Ultra Disk raise the target to 99.9%." },
    { "id":"gce-multizone", "provider":"Google Cloud", "service":"Compute Engine, instances in multiple zones, Premium Tier", "target":99.99, "model":"ladder",
      "tiers":[[99.0,99.99,10],[95.0,99.0,25],[0,95.0,100]], "cap":100,
      "base":"Monthly bill for the covered service in the region that missed the objective, per project per region",
      "claim":"Google technical support within 60 days",
      "proof":"Log files showing the downtime periods and the date and time they occurred. Non-compliance forfeits the credit.",
      "plans":"All GCP accounts, excluding pre-GA features",
      "note":"Intermittent downtime shorter than one minute does not count at all, so a flapping outage can generate zero downtime minutes. Errors caused by quotas applied by Google's own system are excluded." },
    { "id":"gce-single", "provider":"Google Cloud", "service":"Compute Engine, single instance", "target":99.9, "model":"ladder",
      "tiers":[[95.0,99.9,10],[90.0,95.0,25],[0,90.0,100]], "cap":100,
      "base":"Monthly bill for that instance",
      "claim":"Google technical support within 60 days",
      "proof":"Log files showing the downtime periods",
      "plans":"All GCP accounts",
      "note":"The ladder is flat at the top: 10% covers everything from 99.9% down to 95% uptime, so four minutes and thirty-six hours of downtime pay the same percentage. 25% needs uptime under 95% and 100% needs under 90%, more than 72 hours in a month. Memory-optimized families get a 99.95% target on the same ladder shape." },
    { "id":"gcs-standard", "provider":"Google Cloud", "service":"Cloud Storage Standard, multi-region", "target":99.95, "model":"ladder",
      "tiers":[[99.0,99.95,10],[95.0,99.0,25],[0,95.0,50]], "cap":50,
      "base":"Monthly bill for that storage class in that location type, per project per region",
      "claim":"Google technical support within 30 days, half the window Compute Engine gives",
      "proof":"No log-file requirement in this document, unlike Compute Engine",
      "plans":"All GCP accounts",
      "note":"Repeated identical requests do not count towards the error rate unless they follow a mandatory exponential backoff from 1 to 32 seconds, so retrying too aggressively during Google's outage removes your own errors from the counter. Credits cap at 50% of the monthly amount." },
    { "id":"gcs-cold", "provider":"Google Cloud", "service":"Cloud Storage Nearline, Coldline, Archive in a region", "target":99.0, "model":"ladder",
      "tiers":[[98.0,99.0,10],[95.0,98.0,25],[0,95.0,50]], "cap":50,
      "base":"Monthly bill for that storage class in that location type",
      "claim":"Google technical support within 30 days",
      "proof":"Not specified in the document",
      "plans":"All GCP accounts",
      "note":"The objective itself is 99.0%, which allows 7 h 26 min of downtime in a 31-day month before anything is owed." },
    { "id":"cf-r2", "provider":"Cloudflare", "service":"R2 object storage", "target":99.9, "model":"ladder",
      "tiers":[[99.0,99.9,10],[95.0,99.0,25],[0,95.0,50]], "cap":50,
      "base":"R2 fees in the thirty days preceding submission of a valid claim, so the credit base depends on when you file, not when the outage was",
      "claim":"Enterprise claim procedure, and a claim cannot be filed under both the R2 SLA and the Enterprise support SLA for the same incident",
      "proof":"Per the Enterprise Customer Support and Service Level Agreement",
      "plans":"Enterprise subscription only. There is no published R2 SLA for Free, Pro or Business.",
      "note":"The error rate counts only 500, 502, 503 and 504 responses and explicitly excludes requests that are throttled or rate-limited, so an outage that manifests as rate limiting does not move the counter. The window is a rolling 30 days, not a calendar month. The ladder has three rungs and stops at 50%: there is no 100% rung." },
    { "id":"do-droplet", "provider":"DigitalOcean", "service":"CPU Droplet", "target":99.99, "model":"ladder",
      "tiers":[[0,99.99,100]], "cap":100,
      "base":"Charges for the specific Droplet resources affected",
      "claim":"Email to success@digitalocean.com within two billing cycles",
      "proof":"Account email, affected resources, dates and times of the outage",
      "plans":"Every account, including the smallest. No Enterprise gate.",
      "note":"The only single-rung ladder in the set, and an instance-level 99.99% target that no hyperscaler matches on a single machine. Formally, five minutes of downtime in a 31-day month zeroes the bill for that Droplet." },
    { "id":"do-spaces", "provider":"DigitalOcean", "service":"Spaces object storage", "target":99.9, "model":"ladder",
      "tiers":[[99.0,99.9,10],[95.0,99.0,25],[0,95.0,100]], "cap":100,
      "base":"Monthly bill for the buckets that missed the target",
      "claim":"Written notice within 24 hours of the start of downtime, then a credit request within 30 days of the end of the billing cycle",
      "proof":"Monitoring tooling at machine and network level, plus application logs with timestamps and bucket information",
      "plans":"Every account",
      "note":"The shortest notification window in the set, and downtime accrues only from the moment you report it, not from the moment it started. Credits expire after 90 days and are exchanged only above 1 USD." },
    { "id":"linode", "provider":"Linode, Akamai", "service":"Cloud Compute, general availability", "target":99.99, "model":"prorata",
      "tiers":[], "cap":100,
      "base":"Pro-rata credit for the affected monthly billing period",
      "claim":"Support ticket within 30 days of the end of the month",
      "proof":"A listing of the date, time and duration of the downtime. Incomplete information may result in delay or denial.",
      "plans":"Every account holder, including the smallest Nanode. Limited-availability instances drop to 99%.",
      "note":"No ladder at all, and no published formula for measuring downtime either, so the customer has no verifiable way to check whether the guarantee was missed. Same headline target as DigitalOcean, payouts three orders of magnitude apart." },
    { "id":"scw-dedicated", "provider":"Scaleway", "service":"Dedicated and specialized instances", "target":99.5, "model":"ladder",
      "tiers":[[99.0,99.5,10],[95.0,99.0,25],[0,95.0,100]], "cap":100,
      "base":"Monthly amount invoiced for the resources that missed the objective",
      "claim":"No later than 30 days after the month of the breach, or no compensation can be claimed",
      "proof":"Log files showing the unavailability periods, plus the date and time. In a dispute Scaleway decides in good faith on its own logs.",
      "plans":"By resource type, not by plan. Development instances have no objective at all.",
      "note":"An outage counts only from four continuous minutes, and performance degradation is explicitly not unavailability. Compensation is a voucher that cannot be reimbursed in cash, and it is conditional on having paid every outstanding invoice." },
    { "id":"scw-dev", "provider":"Scaleway", "service":"Development instances, DEV1, GP1, PLAY2, PRO2, ENT1", "target":null, "model":"none",
      "tiers":[], "cap":null,
      "base":"Not applicable",
      "claim":"Not applicable",
      "proof":"Not applicable",
      "plans":"These instance types are listed in the objective table as No SLO",
      "note":"This is not a missing row. The published table says No SLO in the cell, which is a documented absence of commitment rather than an undocumented one." },
    { "id":"hetzner-cloud", "provider":"Hetzner", "service":"Cloud Server", "target":99.9, "model":"prorata",
      "tiers":[], "cap":100,
      "base":"The proportional hourly rate of the affected instance, prorated to the actual duration",
      "claim":"14 calendar days after the end of the month, the shortest deadline in the set",
      "proof":"A simple notification with the affected server IDs suffices, but only outages demonstrated by the customer and verified by Hetzner count",
      "plans":"All Cloud Servers. Dedicated servers, Storage Box, object storage, firewalls and load balancers are excluded.",
      "note":"A commitment of commercially reasonable efforts, not of result, and availability is judged at the host: an instance that booted and shows CPU activity counts as available even if your traffic cannot reach it. Required live migrations, DDoS and hacker attacks are all excluded from downtime." },
    { "id":"hetzner-dedicated", "provider":"Hetzner", "service":"Dedicated servers", "target":null, "model":"none",
      "tiers":[], "cap":null,
      "base":"Not applicable",
      "claim":"Not applicable",
      "proof":"Not applicable",
      "plans":"No SLA document exists for this product line",
      "note":"The only availability wording is in the general terms and conditions: economically reasonable efforts toward a 99.9% annual average network availability at the data centres. Annual, averaged, network-only, best-effort, and with no credit mechanism." },
    { "id":"ovh-public", "provider":"OVHcloud", "service":"Public Cloud compute", "target":99.99, "model":"ladder",
      "tiers":[[99.9,99.99,10],[99.8,99.9,25],[0,99.8,50]], "cap":50,
      "base":"Monthly cost of the impacted instance",
      "claim":"Opening an incident ticket in the control panel is the condition. No deadline is published because the mechanism replaces it.",
      "proof":"OVHcloud monitors by ARP ping. If your configuration prevents that monitoring, the SLA does not apply at all.",
      "plans":"Every range, including the cheapest, but the cheap ranges get lower targets and different ladders",
      "note":"The unavailability counter starts when the ticket is opened, not when the outage began. A 67-minute outage reported after 40 minutes is formally a 27-minute outage. Credits must be used within the following calendar month or they are lost, and diagnosing an incident that turns out not to be theirs may be invoiced." },
    { "id":"ovh-vps-starter", "provider":"OVHcloud", "service":"VPS Starter", "target":99.5, "model":"ladder",
      "tiers":[[99.0,99.5,10],[0,99.0,50]], "cap":50,
      "base":"Monthly cost of the impacted service",
      "claim":"Incident ticket in the control panel",
      "proof":"ICMP ping monitoring by OVHcloud",
      "plans":"The cheapest VPS range has its own, lower ladder",
      "note":"Unavailability for VPS is counted only above three consecutive minutes and only from the moment the customer opens the ticket." },
    { "id":"ovh-dedicated-rise", "provider":"OVHcloud", "service":"Dedicated server, Rise range", "target":99.9, "model":"blocks",
      "tiers":[], "blockMinutes":30, "blockPct":5, "cap":50,
      "base":"Monthly cost of the unavailable dedicated servers",
      "claim":"Incident ticket in the control panel",
      "proof":"OVHcloud monitoring",
      "plans":"All dedicated ranges, with targets from 99.9% on Rise, So You Start and Kimsufi up to 99.99% on Scale and High Grade",
      "note":"Dedicated servers are not credited in ladder percentages but in blocks: 5% of the monthly cost for every 30 minutes of unavailability begun beyond the SLA, capped at 50%. The 99.99% on the Scale and High Grade ranges is conditional on the customer having configured link aggregation; without it the guarantee drops to 99.95%." },
    { "id":"vercel", "provider":"Vercel", "service":"Enterprise", "target":99.99, "model":"ladder",
      "tiers":[[99.1,99.98,10],[95.0,99.0,25],[0,95.0,50]], "cap":50,
      "base":"Monthly fees for the respective services",
      "claim":"In writing within 30 days",
      "proof":"Log files showing unscheduled downtime and the date and time. Non-compliance forfeits the credit.",
      "plans":"Enterprise only. There is no published SLA for Hobby or Pro, and the terms exclude preview deployments explicitly.",
      "note":"Two bands earn nothing: 99.98% to 99.99% is below target but has no rung, and 99.0% to 99.1% is not assigned to any rung in the document at all. Excused downtime is subtracted from the denominator rather than counted as downtime, and it includes the failure of the Internet in general. The SLA also does not cover parts of the platform that do not serve customer content, naming the API and CLI." },
    { "id":"netlify", "provider":"Netlify", "service":"All plans", "target":null, "model":"none",
      "tiers":[], "cap":null,
      "base":"Not published",
      "claim":"Not published",
      "proof":"Not published",
      "plans":"A 99.99% SLA appears as a bullet on the Enterprise pricing tier and nowhere else",
      "note":"No SLA document is published at all: every candidate legal URL returns 404 and there is no public legal index. For the free tier the self-serve agreement says outright that projects have no service level commitments and may be shut down without notice, and for paid self-serve it disclaims that the service will be uninterrupted or error free." },
    { "id":"fastly-supported", "provider":"Fastly", "service":"Network Services with Gold or Enterprise Support", "target":100.0, "model":"ladder",
      "tiers":[[99.99,100.0,1],[99.9,99.99,5],[99.0,99.9,10],[98.0,99.0,25],[0,98.0,50]], "cap":50,
      "base":"The monthly usage charge multiplied by the credit percentage",
      "claim":"Within 30 days of the period of degraded performance. Credits land on the invoice two months later.",
      "proof":"No evidence list, but degraded performance must be observable or reproducible by you or Fastly",
      "plans":"Credits require a paid Gold or Enterprise support plan. An unpaid or month-to-month account gets nothing.",
      "note":"The only ladder in the set that starts paying below 100% rather than below 99.9%, and the only one that quantifies a right to walk away: an outage longer than 7.2 hours in a month, or three consecutive months over 43.8 minutes each, gives 30 days to terminate a committed contract. Degraded performance also requires that you redirected traffic off Fastly, so an outage you waited out formally does not qualify." },
    { "id":"fastly-mtm", "provider":"Fastly", "service":"Month-to-month or unpaid account", "target":null, "model":"none",
      "tiers":[], "cap":null,
      "base":"Not applicable",
      "claim":"Not applicable",
      "proof":"Not applicable",
      "plans":"The SLA table lists Service Level Agreement as None for unpaid and month-to-month accounts, and Termination Option only for a termed contract without Gold or Enterprise support",
      "note":"Paying for the CDN month to month buys no availability commitment. A termed contract without a paid support plan buys the right to leave, not a single dollar of credit." },
    { "id":"render", "provider":"Render", "service":"All plans", "target":null, "model":"none",
      "tiers":[], "cap":null,
      "base":"Not published",
      "claim":"Not published",
      "proof":"Not published",
      "plans":"Enterprise only, and even there the pricing page says contractual uptime SLAs in the plural without naming a percentage",
      "note":"No SLA document exists and the terms of service contain no service-level language at all. Scale, at 499 USD per month plus compute, is the most expensive plan found anywhere in this set that still carries no availability commitment. The terms instead disclaim that the service will be available at any particular time, and cap total liability at the greater of what you paid or 100 USD." },
    { "id":"flyio", "provider":"Fly.io", "service":"Enterprise Support", "target":99.9, "model":"ladder_unpublished",
      "tiers":[], "cap":null,
      "base":"Not published",
      "claim":"Not published",
      "proof":"Not published",
      "plans":"The 99.9% uptime SLA is the last bullet on the Enterprise Support plan at 2,500 USD per month and up, a cost independent of your compute bill. Standard at 29 USD and Premium at 199 USD do not have it.",
      "note":"No SLA document exists: the legal index returns 403 and the terms of service contain none of the words service level, SLA or uptime. The disclaimer says the opposite of the marketing bullet, that operation of the services is not warranted to be uninterrupted." }
  ]
}
