Skip to content

Protocol support ​

Titanium speaks HTTP/1.0, HTTP/1.1, HTTP/2, and experimental HTTP/3, and can bridge between them when client and origin disagree.

For implementers / .NET library users — the tables below use API names (EnableHttp2, EnableHttp3, TWP001). Operators enabling HTTP/3 from the CLI can start with HTTP/3.

HTTP/2 is on by default. HTTP/3 is experimental and opt-in. CLI/Inspector release zips bundle MsQuic natives per platform; Library hosts install system MsQuic — see HTTP/3.

Protocol bridges ​

ClientOriginKind
HTTP/1.xHTTP/1.xNative
HTTP/2HTTP/2Native (ALPN MITM; prior-knowledge h2c on transparent reverse)
HTTP/3HTTP/3Native when EnableHttp3
HTTP/1.1 ↔ HTTP/2BridgeWhen UpstreamHttpProtocol + AllowHttpProtocolTranslation
HTTP/1.1 / HTTP/2 ↔ HTTP/3BridgeWhen H3 selected
HTTP/3 → HTTP/2 / HTTP/1.1BridgeVia origin connection helpers

Not supported: Upgrade: h2c (prior-knowledge only); mid-connection H2→H3 on an open H2↔H2 MITM session; WebSocket over HTTP/3; explicit QUIC proxying (inbound H3 is transparent QUIC / dual-listen only).

Explicit HTTP proxy and origin Alt-Svc. A browser that uses the proxy as an explicit HTTP proxy sends traffic as TCP (CONNECT) and cannot send QUIC through it. The origin's Alt-Svc header is still forwarded. Checked locally with Chrome, Edge, and Firefox (QUIC left enabled, loopback not bypassed): later requests stayed on the proxy, and no UDP arrived at the advertised HTTP/3 port. Safari was not part of that run. The proxy's own HTTP/3 to the server is separate; it still learns Alt-Svc for its origin cache.

Connections and framing (high level) ​

FeatureH1.0H1.1H2H3
Keep-alive / multiplexingYesYesYesYes
Chunked / DATA framesN/A / YesYesDATADATA
TrailersN/AYesYesYes
WebSocketYesYesRFC 8441No

For the full matrix (headers, flow control, SETTINGS/PING/GOAWAY, streaming, auth), see the Protocol-Support wiki.

Core, CLI, and website: MIT