HTTP/1.1, HTTP/2, and HTTP/3: How the Web Got Faster

A beginner-friendly tour of how HTTP evolved from one-request-at-a-time in HTTP/1.1, to multiplexing in HTTP/2, to QUIC-powered HTTP/3 — and why it speeds up your pages.

Published September 15, 20269 min readBy ACY Partner Indonesia
HTTP/1.1, HTTP/2, and HTTP/3 evolution cover
300 × 250Ad Space AvailablePlace your ad here

Every time you open a web page, your browser and a server have a quiet conversation. They use a shared language called HTTP — short for HyperText Transfer Protocol. It’s the set of rules that decides how a request (“please send me this page”) and a response (“here’s the page”) travel across the internet.

That language has been quietly upgraded over the years, and each upgrade made the web a little faster. In this article we’ll walk through three versions you’ll hear about constantly: HTTP/1.1, HTTP/2, and HTTP/3. You don’t need to be a network engineer to follow along. We’ll use plain words, simple pictures, and a real-world analogy or two. By the end, you’ll understand what changed, why it matters, and why your favorite sites feel snappier than they did a decade ago.

First, what is HTTP actually doing?

Imagine you walk up to a counter at a shop. You ask for one item, the clerk goes to the back, fetches it, and hands it to you. That round trip — your question and their answer — is a single HTTP exchange. On the web, the “you” is your browser (the client) and the “clerk” is the server.

Here’s the simplest version of that conversation:

Browser (client)                 Server
      |                            |
      |  GET /index.html  ----->   |   "request"
      |                            |
      |  <-----  200 OK + page     |   "response"
      |                            |

A modern web page is never just one file, though. It’s the HTML document, plus images, fonts, stylesheets (CSS), and scripts (JavaScript). A single page can easily need dozens or even hundreds of these little fetches. How the protocol handles all those fetches is exactly where the three versions differ — and where the speed story lives.

HTTP vs HTTPS

HTTPS is just HTTP with encryption layered on top (via TLS), so nobody in the middle can read or tamper with the traffic. The version numbers we discuss here (1.1, 2, 3) are about how requests are organized, not about encryption. Today, secure connections are the norm everywhere.

HTTP/1.1: one request at a time per line

HTTP/1.1 became the workhorse of the web for a very long time, and a huge amount of the internet still speaks it. Its core idea is simple: open a connection between browser and server, then send a request and wait for the response before sending the next one.

Think of it like a single checkout lane at a supermarket. Customers line up, and the cashier serves them strictly in order. If the person at the front has a giant cart that takes forever to scan, everyone behind them just waits — even if they only have one item.

That waiting problem has a name: head-of-line blocking. The “head of the line” is the request being handled right now, and it can block everything queued behind it.

HTTP/1.1 on one connection (requests handled in order):

  [ request A ] --> [ response A ]
                    then...
  [ request B ] --> [ response B ]
                    then...
  [ request C ] --> [ response C ]

Browsers worked around this by opening several connections to the same server at once — like opening a few checkout lanes instead of one. That helped, but each connection costs time and resources to set up, and there’s a practical limit to how many a browser will open. Developers also invented tricks (bundling many small files into one big file, sticking small images together into a “sprite”) just to reduce the number of separate requests.

These workarounds kept the web moving, but they were patches on a deeper limitation. The protocol itself needed to get smarter.

HTTP/2: many conversations on one connection

HTTP/2 tackled the head-of-line problem head-on with an idea called multiplexing. Instead of one request blocking the next, many requests and responses can be in flight at the same time over a single connection. Each one is broken into small chunks (called frames) that carry a label saying which request they belong to, so the server and browser can interleave them and reassemble them correctly.

Back to the supermarket: it’s as if one cashier could scan items from several carts at once, weaving between them, instead of finishing one cart before touching the next.

HTTP/2 on ONE connection (interleaved):

  request A -.                .- response A
  request B  >--- one pipe ---<  response B
  request C -'                '- response C

  all in flight together, no waiting in line

HTTP/2 brought a second meaningful win: header compression. Every request and response carries headers — small bits of metadata like which browser you’re using, what content types you accept, and cookies. These repeat a lot across the many requests a page makes. HTTP/2 compresses them, so the same information isn’t re-sent in full over and over. Less repeated data means less to transfer.

What you get for free

Most of HTTP/2’s benefits arrive automatically once your server and the visitor’s browser both support it. You usually don’t change your application code at all — the protocol just organizes the traffic more efficiently underneath.

There’s one catch worth knowing. HTTP/2 solved head-of-line blocking at the HTTP level, but it still runs on top of a lower-layer protocol called TCP. TCP delivers data strictly in order, so if a single packet goes missing and has to be re-sent, everything behind it waits for that packet — even unrelated requests sharing the connection. The blocking moved down a layer rather than disappearing entirely. That’s the exact problem the next version was designed to fix.

HTTP/3: a fresh foundation with QUIC

HTTP/3 keeps the good ideas from HTTP/2 — multiplexing, header compression — but rebuilds the foundation underneath. Instead of running on TCP, it runs on a newer transport called QUIC, which is built on top of UDP.

Here’s the part to remember: QUIC understands that a connection carries multiple independent streams. If one stream loses a packet, only that stream waits for the missing piece — the others keep flowing. The lost-packet logjam that lingered in HTTP/2 is gone.

QUIC also makes setting up a connection faster. Establishing a secure connection normally involves a handshake — a few back-and-forth messages before any real data flows. QUIC folds the connection setup and the encryption setup together, cutting down those round trips. On networks where each round trip is slow (think mobile data, or a far-away server), shaving off setup time is noticeable.

Connection setup, roughly:

  Older style:  hello -> hello back -> secure? -> yes -> NOW send data
  QUIC (HTTP/3): hello + secure together -> NOW send data   (fewer trips)

One more practical perk: because QUIC tracks a connection by an ID rather than by your exact network address, it can survive a network switch more gracefully. If your phone hops from Wi-Fi to mobile data mid-download, the connection has a better chance of continuing instead of starting over.

Newer doesn't mean automatic everywhere

HTTP/3 support depends on both the server and the visitor’s network allowing QUIC traffic over UDP. Some networks and older equipment restrict UDP, in which case the browser simply falls back to HTTP/2 or HTTP/1.1. This fallback is normal and built-in — your site keeps working, just on whatever version both sides can agree on.

Side-by-side: the three versions

Here’s the whole story in one table. Read it top to bottom to see how each problem got addressed by the next version.

Aspect HTTP/1.1 HTTP/2 HTTP/3
Requests per connection One at a time (in order) Many at once (multiplexed) Many at once (multiplexed)
Head-of-line blocking Yes, at the request level Reduced, but TCP can still stall streams Largely solved per stream
Underlying transport TCP TCP QUIC (over UDP)
Header handling Sent in full each time Compressed Compressed
Connection setup Multiple round trips Multiple round trips Fewer round trips
Network switch survival Connection breaks Connection breaks Can continue more gracefully
Common workaround needed Bundling, multiple connections Far fewer needed Far fewer needed

The trend is clear: each version moves more of the cleverness into the protocol, so developers need fewer hand-built tricks, and pages load with less waiting.

Why this matters for real pages

You might wonder how much this actually changes day to day. Quite a lot, especially on pages with many resources or on slower connections.

  • Fewer traffic jams. Multiplexing means a slow image no longer holds up the stylesheet or script your page needs to start rendering.
  • Less wasted data. Header compression trims repeated overhead, which adds up across a page that makes many requests.
  • Faster starts. QUIC’s quicker setup means the gap between “user clicks a link” and “first bytes arrive” shrinks, which is most felt on mobile and long-distance connections.
  • Fewer hacks to maintain. The old habit of mashing files together to dodge the per-request cost matters less, so codebases can stay simpler.

For a business like ACY Partner Indonesia running a content-heavy site, these gains translate into pages that feel responsive even when a visitor is on a phone with patchy signal. Speed isn’t a vanity metric — it affects how long people stay and whether they come back.

You don't pick the version by hand

When a browser connects to a server, the two negotiate the best version both support, automatically. As a site owner you mostly enable newer versions on the server (or your hosting/CDN does it for you) and the rest happens behind the scenes. Visitors never choose a version, and neither does your application code.

Recap

Let’s pull the thread together. HTTP is the language browsers and servers use to swap requests and responses, and it has grown up in three big steps:

  • HTTP/1.1 sends one request at a time per connection, so a slow response can block everything behind it — the head-of-line blocking problem. Developers worked around it with multiple connections and file bundling.
  • HTTP/2 introduced multiplexing (many requests sharing one connection without waiting in line) and header compression, removing much of the blocking and repeated data. But it still sat on TCP, which could stall streams when a packet was lost.
  • HTTP/3 moves to QUIC over UDP, isolating packet loss to individual streams, speeding up connection setup, and handling network switches more gracefully.

The big picture: every version pushed more intelligence into the protocol itself, so the web gets faster without developers having to fight the plumbing. If you want to go deeper from here, a natural next step is to look at how individual HTTP requests are structured — the methods like GET and POST, status codes like 200 and 404, and the headers that carry all that metadata we mentioned. Those building blocks are the same across every version, and understanding them makes everything else click into place.

Tags:httphttp2http3quicperformanceweb-fundamentals
728 × 90Ad Space AvailablePlace your ad here

Related Articles

See All Articles

You Might Also Like

Browser compatibility and polyfills cover with code chip if not supported, polyfill
Web Fundamentals / Browsers

Browser Compatibility and Polyfills

Why the same web page can look or behave differently across browsers, and how feature support, progressive enhancement, polyfills, and transpilers help your site work everywhere.

Sep 15, 20269 min read
An Intro to Browser Developer Tools — ACY Partner Indonesia Blog
Web Fundamentals / Browsers

An Intro to Browser Developer Tools

Every browser hides a powerful toolkit behind one key. Meet DevTools and its main panels, and learn how they let you see the DOM, styles, network requests, and storage for yourself.

Sep 15, 202610 min read
Browser Security Basics cover with a same-origin shield code chip
Web Fundamentals / Browsers

Browser Security Basics: How Your Browser Quietly Protects You

A friendly, beginner-first tour of how your browser keeps you safe: the same-origin policy, tab sandboxing, the HTTPS padlock, mixed content, and a gentle intro to why input can be dangerous.

Sep 15, 202611 min read
Browser storage options shown on a dark ACY Partner blog cover
Web Fundamentals / Browsers

Browser Storage: Cookies, localStorage, and More

A beginner-friendly tour of where the browser keeps data: cookies, localStorage, sessionStorage, and IndexedDB. Learn what each one does and when to reach for it.

Sep 15, 20269 min read
Illustration of a browser engine running scripts through an event loop
Web Fundamentals / Browsers

How Browsers Handle JavaScript

A beginner-friendly look at how the browser parses, compiles, and runs JavaScript, why it has one main thread, and how script loading affects what you see on screen.

Sep 15, 20269 min read
Dark blue cover with the title How Browsers Work and a parse to layout to paint code chip
Web Fundamentals / Browsers

How Browsers Work: An Overview

A beginner-friendly tour of what your browser does between typing a URL and seeing a page: networking, parsing, the render tree, layout, paint, compositing, and the JavaScript engine.

Sep 15, 20269 min read