qh3
A lightway and fast implementation of QUIC and HTTP/3
What it is and what it does
qh3 is a maintained fork of aioquic that provides a lightweight QUIC and HTTP/3 implementation for Python. It includes a minimal TLS 1.3 stack and conforms to RFC 9000 (QUIC v1) and RFC 9114 (HTTP/3), with support for QUIC v2 via RFC 9369. The library has no external dependencies and does not rely on OpenSSL, making it simpler to embed and deploy.
The package follows a "bring your own I/O" design pattern, meaning you control socket operations and concurrency integration rather than the library imposing a specific I/O model. This makes it testable and compatible with different async frameworks. While client-side support is the primary focus, server-side code is maintained. The library supports modern features including post-quantum key exchange (ML-KEM-768), connection migration, OCSP stapling, and encrypted client hello.
Use it for:
- Embed QUIC/HTTP/3 support in Python HTTP clients or libraries that need standards-compliant protocol handling
- Build low-level QUIC applications where you control I/O and concurrency (e.g., custom UDP socket handling)
- Integrate HTTP/3 into frameworks like urllib3.future or niquests that wrap qh3 for higher-level APIs
- Test QUIC protocol behavior or implement QUIC-based services with post-quantum cryptography support
- Migrate from aioquic while gaining lighter dependencies and faster performance
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
qh3 is a Python library implementing the QUIC network protocol and HTTP/3 stack, with a minimal TLS 1.3 implementation, designed for embedding in client and server applications.
Yes, if you need QUIC/HTTP/3 support in Python and prefer a dependency-free, actively maintained implementation. The library is production-stable and suitable for embedding in client libraries. Not recommended if you need a high-level HTTP client (use niquests or urllib3.future instead) or if you require extensive server-side features—the maintainers prioritize client functionality.
Install
qh3 on PyPI
pip
pip install qh3uv
uv add qh3poetry
poetry add qh3Installing qh3
Before you install
Medium install friction due to compiled wheels for multiple platforms and Python versions. Active maintenance with recent release (32 days ago) and ongoing repository activity. No external runtime dependencies simplifies deployment.
License in practice
BSD license (permissive) allows use in commercial and proprietary projects with minimal restrictions beyond attribution.
Quickstart
pip install qh3
import qh3
# Use qh3.QuicConnection or qh3.H3Connection for QUIC/HTTP3 protocol handling
# Follows "bring your own I/O" pattern - you manage socket operations
Requires Python 3.7 or greater; compiled wheels available for CPython and PyPy on multiple architectures.
Verify before relying
- Specific performance benchmarks comparing qh3 to aioquic or other QUIC implementations
- Maturity and stability of server-side API (description notes client is primary focus)
- Real-world production deployment examples or case studies
Package facts
| License | not declared (permissive) |
| Python support | supports the current Python release (>=3.7) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 32 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 2,357,464/month — #3,108 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: qh3-1.9.4-cp313-cp313t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl; qh3-1.9.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; qh3-1.9.4-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl; qh3-1.9.4-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl; qh3-1.9.4-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl; qh3-1.9.4-cp313-cp313t-manylinux_2_17_ppc64.manylinux2014_ppc64.whl; qh3-1.9.4-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl; qh3-1.9.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; qh3-1.9.4-cp313-cp313t-manylinux_2_39_riscv64.whl; qh3-1.9.4-cp313-cp313t-musllinux_1_1_aarch64.whl; qh3-1.9.4-cp313-cp313t-musllinux_1_1_armv7l.whl; qh3-1.9.4-cp313-cp313t-musllinux_1_1_i686.whl; qh3-1.9.4-cp313-cp313t-musllinux_1_1_riscv64.whl; qh3-1.9.4-cp313-cp313t-musllinux_1_1_x86_64.whl; qh3-1.9.4-cp313-cp313t-win32.whl; qh3-1.9.4-cp313-cp313t-win_amd64.whl; qh3-1.9.4-cp313-cp313t-win_arm64.whl; qh3-1.9.4-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl; qh3-1.9.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; qh3-1.9.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Tags
More WWW/HTTP packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
h11h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
httpxHTTPX is a fully featured HTTP client library…
permissive · top 100 on PyPI
httpcoreA minimal low-level HTTP client library that…
permissive · top 100 on PyPI
aiohttpaiohttp is an async HTTP client and server…
permissive · top 100 on PyPI
aioquicaioquic implements QUIC and HTTP/3 network…
permissive · top 5,000 on PyPI
urllib3-futureHTTP client library supporting HTTP/1.1,…
permissive · top 5,000 on PyPI
tlslite-ngPure Python implementation of SSL/TLS protocols…
copyleft · top 15,000 on PyPI
niquestsNiquests is a drop-in replacement for Requests…
permissive · top 5,000 on PyPI
questdbA Python client library for QuestDB that sends…
permissive · top 15,000 on PyPI
ldap3ldap3 is a pure Python LDAP V3 client library…
copyleft · top 5,000 on PyPI
pqcryptoProvides Python bindings to post-quantum…
permissive · top 15,000 on PyPI
scrampScramp implements the SCRAM authentication…
permissive · top 1,000 on PyPI
jh2jh2 is a pure-Python HTTP/2 protocol state…
permissive · top 5,000 on PyPI