ngtcp2/nghttp3
FreeHTTP/3 library written in C
FreeFree tier
About ngtcp2/nghttp3
nghttp3 is a C library that implements RFC 9114 HTTP/3 mapping over QUIC and RFC 9204 QPACK. It is independent of any specific QUIC transport implementation. The library supports several HTTP/3 extensions including extensible prioritization (RFC 9218), WebSocket bootstrapping (RFC 9220), and the ORIGIN extension (RFC 9297). It also supports sending and receiving SETTINGS_H3_DATAGRAM for HTTP Datagrams and the Capsule Protocol. The QPACK implementation includes dynamic table support. For performance, the library can optionally use AVX2 instructions. It does not support server push. The project provides example code for client, server, and integration with curl.
Key Features
RFC 9114 HTTP/3 implementation over QUIC
RFC 9204 QPACK implementation with dynamic table
Extensible prioritization scheme (RFC 9218)
Bootstrapping WebSockets with HTTP/3 (RFC 9220)
ORIGIN extension in HTTP/3 (RFC 9297)
HTTP Datagrams and Capsule Protocol support
Optional AVX2 optimization for performance
No dependency on any specific QUIC transport implementation
Example code for client, server, and curl integration
Pros & Cons
Pros
- Implements latest HTTP/3 and QPACK standards (RFC 9114, 9204)
- Supports multiple HTTP/3 extensions
- Optional AVX2 optimization for improved performance
- Does not depend on a specific QUIC transport, offering flexibility
- MIT license allows permissive use
- Includes example code for common use cases
Cons
- Does not support server push
- Requires building from source; no pre-built binaries provided
- Documentation may be limited to online docs and examples
Best For
Building HTTP/3 servers and clientsImplementing QUIC-based applicationsWebSocket over HTTP/3Performance-critical networking applications
FAQ
Does nghttp3 support server push?
No, it does not support server push.
What QUIC transport does it require?
It does not depend on any particular QUIC transport implementation.
What extensions does it support?
It supports the Extensible Prioritization Scheme, Bootstrapping WebSockets with HTTP/3, the ORIGIN Extension, and HTTP Datagrams/Capsule Protocol.