Skip to content

Reading the wire

This is the tab the rest of the application is built around. When a request misbehaves, the body is usually the last place the answer is.

The Timeline

Every event, timestamped from the moment the request began:

    0.3  * Resolving hostname api.github.com
   26.5  *   api.github.com → 140.82.116.5 (IPv4)
   67.2  * Connected to api.github.com (140.82.116.5) port 443
   67.2  * ALPN: offering http/1.1
  116.8  * TLS handshake complete
  116.8  *   version: TLSv1.3
  116.8  *   cipher:  TLS_AES_128_GCM_SHA256
  116.8  * Server certificate:
  116.8  *   subject:     CN=*.github.com
  116.8  *   issuer:      CN=Sectigo Public Server Authentication CA DV E36
  116.8  *   expire date: Sep 29 23:59:59 2026 GMT (59 days remaining)
  116.8  *   certificate verify ok.
  116.8  *   chain depth: 4
  116.8  > GET /repos/nodejs/node HTTP/1.1
  116.8  > Host: api.github.com
  334.1  < HTTP/1.1 200 OK

The numbers on the left are milliseconds from zero. The gaps between them are the answer to most performance questions.

In the example above, 26 ms went to DNS, 41 ms to the TCP connect, 50 ms to the TLS handshake — and 217 ms waiting for the server to say anything. That last number is the only one the server controls.

What each mark means

*Something the client did or observed.
>Bytes sent.
<Bytes received.
!An error.

Timing

The same information as a waterfall, split into DNS, TCP, TLS, time-to-first-byte and download.

Use it to answer "why is this slow" without guessing. A slow handshake and a slow server look identical from the outside and have nothing to do with each other.

Connection

Which IP answered, which port, whether the connection was reused, and which ALPN protocol was agreed.

Connection reuse matters more than it looks. A benchmark that silently reconnects every time is measuring the handshake, not the endpoint — and nothing else will tell you that is what happened.

Certificate

The full chain the server presented: subject, issuer, validity, SANs and chain depth for every hop.

Expiry is counted in days remaining, because that is the number you actually wanted.

Wire

The request and the response as text, headers and body together, in the order they went over the connection. Copy the whole exchange with Copy exchange.

Bodies are shown as received. Tick Pretty-print bodies to format them — untick it when you need to see exactly what arrived, which is the point of this tab.

No account. No cloud. No telemetry.