HTTP version history in short
HTTP has evolved to be faster and safer: from the simple 0.9, to 1.1 keep-alive, to HTTP/2 multiplexing, and HTTP/3 over QUIC. Here’s the quick tour.
Quick timeline
Knowing the milestones helps when designing or debugging.
Key milestones
- HTTP/0.9 (1991-ish): GET only, no headers, plain HTML.
- HTTP/1.0 (1996): Headers, status codes, Content-Type; one request per connection.
- HTTP/1.1 (1997): Keep-Alive by default, pipelining, Host header required, chunked transfer, Cache-Control.
- SPDY (2009): Experimental multiplexing, header compression, prioritization → fed into HTTP/2.
- HTTP/2 (2015): Binary framing, multiplexing, header compression (HPACK), prioritization.
- HTTP/3 (2022): Runs over QUIC (UDP). Faster handshakes, better loss recovery, header compression is QPACK.
What changed by version
Each revision tackled specific pain points.
HTTP/1.0 → 1.1
- Persistent connections reduce handshake overhead.
- Host header makes virtual hosting practical.
- Chunked transfer enables streaming-style responses.
- Cache-Control and ETag clarify caching behavior.
HTTP/1.1 → 2
- Multiplexing in a single connection, easing head-of-line blocking.
- Header compression (HPACK) cuts overhead.
- Prioritization helps critical resources arrive first.
- Binary framing for extensibility.
HTTP/2 → 3
- Transport changes to QUIC over UDP; connection IDs survive path changes and handshakes are faster.
- Loss recovery reduces head-of-line blocking impact.
- Header compression moves to QPACK; TLS is built into QUIC (encryption by default).
Using them today
1.1 is still common; 2 is the default for most browsers/CDNs; 3 support is growing but real-world share remains modest.
Practical notes
- Modern browsers/CDNs do HTTP/2/3; ALPN negotiates the preferred protocol.
- HTTP/3 can be blocked on some networks (UDP). Keep HTTP/2/1.1 as fallback.
- Live traffic share of HTTP/3 is still relatively low and varies by CDN/region/ISP—enable gradually and watch logs.
- Legacy 1.1 clients remain; servers often serve multiple versions in parallel.
- Monitor per-version metrics (handshake time, retransmits, QoE) to locate issues.
Takeaway
HTTP keeps moving toward “persistent, parallel, encrypted by default.” Plan for coexistence of versions, favor HTTP/2 and HTTP/3 where possible.