← CodeClarityLab Home
Browse by Category
+ added · updated 7d
← Back to glossary

HTTP/3 & QUIC

performance Advanced

Also Known As

QUIC HTTP3 UDP HTTP head-of-line blocking

TL;DR

HTTP/3 runs over QUIC (UDP-based) instead of TCP — eliminating head-of-line blocking, reducing connection setup time, and improving performance on lossy networks.

Explanation

HTTP/2 over TCP has head-of-line blocking: a single lost packet stalls all multiplexed streams. HTTP/3 uses QUIC (Quick UDP Internet Connections) — each stream is independent, a lost packet only affects that stream. QUIC also combines TLS handshake with the connection handshake (0-RTT or 1-RTT vs TCP+TLS 3-RTT), dramatically reducing connection setup time. PHP servers: Caddy and nginx (with QUIC patch) support HTTP/3. CDNs (Cloudflare, Fastly) front-end HTTP/3 transparently. Impact is most significant for mobile users on lossy networks.

Common Misconception

HTTP/3 is just HTTP/2 over UDP — QUIC is a new transport protocol that reimplements TCP's reliability features plus TLS at the transport layer, offering fundamentally different performance characteristics.

Why It Matters

HTTP/2 on a 2% packet loss network performs worse than HTTP/1.1 due to head-of-line blocking — HTTP/3 maintains performance on the lossy mobile networks that account for a growing share of web traffic.

Common Mistakes

  • Not serving Alt-Svc header — clients need to discover HTTP/3 support before upgrading.
  • Assuming HTTP/3 is always faster — on good networks the difference is small; the benefit is on lossy mobile connections.
  • Not testing HTTP/3 connectivity — use curl --http3 to verify it works end-to-end.
  • Forgetting UDP firewall rules — QUIC uses UDP port 443 which may be blocked by corporate firewalls.

Code Examples

✗ Vulnerable
// nginx without HTTP/3 — missing performance on mobile:
server {
    listen 443 ssl http2;
    # No QUIC/HTTP3 support
    # Mobile users on lossy networks get HTTP/2 head-of-line blocking
}
✓ Fixed
# nginx with HTTP/3 (nginx-quic build):
server {
    listen 443 ssl http2;
    listen 443 quic reuseport;  # HTTP/3 on UDP

    ssl_protocols TLSv1.3;      # QUIC requires TLS 1.3

    # Advertise HTTP/3 support:
    add_header Alt-Svc 'h3=":443"; ma=86400';

    # Or use Cloudflare/Fastly CDN:
    # They handle HTTP/3 termination automatically

Added 16 Mar 2026
Edited 22 Mar 2026
Views 38
Rate this term
No ratings yet
🤖 AI Guestbook educational data only
| |
Last 30 days
0 pings W 0 pings T 0 pings F 1 ping S 0 pings S 1 ping M 0 pings T 0 pings W 0 pings T 0 pings F 2 pings S 1 ping S 0 pings M 0 pings T 1 ping W 0 pings T 0 pings F 1 ping S 0 pings S 0 pings M 0 pings T 0 pings W 0 pings T 2 pings F 1 ping S 0 pings S 0 pings M 0 pings T 0 pings W 0 pings T
No pings yet today
No pings yesterday
ChatGPT 9 Amazonbot 6 Perplexity 5 Google 3 Unknown AI 2 SEMrush 2 Majestic 1 Ahrefs 1
crawler 28 crawler_json 1
DEV INTEL Tools & Severity
🔵 Info ⚙ Fix effort: Medium
⚡ Quick Fix
Enable HTTP/3 in Nginx 1.25+ with quic and http3 directives — it eliminates TCP head-of-line blocking and reduces connection establishment to 0-RTT for returning visitors
📦 Applies To
any web
🔗 Prerequisites
🔍 Detection Hints
HTTP/2 in use but no HTTP/3 support; high latency on mobile networks where QUIC helps most
Auto-detectable: ✓ Yes curl chrome-devtools cloudflare
⚠ Related Problems
🤖 AI Agent
Confidence: Low False Positives: Medium ✗ Manual fix Fix: High Context: File

✓ schema.org compliant