Your server returns a 200 OK, but the page takes 18 seconds to load. Your API responds, but with empty data. Your checkout page loads, but the payment form never renders.
Technically up. Functionally down.
Understanding this distinction isn't academic. It affects your SLAs, your monitoring strategy, your incident response, and ultimately how your users experience your product.
What is Downtime?
The Simple Case
Downtime is straightforward: your service is completely unavailable. Users get connection errors, timeout messages, or HTTP 5xx responses. Nothing works.
Common causes of full downtime:
- Server crash or hardware failure
- Network outage
- DNS resolution failure
- Expired SSL certificate (browsers block access)
- Catastrophic deployment failure
- Database server completely down
- DDoS attack overwhelming all resources
Downtime is easy to detect. A simple HTTP check that expects a 200 response will catch it. If the server doesn't respond or returns an error code, it's down.
The clarity is almost a feature: everyone agrees the site is down, the problem is obvious, and the urgency is clear.
What is Degraded Performance?
The Harder Problem
Degraded performance is when your service is technically available but not functioning properly. It responds, but poorly. It loads, but slowly. It works, but partially.
Types of degradation:
Slow response times
Pages that normally load in 2 seconds now take 15. The server responds, so it's "up," but users abandon the page before it finishes loading.
Partial functionality
Your homepage works but your checkout is broken. Your API returns data but authentication fails. Your dashboard loads but graphs are empty.
Intermittent errors
The site works 80% of the time but throws errors randomly. Hard to reproduce, hard to diagnose, infuriating for users.
High error rates
The service is up but 30% of requests fail. The other 70% work fine. Is the site "up" or "down"? Neither, really.
Data issues
The service responds correctly (200 OK) but returns stale data, empty results, or incorrect information. From a monitoring perspective, everything looks fine.
Degradation is insidious because it's ambiguous. There's no clear moment where everything breaks — it slowly gets worse, or it only affects some users, or it only breaks certain features.
The Gray Zone: When "Up" Doesn't Mean "Working"
The Most Dangerous State
The gray zone is where most real incidents happen. Consider these scenarios:
Scenario 1: Memory leak
Your app slowly consumes more memory over days. Response times creep from 200ms to 500ms to 2 seconds to 8 seconds. At no point does it "go down." But user satisfaction drops steadily, bounce rates climb, and conversions fall — all while your uptime dashboard shows 100%.
Scenario 2: Third-party dependency
Your payment provider is having issues. Your site loads perfectly, all pages render, but 40% of checkout attempts fail with a generic error. Your uptime monitoring shows everything is fine because it only checks if your pages load.
Scenario 3: CDN regional issue
Your CDN has problems in Asia-Pacific. European and US users see a fast site. Asian users see a site that takes 20 seconds to load. Your monitoring server is in the US, so it reports 100% uptime with great response times.
Scenario 4: Database degradation
A slow query starts blocking other queries under load. During off-peak hours (when most monitoring checks run), everything is fine. During peak traffic, response times spike to 10+ seconds and some requests timeout.
In all these cases, traditional uptime monitoring reports "UP" with green checkmarks.
How Users Experience Each
Full downtime is dramatic but clear. Users see an error page, they know it's broken, they come back later. Some are annoyed but most understand that things break.
Degraded performance is worse for user trust because it's confusing:
- "Is it my connection or their site?"
- "It worked a minute ago, why not now?"
- "The page loaded but the button does nothing"
- "I submitted the form but nothing happened"
Users blame themselves first, then get frustrated, then leave. They're less likely to come back because the experience was confusing rather than clearly broken.
The data backs this up: a site that's completely down for 10 minutes causes less long-term damage than a site that's painfully slow for 2 hours. Users forgive outages more easily than they forgive unreliability.
From a support perspective, degradation generates more tickets than downtime. During downtime, one tweet or status page update covers it. During degradation, every user has a slightly different experience and a slightly different complaint.
Impact on SLAs and Uptime Calculations
This is where the distinction gets financially real.
Most SLAs define uptime as "the service responds with a non-error status code." By this definition, degraded performance isn't downtime. A 200 OK response that takes 30 seconds still counts as "up."
This creates a gap between what your SLA promises and what your users experience:
| Scenario | SLA Status | User Experience |
|---|---|---|
| Server returns 200 in 200ms | Up | Good |
| Server returns 200 in 15 seconds | Up | Terrible |
| Server returns 200 with empty data | Up | Broken |
| Server returns 503 | Down | Down |
| Server doesn't respond | Down | Down |
Two of these five scenarios are counted as "up" by most SLAs but are functionally broken for users.
If you're building your own SLA as a SaaS founder, consider including response time thresholds, not just availability. For example: "Service is considered available when it responds with a 2xx status code within 5 seconds." This aligns your SLA with actual user experience.
More on SLAs: SLA and Uptime Guarantees Explained
Why Traditional Monitoring Misses Degradation
Basic uptime monitoring does one thing: sends an HTTP request and checks if the response status is 2xx. If yes, the site is "up." This misses:
- Slow responses — a 200 that takes 20 seconds is still a 200
- Partial failures — the homepage works but checkout doesn't
- Content issues — the page loads but with wrong or missing data
- User flow breaks — login works but the session doesn't persist
- Third-party failures — your code works but Stripe/Auth0/CDN doesn't
- Regional issues — works from your monitoring location but not from others
To catch degradation, you need response time monitoring with thresholds, multi-step flow monitoring, content validation, multi-location checks, and real user experience correlation.
How to Monitor for Both
A complete monitoring strategy covers the full spectrum from total downtime to subtle degradation.
Layer 1: Uptime checks (catches downtime)
Basic HTTP checks every 60 seconds from multiple locations. This is your foundation. If the server is completely unreachable, you know immediately.
Layer 2: Response time thresholds (catches slowdowns)
Set a maximum acceptable response time (e.g., 3 seconds). Alert when this threshold is consistently exceeded. Not a single spike — sustained slow performance.
Layer 3: Multi-step flow monitoring (catches partial failures)
Monitor complete user journeys: login, add to cart, checkout, API authentication flows. A single URL check won't tell you if your checkout is broken while your homepage is fine.
Layer 4: SSL and certificate monitoring (prevents downtime)
Don't wait for SSL certificates to expire. Monitor expiry dates and alert well in advance.
Layer 5: Visual monitoring (catches UI degradation)
Automated screenshot comparison catches layout breaks, missing elements, and rendering issues that return 200 OK but look broken to users.
PerkyDash covers all five layers: uptime checks, response time monitoring, API flow monitoring, SSL monitoring, and visual diff detection. From $9/mo.
Start monitoring the full spectrumIncident Response: Different Problems, Different Playbooks
Downtime and degradation require different responses.
Downtime Playbook
- Confirm it's down (check from multiple locations)
- Communicate immediately via status page
- Identify cause (deployment, infrastructure, DNS, SSL)
- Roll back or fix
- Confirm recovery
- Post-mortem
Timeline: minutes. The urgency is obvious. Everyone drops what they're doing.
Degradation Playbook
- Identify what's degraded (which features, which users, which regions)
- Assess severity (is it getting worse? how many users affected?)
- Communicate if user-facing ("Some users may experience slow loading times")
- Investigate root cause (often harder than downtime)
- Decide: fix now or schedule fix? (Depends on severity)
- Monitor the fix closely (degradation can reoccur)
Timeline: potentially hours. The ambiguity makes decisions harder. "Is this bad enough to wake someone up?" "Should we roll back or just monitor?" "Is it getting worse or stabilizing?"
The key difference: downtime is binary and urgent. Degradation requires judgment.
Real-World Examples
Cloudflare (2022)
A configuration error didn't take Cloudflare fully offline but degraded performance for a subset of users in specific regions. For some, sites were down. For others, just slow. For many, fine. Traditional binary monitoring would have missed the nuance.
GitHub (recurring)
GitHub regularly experiences degraded performance where Git operations slow down but the web UI works. Or the web UI is slow but API calls are fine. Their status page wisely distinguishes between "Operational," "Degraded Performance," and "Major Outage" — because the difference matters.
Stripe (checkout impact)
When Stripe has intermittent issues, your site looks fine. Your uptime monitoring shows green. But 15% of customers can't pay. You might not notice for hours unless you're specifically monitoring checkout completion rates.
These examples share a pattern: the most impactful incidents aren't binary up/down events. They're partial, ambiguous, and harder to detect.
Conclusion
The distinction between downtime and degraded performance isn't pedantic — it's practical.
Downtime is obvious, urgent, and easy to detect with basic monitoring. Degradation is subtle, often more damaging, and requires deeper monitoring to catch.
Most teams over-invest in downtime detection (which is the easier problem) and under-invest in degradation detection (which is the more common problem).
If your monitoring strategy only answers "Is the site up?" you're missing the question that matters more: "Is the site working well for users?"
The fix isn't complicated. Layer response time monitoring, flow monitoring, and visual checks on top of your existing uptime checks. Catch both ends of the spectrum.
Related reading: Causes of downtime • Downtime prevention • Downtime cost calculator • Monitoring frequency guide
Monitor Beyond Just Up or Down
PerkyDash detects downtime AND degradation with uptime checks, flow monitoring, and visual diffs. No credit card required.
Frequently Asked Questions
What is the difference between downtime and degraded performance?
Downtime means your service is completely unavailable — users get errors or cannot connect. Degraded performance means the service is technically available but functioning poorly — slow load times, partial failures, or intermittent errors. Both impact users, but degradation is harder to detect.
Is slow website performance considered downtime?
Most SLAs do not count slow performance as downtime. A server returning a 200 OK status code in 20 seconds is technically "up" even though users experience it as broken. This is why monitoring response time thresholds is important alongside basic uptime checks.
How do you monitor for degraded performance?
Use response time thresholds (alert when pages load slower than a set limit), multi-step flow monitoring (check complete user journeys like checkout), content validation (verify responses contain correct data), and multi-location monitoring to catch regional issues.
Which is worse for users: downtime or degraded performance?
Both are bad, but sustained degraded performance can be more damaging to user trust than brief downtime. Users forgive a clear outage more easily than a site that's unreliable and confusing. Degradation also generates more support tickets because each user has a different experience.
Related Guides
Website Downtime Guide
Complete guide to downtime causes, costs, and prevention.
SLASLA and Uptime Guarantees Explained
What 99.9% uptime really means for your business.
EmergencyMy Site is Down — Now What?
Step-by-step plan for when things go wrong.
Downtime12 Common Causes of Downtime
Why websites go down and how to prevent each cause.