This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.
Note: This feature is available in Web Workers.
The connectStart read-only property returns the timestamp immediately before the user agent starts establishing the connection to the server to retrieve the resource.
The connectStart property can have the following values:
DOMHighResTimeStamp immediately before the browser starts to establish the connection to the server to retrieve the resource.0 if the resource was instantaneously retrieved from a cache.0 if the resource is a cross-origin request and no Timing-Allow-Origin HTTP response header is used.The connectStart and connectEnd properties can be used to measure how long it takes for the TCP handshake to happen.
const tcp = entry.connectEnd - entry.connectStart;
Example using a PerformanceObserver, which notifies of new resource performance entries as they are recorded in the browser's performance timeline. Use the buffered option to access entries from before the observer creation.
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
const tcp = entry.connectEnd - entry.connectStart;
if (tcp > 0) {
console.log(`${entry.name}: TCP handshake duration: ${tcp}ms`);
}
});
});
observer.observe({ type: "resource", buffered: true });
Example using Performance.getEntriesByType(), which only shows resource performance entries present in the browser's performance timeline at the time you call this method:
const resources = performance.getEntriesByType("resource");
resources.forEach((entry) => {
const tcp = entry.connectEnd - entry.connectStart;
if (tcp > 0) {
console.log(`${entry.name}: TCP handshake duration: ${tcp}ms`);
}
});
If the value of the connectStart property is 0, the resource might be a cross-origin request. To allow seeing cross-origin timing information, the Timing-Allow-Origin HTTP response header needs to be set.
For example, to allow https://developer.mozilla.org to see timing resources, the cross-origin resource should send:
Timing-Allow-Origin: https://developer.mozilla.org
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
connectStart |
43 | 12 | 35 | 32 | 11 | 43 | 35 | 32 | 11 | 4.0 | 43 | 11 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart