Website Uptime Checker
Professional client-side uptime monitoring dashboard. Tracks reachability, latency, and uptime percentage for multiple endpoints with real-time audio alerts and CORS-bypass techniques.
About
This Client-Side Uptime Monitor enables real-time tracking of web infrastructure availability directly from your browser. Unlike server-side monitors (e.g., Pingdom), this tool measures connectivity from the user's perspective, detecting local ISP issues, DNS propagation delays, and edge-case routing failures that centralized servers might miss.
The tool utilizes fetch with mode: "no-cors" to bypass Cross-Origin Resource Sharing (CORS) restrictions. This allows the dashboard to detect server reachability (TCP handshake completion) even for servers that do not explicitly allow cross-origin requests. While this method returns an opaque response (hiding specific HTTP status codes like 200 or 404), it provides a binary status of Reachable versus Network Failure.
Key Capabilities:
1. Latency Analysis: Calculates the Round Trip Time (RTT) using high-precision performance.now() timestamps.
2. Heuristic Failure Detection: Identifies downtime via DNS resolution failures, connection timeouts, or SSL handshake aborts.
3. State Retention: All configuration and historical metrics are persisted locally, allowing long-term uptime percentage calculation without external databases.
Formulas
The core metric for availability is the Uptime Percentage (U), calculated over a sliding window of check events (E).
Where the indicator function is_up is defined by the network promise resolution:
Latency (tlat) is derived from the High Resolution Time API:
Reference Data
| Protocol | Method | Capability | Limitation |
|---|---|---|---|
| Standard Fetch | GET / HEAD | Full HTTP Status (200, 404, 500) | Blocked by CORS on 99% of external sites. |
| Opaque Fetch | mode: "no-cors" | Verifies TCP/IP Connectivity | Cannot distinguish 200 OK from 404 Not Found. |
| Img Beacon | new Image() | Legacy Support | Restricted to image MIME types; slower execution. |
| Resource Timing | performance.getEntries() | Detailed DNS/TCP Metrics | Requires Timing-Allow-Origin header. |