padding
padding adds filler bytes to keep the ClientHello at a size that old middleboxes handle. Few current clients send it.
What it is
padding (extension 21) is defined in RFC 7685. It carries nothing but zero bytes, added to change the size of the ClientHello.
It was created as a workaround for at least one TLS implementation that hung on ClientHello records between 256 and 511 bytes long. Clients whose ClientHello landed in that range padded it up to at least 512 bytes so that these devices would not break the handshake.
Modern ClientHello messages are much larger, mainly because of post-quantum key shares and Encrypted Client Hello, so they are well past the problem range and padding is rarely needed. Some TLS libraries still add it whenever their ClientHello would otherwise fall in the affected size range.
Because it carries only zeros, the extension has no effect on security.
Who sends it
Measured on 2026-10-25 against our own test server: sent by 3 of 12 clients. Position counts from 1 and ignores GREASE values.
Why it matters for fingerprinting
In our measurements only Debian curl and both curl-impersonate profiles send it. Chrome 153, curl_cffi, Python requests, httpx, Go net/http, Node.js fetch and Guzzle do not. An impersonation profile that still sends padding while claiming a current Chrome therefore looks outdated.
Check whether your client sends it
Open the test from your browser, or call it from your script, and look for padding in the TLS details.
Run the TLS fingerprint test