TLS 1.3 Handshake Size Calculator

Pick a KEM and signature scheme, or load a preset. The page computes how many bytes the server sends on its first flight (ServerHello, certificate chain, CertificateVerify, Finished) and compares that total to three thresholds that decide whether the client gets everything in one round trip.

You will see three status chips. IW10 (14,600 B) is the default TCP initial congestion window from RFC 6928: a flight that fits inside it arrives in one round trip. IW20 (29,200 B) is the larger initial window that modern stacks and CDNs commonly use. QUIC 3x (3,600 B) is the anti-amplification limit in RFC 9000 section 8.1: a flight larger than three times the client's Initial packet pauses the server until the client acknowledges, adding a round trip. Each chip shows whether the current configuration fits the threshold and by how many bytes.

All math runs in your browser from published FIPS 203, 204, 205, and draft 206 primitive sizes. No network calls.

Load a configuration

Parameters

Server-to-client first flight

IW10 (14,600 B)-
IW20 (29,200 B)-
QUIC 3x (3,600 B)-
ClientHello key share-
ServerHello key share-
Certificate chain-
CertificateVerify signature-
OCSP staple-
Server flight total-
Packets at 1,460 B MSS-
Per-certificate breakdown

What the thresholds mean

IW10 and IW20

TCP starts every connection with an initial congestion window. RFC 6928 fixed this at 10 segments (IW10 = 14,600 B at a 1,460 B MSS). Many modern stacks use an initial window of 20 segments (IW20 = 29,200 B). A server flight that fits inside IW10 reaches the client in one round trip. A flight that exceeds IW10 but fits IW20 depends on the stack. Exceeding IW20 guarantees at least one extra RTT of round-trip delay before the ACK allows the window to grow.

QUIC 3x amplification limit

RFC 9000 section 8.1 caps the server at sending no more than three times the bytes it has received from an unverified client address. A typical client Initial packet is ~1,200 B, so the server can send about 3,600 B before it has to pause for address validation. A PQC certificate chain that blows past that limit stalls the handshake waiting for a client ACK.

Chain depth and the root

TLS 1.3 servers send the leaf and intermediates. The root stays in the client trust store and is not on the wire. Even so, the root's signature scheme sets the sig field size of the deepest intermediate that is transmitted, which is why this calculator asks for a CA signature scheme.

Sources

Numbers are estimates of the TLS record-layer bytes before encryption framing overhead. Real captures vary by a few hundred bytes depending on extension choice, OCSP response contents, cert subject length, and whether SCTs are stapled vs. embedded. Use this as a sizing tool, not a packet-level simulator.