Library / Documentation
RFC 9000: QUIC
The standard for QUIC, the UDP-based transport under HTTP/3.
By IETF · IETF · Added 2026-10-12
All content belongs to IETF. We only link to it and give credit. Report a problem
Learn this doc
About 30 min left. Your work is saved as you go.
What you want from these docs
IETF documents a tool you may use. Decide what you want to do with it, then read only what answers that.
Ideas you will meet
- HTTP and QUIC
- HTTP versions, QUIC, caching headers and web performance.
What we already know about this
Our own lessons on these ideas. Read them here before you start, so it makes sense.
Core Concepts: How Things Actually Work · 7 minHTTP/1.1, HTTP/2 and HTTP/3What changed between HTTP versions and why it makes pages faster.Read here
HTTP/1.1
- One request at a time per connection (responses come back in order).
- To fetch many resources, browsers open about six connections per host.
- Each request repeats large text headers.
- A slow response blocks those behind it: head-of-line blocking.
- Keep-alive lets a connection be reused, saving handshakes.
HTTP/2
- Multiplexing: many requests and responses share one connection at the same time, interleaved as separate streams.
- Header compression removes the repeated cost.
- Binary framing is more efficient to parse than text.
- Server push existed but is rarely used and is being phased out.
- Still runs over TCP, so if one packet is lost, TCP holds back all streams until it is resent (head-of-line blocking at the transport layer).
Before: HTTP/1.1: many connections
100%After: HTTP/2: one shared connection
100%What changed
- One connection carries many requests at once
- Headers are compressed
- Old tricks like domain sharding stop helping
HTTP/3
- Runs over QUIC, built on UDP, with encryption (TLS 1.3) included.
- Independent streams: a lost packet only delays its own stream.
- Faster connection setup: fewer round trips, and resuming a previous connection can send data immediately.
- Connection migration: a phone moving from Wi-Fi to mobile data can keep the connection, because it is identified by an ID, not an IP address.
100%Figure SDA-CORE-04-1 · HTTP/3 · © forcsguy.com
100%Figure SDA-CORE-04-2 · What one lost packet does in each version · © forcsguy.com
What this means for you
- Use HTTPS everywhere. Browsers only use HTTP/2 and 3 over TLS.
- Serve through a CDN or server that supports HTTP/2 and 3; clients negotiate automatically and fall back if needed.
- Do not over-optimise for HTTP/1.1 any more. Keep requests cacheable and compressed.
More on this site
Core Concepts: How Things Actually Work · 8 minHow HTTPS worksCertificates, key exchange and encryption in plain language: what the padlock actually proves.Read here
What it provides
HTTPS is HTTP inside TLS. TLS gives three things:
- Confidentiality: outsiders cannot read the traffic.
- Integrity: tampering is detected.
- Authentication: you are talking to the real owner of the domain.
The handshake, simplified
100%Figure SDA-CORE-05-1 · The handshake, simplified · © forcsguy.com
- The browser says which versions and ciphers it supports.
- The server answers with a certificate containing its public key.
- The browser checks the certificate: signed by a trusted authority, matches the domain, not expired, not revoked.
- They run a key exchange (modern TLS uses ephemeral Diffie-Hellman) to agree on a secret that never crosses the network.
- From that secret both sides derive symmetric session keys and encrypt everything after.
TLS 1.3 shortens this to one round trip, and can resume with none.
100%Figure SDA-CORE-05-2 · The order of a secure page load · © forcsguy.com
Image: Mx. Granger · CC0 · Source · Wikimedia Commons: Three padlocksCertificates and trust
A certificate says "this public key belongs to example.com", signed by a certificate authority. Your browser and operating system ship with a list of trusted CAs. A server presents a chain (its certificate, plus intermediates) that leads to one of them.
Free automated certificates (for example from Let's Encrypt) made HTTPS the default. Certificates expire, so renew automatically and monitor expiry: an expired certificate is a common cause of outages.
A useful detail: asymmetric operations are one-way in practice. Anyone can encrypt or verify with the public key, but only the private-key holder can decrypt or sign. That asymmetry is what lets strangers agree on a secret over an open network, and why the session then switches to a much faster shared symmetric key.
Forward secrecy
With ephemeral key exchange, each session uses fresh keys. If the server's long-term key is stolen later, old recorded traffic still cannot be decrypted.
What HTTPS does not do
- It does not make a site trustworthy: phishing sites use HTTPS too.
- It does not hide which site you visit from the network (the domain is visible in DNS and sometimes in the handshake).
- It does not protect data once it reaches the server: you still need good storage security.
Practical checklist
- Redirect HTTP to HTTPS and send an HSTS header so browsers refuse plain HTTP.
- Use TLS 1.2 or 1.3 only; disable old protocols.
- Mark cookies
SecureandHttpOnly. - Automate certificate renewal and alert before expiry.
Real-world reading
Related reading
- Chrome Developers BlogGoogle engineers · GoogleBlogs
- RFC 9000: QUICIETFDocumentation
- Web VitalsGoogle web.dev · GoogleDocumentation
- Domain-Driven Design ReferenceEric Evans · Domain LanguageBooks
Show 6 moreShow fewer
- Traffic Infrastructure (Edge Network) at DropboxDropbox engineers · DropboxCase Studies
- .NET Engineering Blog.NET engineers · .NETBlogs
- Anthropic BlogAnthropic engineers · AnthropicBlogs
- OLX Engineering BlogOLX engineers · OLXBlogs
- monday.com Blogmonday.com engineers · monday.comBlogs
- SurveyMonkey Engineering BlogSurveyMonkey engineers · SurveyMonkeyBlogs
Real-World Systems · 10 minHow a browser turns a URL into a pageFrom the address bar to pixels: navigation, parsing, the render pipeline, JavaScript, and what makes pages fast or slow.Read here
From address bar to HTML
When you press Enter on
https://example.com/page:- The browser decides if it is a URL or a search, and checks its caches (HTTP cache, service worker).
- DNS turns the name into an IP address; a TCP connection and TLS handshake follow (with HTTP/3, QUIC does both at once). See the networking lessons.
- It sends an HTTP request and receives the HTML response, streaming in as it arrives.
A multi-process program
Modern browsers run as several processes for speed and safety:
- a browser process (address bar, tabs, navigation),
- a renderer process per site or tab (parsing, JavaScript, layout, painting),
- a network process, and a GPU process for drawing.
A crashing or malicious page is isolated in its own renderer and cannot read other sites' data.
The rendering pipeline
100%Figure SDA-RWS-11-1 · Browser rendering pipeline · © forcsguy.com
- Parse HTML into the DOM (a tree of elements). Parsing is incremental: the browser starts working before the whole file arrives.
- Parse CSS into the CSSOM. Rendering waits for CSS, because showing unstyled content then restyling would flash. CSS is render-blocking.
- Combine into the render tree (only visible elements, with computed styles).
- Layout works out the size and position of every box.
- Paint draws the boxes into layers.
- Composite: the GPU assembles layers into the final image. Animating a layer's
transformoropacityonly needs this last step.
JavaScript on the main thread
- JavaScript runs on the renderer's main thread, one task at a time in an event loop, alongside parsing, layout and input handling. A long script blocks everything, and the page feels frozen.
- A normal
<script>is parser-blocking: parsing stops until it downloads and runs. Usedefer(run after parsing, in order) orasync(run as soon as available) for scripts not needed to build the first view. - Changing the DOM or styles can trigger reflow (layout again) and repaint. Reading layout values in a loop right after writing styles forces repeated layout (layout thrashing): batch reads and writes.
What makes pages fast
Goal Techniques Less to download Compression (brotli, gzip), image optimisation and modern formats, remove unused JavaScript Fewer round trips CDN, HTTP/2 and 3, preconnect, caching with long lifetimes and versioned namesLess blocking Inline critical CSS, deferscripts, avoid huge CSS and fonts blocking textSmooth interaction Break up long tasks, move heavy work to web workers, animate with transformandopacityLoad only what is visible Lazy-load images and routes Browsers also cache, preload likely navigations, and can run offline logic with service workers.
Measuring
Use the Core Web Vitals: LCP (when the main content appears), INP (responsiveness to input) and CLS (unexpected layout shifts). Check both lab tests and real-user data, because real devices and networks are slower and more varied than a developer laptop.
Real-world reading
Related reading
- Chrome Developers BlogGoogle engineers · GoogleBlogs
- Android Developers BlogGoogle engineers · GoogleBlogs
- The Road to QUICCloudflareBlogs
- Julia Evans' BlogJulia Evans · jvns.caBlogs
Show 6 moreShow fewer
- Cloudflare BlogCloudflare engineers · CloudflareBlogs
- RFC 9000: QUICIETFDocumentation
- Cloudflare EngineeringCloudflare engineers · CloudflareBlogs
- Web VitalsGoogle web.dev · GoogleDocumentation
- Curalate Engineering BlogCuralate engineers · CuralateBlogs
- Zapier Engineering BlogZapier engineers · ZapierBlogs
Go deeper on this
A path through videos, articles, other case studies and code on the same ideas as RFC 9000: QUIC.
Warm upGet the vocabulary first.
Documentation
RFC 9114: HTTP/3
The standard that defines HTTP semantics over QUIC.
IETFAdvanced
Books · Free from the author
High Performance Browser Networking
How TCP, TLS, HTTP/2, WebSocket and mobile networks affect web performance; free to read.
O'ReillyIntermediate
WatchHow others solve the same problem, on video.
Videos belong to their creators and play from YouTube. More on YouTube (opens in a new tab)
ReadEngineers explain it in their own words.
Blogs
Cloudflare Blog
Deep technical posts on networking, DNS, CDN, security and edge computing from a company that runs a huge global network.
CloudflareIntermediate
Blogs
Android Developers Blog
The latest updates from the Android team: new features and platform releases, looks at what’s launching and why it matters.
GoogleIntermediate
Keep learning
Loading community…