What these codes are
QUIC and HTTP/3 carry two families of numeric error codes. QUIC transport errors (RFC 9000) report failures of the transport itself — the handshake, flow control and framing. HTTP/3 application errors (RFC 9114) report failures of the HTTP layer running on top of QUIC. Both are delivered in QUIC’s CONNECTION_CLOSE, RESET_STREAM or STOP_SENDING frames. This reference lists the common codes with their hex value, meaning and source RFC.
How it works
When a peer detects a fatal problem it closes the connection with a frame carrying the error code and an optional reason phrase:
CONNECTION_CLOSE
Error Code: 0x3 (FLOW_CONTROL_ERROR)
Frame Type: 0x... (offending frame, transport-layer closes only)
Reason: "received more than MAX_STREAM_DATA"
The same numeric space is shared: codes in the transport range come from RFC
9000, while HTTP/3 application codes begin at 0x100 (H3_NO_ERROR) per RFC
9114. A single stream can be reset with RESET_STREAM carrying just the code,
without tearing down the whole connection.
Tips and notes
- A transport-layer
CONNECTION_CLOSEincludes the frame type that triggered the error; an application-layer close does not. H3_NO_ERRORandNO_ERRORare clean shutdowns, not bugs.H3_EXCESSIVE_LOADlets a server shed an abusive client without a hard crash.- Persistent
CRYPTO_ERRORcodes map to TLS alerts (CRYPTO_ERRORbase is0x100–0x1ffin the transport space) and point at certificate or handshake faults.