v145 · Web APIs · TCP Pool Demo

TCP Pool Demo

Fires 12 parallel resource requests to the same origin and uses Resource Timing to visualise request start times — showing concurrent batch sizes that reflect the (randomized) connection pool limit.

This demo uses requests to the same origin. In HTTP/2 environments (like this page), requests are multiplexed and all start immediately regardless of limit. For HTTP/1.1, the limit would batch requests. The timeline shows measured fetch times from Resource Timing, not the raw connection pool.

parallel request timing

Requests fired
All complete
Total duration
Observed parallelism

Click “Run demo”

code

// Fire N parallel requests and read their timing
const N = 12;
const url = '/public/styles.css';
performance.clearResourceTimings();

const t0 = performance.now();
await Promise.all(Array.from({ length: N }, () =>
  fetch(url, { cache: 'no-store' }).then(r => r.text())
));

const entries = performance.getEntriesByName(location.origin + url);
// fetchStart times reveal when each request was actually dispatched.
// In HTTP/1.1: requests queue if pool is exhausted (see batching).
// In HTTP/2: all start near-simultaneously (multiplexed).

// With Chrome 145 randomized pool limit, the batch size in HTTP/1.1
// varies between sessions, making fingerprinting unreliable.

see also