Type: JavaScript Property (navigator.connection.downlink)
Data Source: Browser's Network Information API
When Available: Chromium-based browsers (Chrome, Edge, Opera, Brave), not supported in Firefox or Safari
Return Type: Number (megabits per second, Mbps)
The navigator.connection.downlink property returns an estimate of the effective bandwidth in megabits per second (Mbps). This is part of the Network Information API and represents the browser's best estimate of available download speed based on recent network activity.
Historical Context:
Key Characteristics:
Typical Value Ranges:
| Speed (Mbps) | Connection Type | Typical Usage Scenarios |
|---|---|---|
| 0.05 - 0.1 | Very slow 2G/EDGE | Text-only browsing, basic email |
| 0.15 - 0.3 | 2G/EDGE | Basic web browsing, compressed images |
| 0.4 - 0.7 | Slow 3G | Web browsing, low-quality streaming |
| 1.0 - 3.0 | 3G/HSPA | Standard definition video, moderate browsing |
| 4.0 - 8.0 | 4G LTE/Fast Wi-Fi | HD video streaming, large file downloads |
| 10.0+ | Fast 4G/5G/Fiber/Cable | 4K video, large downloads, gaming (often capped at 10.0) |
Important Notes:
Real-World Examples:
Legitimate Uses:
Example Implementations:
Example Code:
if (navigator.connection.downlink < 1.5) { /* Load low-res images */ }if (navigator.connection.downlink > 5) { /* Preload next page */ }Browser Support:
| Browser | Support | Notes |
|---|---|---|
| Chrome | Yes (v61+) | Full support, reliable implementation |
| Edge | Yes (v79+) | Full support on Chromium-based Edge |
| Opera | Yes (v48+) | Full support |
| Brave | Yes | Supported, may be limited in strict privacy modes |
| Firefox | No | Not implemented; navigator.connection undefined |
| Safari | No | Not implemented; privacy concerns cited |
| Mobile Chrome | Yes | Works on Android, more variable readings |
| Mobile Safari | No | Not supported on iOS |
Why Limited Support?:
Fallback Strategy:
if (navigator.connection?.downlink)effectiveType as alternativeTracking Risk: LOW
Privacy Concerns:
Why Low Risk:
Entropy Analysis:
effectiveType and RTTHow to Control Download Speed Reporting:
Browser Choice:
Privacy Extensions:
navigator.connectionTesting Current Value:
navigator.connection?.downlinksetInterval(() => console.log(navigator.connection?.downlink), 5000)Developer Tools:
Limitations:
Privacy Best Practices:
Comprehensive documentation for the downlink property
Complete overview of the Network Information API
Official W3C specification for the API
Using network information for adaptive content delivery
Browser compatibility information
Google's guide to using the Network Information API