HTTP/2 vs HTTP/1.1 Performance
HTTP/2 speeds up web traffic with multiplexing, header compression, and reuse.
HTTP/2 is faster than HTTP/1.1 in many real web workloads because it reduces the transport inefficiencies that grew around older browser behaviour. HTTP/1.1 improved on HTTP/1.0 by allowing persistent connections, but it still handled responses in a way that made parallel page loading awkward. Browsers often opened several TCP connections to the same origin just to fetch many assets at once, which added connection setup cost, duplicate congestion state, and head of line blocking at the application layer.
HTTP/2 changes the format and the connection model. Instead of plain text messages sent one after another, it uses binary framing. More importantly, it multiplexes many independent streams over a single connection. That means the browser can ask for HTML, CSS, JavaScript, images, and other resources concurrently without opening a new TCP connection for each small burst of work. The server can interleave frames from different responses, so one slow response no longer blocks every later response at the protocol layer.
Header compression is another gain. Modern web requests often carry large, repetitive headers such as cookies, user agents, authentication values, and caching metadata. HTTP/2 uses HPACK to compress those headers efficiently across requests on the same connection. For small assets, header overhead can be a meaningful share of total bytes, so reducing it helps latency and bandwidth use.
Connection reuse matters too. One long lived connection means fewer TCP handshakes and, under TLS, fewer expensive negotiations. It also lets congestion control learn the path once instead of resetting across many short connections. This tends to help pages with lots of small resources, which was one of the classic pain points of HTTP/1.1.
That said, HTTP/2 is not magic. It still runs on top of TCP in most deployments, so packet loss at the transport layer can still cause head of line blocking for all streams sharing that connection. This is one reason HTTP/3, which runs over QUIC on UDP, was later introduced. HTTP/2 also made some older front end tricks less necessary. Domain sharding and aggressive asset concatenation were often workarounds for HTTP/1.1 limits, and they can become counterproductive once multiplexing is available.
Another nuance is server push. It was once promoted as a major HTTP/2 feature, but it saw limited success in practice because predicting what a client needs is hard and browsers improved caching and preload mechanisms. The real wins usually come from multiplexing, compression, and fewer redundant connections rather than from push.
So HTTP/2 is faster because it uses the network path more efficiently for modern web traffic. It lowers protocol overhead, improves concurrency, and makes better use of one connection. The improvement is largest when a page fetches many related resources and the server is configured well. It does not override slow application code, poor caching, or large payloads, but it removes several long standing HTTP/1.1 bottlenecks that used to make those pages slower than they needed to be.