detectdown
Verdicts use cached measurements from the named testing area, not a visitor-triggered local check. testing evidence tested from Chicago tested from Chicago

How we measure

Every verdict on detectdown is backed by cached, timestamped network measurements from independent testing locations. No complaint counts, no tweet volume, no guessing from traffic spikes. Here's the whole methodology, end to end.

Need per-region REST, webhooks, and SLA reports? Paid API early access

This page is generated from the verdict engine's own constants.

What we measure

Three signals. HTTP decides up or down; ping and DNS explain why when it fails.

1 HTTP primary

A real GET against the service's known-good URL. We record status code and time-to-first-byte. A 2xx or 3xx inside the 20-second timeout is healthy, or, for bot-protected entries, the expected status we record per service. CDNs answer ping while origins burn, so HTTP, not ping, carries the "Up" call.

2 Ping classify

ICMP echo to the resolved IP, used to separate "the network can't reach the host" from "the application is broken". Ping never produces an "Up" verdict on its own; it only narrows a failing HTTP check.

3 DNS classify

A live A-record lookup from the same network panel. When resolution fails on networks where the underlying IP still answers ping, that's a DNS issue, a different and often actionable kind of outage from a hard-down origin.

Where the measurements come from

Cached catalog checks from the current North America precision panel, so no single location can decide a verdict.

Routine catalog checks currently run from the North America precision panel, the current measured region. The panel uses independent testing locations operated by third parties. We request each measurement and read back the results.

North America is the only routine measured region today; broader regional coverage and the zone layer remain disabled under the current plan and are future work.

Measurements run in the background for the service catalog and are cached for the status pages. Every monitored service is checked the same way, with no priority tiers. A visitor's location selects the most relevant cached regional framing; loading a page does not start a new measurement or spend measurement budget. Each routine sweep requests up to 6 testing locations per monitored service from North America. Status pages surface each testing city's result with its country and flag your network only when the testing network ASN matches the visitor ASN; precise coordinates are never shared.

Routine checks rotate that testing-location panel to keep every monitored service equally fresh within budget. A region's verdict is never published on one location's opinion alone: when HTTP smoke appears, the affected region is re-checked and can be confirmed by a dense HTTP-only burst of up to 15 testing locations. Ping and DNS stay in the classification path, where they explain whether a failing HTTP result is a network reachability problem or a DNS issue; they are not part of the wide HTTP burst. We only publish Down or Degraded when the trouble is corroborated across at least 2 independent networks. A lone flaky or blocked location is left out as inconclusive.

When a cached measurement came from a testing network whose ASN matches the visitor's own ASN, the result page labels that network as your network. That's the closest thing to "tested from your ISP" an independent testing network can produce, and it's a real differentiator from any tool that measures from a single fixed location.

Measured from 10 testing locations in North America in recent checks. Each service check uses up to 6 testing locations from this pool.

How we read the results

One bad reading is never an outage. Trouble has to show up across independent networks and survive a re-check.

The verdict engine reduces a set of measurements to one label per region. The hard part isn't reading "down", it's not crying wolf when the problem is on our side of the path.

Every testing location we measure from sits on a datacenter network. That's a feature for coverage, but it has a catch we take seriously: plenty of services rate-limit or outright block datacenter IP ranges, and datacenter-to-target paths occasionally just drop. So one location failing to reach a service is not the service being down. It might be that one network being blocked or flaky. We never publish Degraded or Down off a single location, a single network, or a one-off blip. A real problem has to show up across independent networks and hold up on a re-check before it ever reaches the page.

Every measurement is sorted into one of four kinds before any verdict is computed:

Reachable. A healthy 2xx/3xx (or the expected status for a bot-protected service). The service answered normally.
Target error. A completed 5xx. The service answered, badly. This is the strongest "something's wrong at the service" signal.
Refused. A completed 4xx (a 403 bot challenge, a 405 from a WAF rejecting our bare GET, a 406 content-negotiation gate, a 429 rate limit). The service is up, it just won't talk to this client. Reachable, not down.
Couldn't reach it. A timeout, connection refused, TLS error, or no response at all. On its own this is the weakest signal: it can't tell "the service is down" from "this one network can't get there."
Status cells on the homepage, category pages, and service status pages summarize time intervals. Their colors classify service status: working degraded down no data

Only "target error" and "couldn't reach it" can move a verdict toward trouble, and only when they're corroborated across at least 2 independent networks. A 5xx or a timeout seen from a single network is treated as inconclusive, logged as location noise, and left out of the verdict. The escalation re-check reads each troubled region from a panel of independent testing locations, so a region only turns Down or Degraded when the trouble is the majority of that panel, never the one location that happened to be blocked.

Verdict-reading rules
Verdict Rule
Up A majority of testing locations returned a healthy HTTP response inside the 20-second timeout. An isolated location error alongside that majority is location noise, not degradation.
Degraded A 5xx confirmed from two or more independent networks (short of a full Down majority), or median response time more than 3× the service's 7-day regional median and above 800 ms, sustained on 2 consecutive checks.
DNS issue Name resolution failed across two or more independent networks, or failed on those same networks while the underlying IP still answered ping.
Reachable (blocked from our testing networks) The service answers only with refusals, or our datacenter locations can't reach it and the failure isn't corroborated across networks. Its own honest state: reachable, just not from where we test. Not an outage.
Down (regional) Confirmed hard fails in the measured region in the same cycle, corroborated across independent networks.

Because all our locations are on datacenter networks, "reachable (blocked from our testing networks)" is a real and honest answer, not a cop-out: a service can be perfectly up for users while refusing or dropping traffic from our testing locations. Rather than mislabel that as an outage, we name it for what it is.

Some catalog services we monitor sit behind bot protection that always answers a fast block, a 403, 405, 406, or 429, to datacenter traffic. For those we record the expected status per service: a fast block response proves the service is reachable, so we count it as up rather than blocked. A bot gate that is itself failing, a transport error or a 5xx, is outside that band and still reads Down.

The numbers

The exact thresholds the verdict engine runs on. Every value below is rendered from the engine's own constants. When the code changes, this page changes with it.

Verdict-engine thresholds
Threshold Value What it means
HTTP timeout 20 seconds A request that hasn't answered by then is a hard fail, whatever it would eventually have returned.
Degraded by latency 3× · 800 ms · 2 checks Median time-to-first-byte more than 3× the service's 7-day regional median, and above an absolute floor of 800 ms. The condition also has to hold on 2 consecutive checks, and the baseline needs at least 24 in-window samples before this rule fires.
High-confidence confirmation before going public 2 networks When a routine check reports a hard failure, the affected region is re-checked from a panel of independent testing locations. A region turns Degraded or Down only when trouble is corroborated across at least 2 independent networks in that panel, so one bad location cannot count on its own. A burst-corroborated problem can publish in that same cycle.
Fallback persistence before public 2 cycles when no burst corroborates When the burst cannot corroborate a problem, a problem verdict (Degraded, Down, or DNS issue) has to repeat on 2 consecutive measurement cycles before it flips the public verdict, lists the service under "Currently having problems", or opens an incident. Recovery is the opposite: the first healthy cycle clears it at once.
Excluding a fleet-wide measurement glitch 50% If more than 50% of the services measured in one cycle newly look Degraded or Down, we treat it as a problem on our measurement path and briefly hold those flips at the last healthy verdict. If the fleet-wide problem persists across consecutive cycles, the hold stands down and each service still has to pass the normal confirmation rules before an incident opens.
Quarantining an unreliable testing location 50% · 7 days · 20 samples A network that disagrees with peer consensus on more than 50% of its measurements over a rolling 7-day window, once it has at least 20 measurements to judge it on, is quarantined until its good measurements wash out the old disagreements.
Check cadence 15 min · 5 min Every monitored service is checked on the cadence shown here, tightening to the escalated cadence while a published incident is re-checked as capacity allows.
Routine capacity 32 services · 1 region · 6 testing locations · 15 min That routine plan runs about 128 service checks per hour: 32 services times 4 sweeps per hour. Each service check asks for 6 testing locations, for about 768 testing-location results per hour: 128 service checks times 6 testing locations.
Retention 30 days · 90 days Raw per-region measurement rows are kept for 30 days; the aggregates that feed timelines are kept for 90 days.

The cadences are targets, not promises. The honest answer to "how fresh is this verdict?" is the "last checked" stamp on every card and status page. That's the real age of the measurement behind it.

What we don't do

No complaint counts, no tweet volume, no traffic-spike guessing. Ever.

Connect your AI assistant

Use the status board from tools that support remote MCP connectors.

MCP server URL https://detectdown.me/mcp

claude.ai custom connectors: use Customize > Connectors, add a custom connector, paste the URL, then complete the email-code sign-in. Setup guide

ChatGPT: requires ChatGPT web access. OpenAI documents Apps, developer mode, and full MCP support for Business and Enterprise/Edu workspaces; Enterprise/Edu can authorize developers with RBAC. OpenAI also notes Pro users can connect MCPs with read/fetch permissions in developer mode while full MCP remains Business and Enterprise/Edu. Create the app from Apps, Scan Tools, finish OAuth if prompted, then Create. See the full setup guide on Connect. Setup guide

Cursor: add a remote MCP server in Cursor settings with the URL, then follow the OAuth sign-in. Setup guide

Claude Code: add the URL as a remote MCP server, then finish the browser-based authorization flow. Setup guide

VS Code: use Copilot Chat in Agent mode with MCP support, add an HTTP MCP server with the URL, then complete the browser sign-in. Setup guide

Example prompts: "Check GitHub for me" or "What services are having issues right now?"

Full setup guide

We store your verified email address and MCP tool usage so the connector can authenticate and we can understand which monitored services people ask about.

Status data, by API

Programmatic, evidence-based verdicts for your dashboards, alerting, and incident automation. A paid service, in early access.

The same measurements that drive this site, machine-readable: per-region verdicts, uptime history, and webhooks. So "what was the last-known verdict for this third party, and is that answer still fresh?" becomes a question your tooling can act on, with timestamps and stale signals from real network checks instead of complaint counts.

Per-region verdicts over REST, plus webhooks. Know it's down in a region before your users tell you.

Evidence, not complaints. Reliable enough to gate alerts and automation on.

"Is it us or them?" in one call. Stop paging on-call for a third party's outage.

Uptime history and SLA reports. For the vendors you actually depend on.

for teams and MSPs · early access · no spam

Cached reads keep the last known verdict for a bounded window. When it is past the short fresh window, stale is true and the measurement time stays populated.

GET https://api.detectdown.me/v1/status/github
{
  "slug": "github",
  "name": "GitHub",
  "verdict": "Up",
  "verdict_class": "up",
  "per_region": {"NA":"Up"},
  "regions_monitored": ["NA"],
  "measured_at_unix": 1700000000,
  "measured_at": "2023-11-14T22:13:20Z",
  "stale": true
}

Privacy and attribution

Your IP is used once in memory, then dropped. Never stored, never shared.

Your IP address is resolved once in memory for a single MaxMind geolocation lookup. When you submit the API early-access form, a short-lived rate-limit counter also uses the IP address, keyed by a hash of the address, not the raw address. The IP address is not written to disk, it is not shared with the third parties who run our measurements, and it is not retained after the response is rendered. Page views read cached measurements; they do not send visitor-IP-derived city, country, or ASN targeting to measurement providers.

The site also uses privacy-friendly, cookieless analytics. It sets no tracking cookies and collects no personal data, only aggregate page views and a few product events.

GeoLite2 data created by MaxMind, available from maxmind.com.