Three new properties are now available on request.cf in Workers that expose Layer 4 transport telemetry from the client connection. These properties let your Worker make decisions based on real-time connection quality signals — such as round-trip time and data delivery rate — without requiring any client-side changes.
Previously, this telemetry was only available via the Server-Timing: cfL4 response header. These new properties surface the same data directly in the Workers runtime, so you can use it for routing, logging, or response customization.
New properties
| Property | Type | Description |
|---|---|---|
clientTcpRtt | number | undefined | The smoothed TCP round-trip time (RTT) between Cloudflare and the client in milliseconds. Only present for TCP connections (HTTP/1, HTTP/2). For example, 22. |
clientQuicRtt | number | undefined | The smoothed QUIC round-trip time (RTT) between Cloudflare and the client in milliseconds. Only present for QUIC connections (HTTP/3). For example, 42. |
edgeL4 | Object | undefined | Layer 4 transport statistics. Contains deliveryRate (number) — the most recent data delivery rate estimate for the connection, in bytes per second. For example, 123456. |
Example: Log connection quality metrics
export default { async fetch(request) { const cf = request.cf;
const rtt = cf.clientTcpRtt ?? cf.clientQuicRtt ?? 0; const deliveryRate = cf.edgeL4?.deliveryRate ?? 0; const transport = cf.clientTcpRtt ? "TCP" : "QUIC";
console.log(`Transport: ${transport}, RTT: ${rtt}ms, Delivery rate: ${deliveryRate} B/s`);
const headers = new Headers(request.headers); headers.set("X-Client-RTT", String(rtt)); headers.set("X-Delivery-Rate", String(deliveryRate));
return fetch(new Request(request, { headers })); },};For more information, refer to Workers Runtime APIs: Request.
Source: Cloudflare





