PQ Crypta Logo

HTTP/3 Client Implementations Measured

Every HTTP/3 and QUIC implementation driven through the suite: 7 of them, 57 adversarial tests each.

PQ CRYPTA PLATFORM

🏠 Main

🧪 Interactive Apps

📰 News

🛡️ PQ Crypta Proxy

👤 Account

⟨ QUANTUM ERROR PORTAL ⟩

Navigate the Error Dimensions

Each implementation below was driven through every test by the runner, which spawns the client's own binary. The suite is the judge: it can see what the client did on the wire, which the client cannot honestly report about itself.

A pass rate is over conclusive results only — pass plus fail. Inconclusive means the run never put the client in the situation the test is about, which is a fact about the run and not about the client.

curl

ngtcp2 + nghttp3 · C · ngtcp2/1.11.0

30 Pass0 Fail22 Inconclusive5 Not run

100% of 30 conclusive

quinn

quinn + h3 (our fork) · Rust · noq fork

38 Pass3 Fail16 Inconclusive

93% of 41 conclusive

aioquic

aioquic · Python · 1.3.0

38 Pass3 Fail11 Inconclusive5 Not run

93% of 41 conclusive

chromium

Chromium QUICHE · C++ · build 1223

43 Pass5 Fail9 Inconclusive

90% of 48 conclusive

quic-go

quic-go · Go · quic-go v0.61.0

42 Pass2 Fail13 Inconclusive

95% of 44 conclusive

quiche

Cloudflare quiche · Rust · 0.30.0

41 Pass3 Fail13 Inconclusive

93% of 44 conclusive

neqo

neqo (Firefox) · Rust · unknown

42 Pass4 Fail11 Inconclusive

91% of 46 conclusive

Where they disagree

28 of 57 tests drew more than one answer. Several are discretionary — the RFC permits either behaviour and the disagreement is not a defect in anybody. The rest are the rows worth reading.

What this suite is · The full grid · All clients · All tests · Findings