TLS Record Overhead
Wire-byte cost of pushing application data through the TLS record layer — records, tags, headers, and goodput efficiency.
Your recent runs (stored only in your browser)
No calculations yet — results land here so you can compare runs.
The engineering
The TLS record layer chops your application stream into records of at most 16,384 plaintext bytes and wraps each one in a 5-byte header plus cipher-specific expansion — an AEAD tag, and in TLS 1.2 GCM an 8-byte explicit nonce as well. This card counts records, sums the per-record cost, and reports total wire bytes and goodput efficiency. Reach for it when sizing a telemetry downlink, a metered satcom or cellular budget, or a constrained IoT link where CCM-8's truncated tag buys back 8 bytes per record.
The overhead percentage lives and dies by record size: at full 16 kB records TLS 1.3 costs a negligible 0.13%, but a chatty protocol sending 100-byte records pays 22% before TCP/IP even takes its cut. If bytes matter, coalesce writes before they hit the TLS stack — and if you negotiate RFC 8449's record_size_limit downward for a small-RAM endpoint, drop that value into the record-size field here.
Scope check: this is the record layer only. A TLS 1.3 handshake adds roughly 1–5 kB one-time (certificates dominate), and every packet underneath carries ~40+ bytes of TCP/IP headers. TLS 1.3 also permits optional record padding, which this card assumes is zero.
Where this math comes from
TLS descends from SSL, which Netscape built in 1994–95 to make credit-card numbers safe enough for the brand-new web — Taher Elgamal's team shipped SSL 2.0 with the browser, and Paul Kocher's redesign became SSL 3.0 in 1996 after 2.0's flaws piled up. The IETF took it over, and Tim Dierks and Christopher Allen published TLS 1.0 as RFC 2246 in 1999 — politically renamed, technically SSL 3.1. The record format this card counts, 5-byte header and all, traces straight back to that lineage.
TLS 1.2 (RFC 5246, 2008) brought the AEAD ciphers and their explicit-nonce and tag overhead; a decade of attacks on CBC padding (BEAST, Lucky 13, POODLE) then justified a ground-up rework. Eric Rescorla's TLS 1.3 — RFC 8446, August 2018, after 28 drafts and formal verification — encrypted the content type (the extra inner byte), dropped the explicit nonce, and killed CBC entirely, which is why the 1.3 arithmetic here is so much cleaner.
- 1995Netscape / Taher ElgamalSSL 2.0 ships with Navigator — encrypted records reach the mass-market web.
- 1996Paul Kocher / NetscapeSSL 3.0 redesign fixes 2.0 and sets the record-layer framing TLS inherits.
- 1999Tim Dierks & Christopher AllenTLS 1.0 published as RFC 2246 under the IETF.
- 2008IETF TLS WGTLS 1.2 (RFC 5246) adds AEAD suites — GCM's explicit nonce and 16-byte tag.
- 2018Eric Rescorla / IETFTLS 1.3 (RFC 8446) encrypts the content type, drops the explicit nonce, removes CBC.
See the full timeline of the math behind every calculator →
Runs entirely in your browser — nothing you enter leaves this page. Your recent runs are stored only on your device.