Plainnotes

Plaintext HTTP/2 is rarely worth it

2025-09-10 · 2 min readNetwork

HTTP/2 comes in two forms: h2 over TLS negotiated with ALPN, and h2c upgraded from plaintext with Upgrade: h2c. Browsers implement only the first; h2c shows up in service-to-service calls and some proxies.

Enabling h2c on a public site buys nothing — browsers will not use it, and it adds an entry point to maintain. Internal gRPC is different: it speaks HTTP/2 frames directly and needs no upgrade dance.

In nginx, listen 80 http2; produces a warning and surprising behaviour: plaintext h2 only works for prior-knowledge clients, and ordinary browsers stay on HTTP/1.1.

Conclusion: h2 on 443 only, plaintext stays HTTP/1.1.