qh:// is a simplified HTTP-like protocol. Built on top of QOTP (Quite Ok Transport Protocol), it provides 0-RTT connections, built-in encryption, stream multiplexing, and uses DNS TXT records for key distribution. The protocol uses a compact binary format which eliminates the use of header compression schemes like HPACK or QPACK.
STATUS: Experimental
| Feature | HTTP/1.1 | HTTP/2 | HTTP/3 | QH |
|---|---|---|---|---|
| Transport | TCP | TCP | UDP (QUIC) | UDP (QOTP) |
| Encryption | Optional (TLS) | Optional (TLS) | Built-in | Built-in |
| 0-RTT | No | With TLS 1.3 | Yes | Yes |
| Multiplexing | No | Yes | Yes | Yes |
| Header Format | Text | Binary (HPACK) | Binary (QPACK) | Binary (static table, no compression) |
| Key Distribution | CAs | CAs | CAs | DNS TXT |
| Avg Header Size* | 1829 B | 1226 B | 1171 B | 1318 B |
*Average total headers (request + response) across 110 test cases. See Benchmark Report for details.
- Protocol Specification - QH protocol definition
- Headers Reference - Header format
- Static header table (Markdown)
- Static header table (JSON - use for own implementations)
- Static table generated using http-header-tracker
- API Documentation - API reference of the Go implementation
go get github.com/qo-proto/qh- Prerequisites: Go 1.25 or higher
# Terminal 1: Start the server
go run ./examples/server/main.go
# Terminal 2: Run the client
go run ./examples/client/main.go
# Or directly in tmux with a shell script (basic client)
./run-demo-tmux.sh
# Or run concurrent examples (multiplexing)
go run ./examples/server-concurrent/main.go
go run ./examples/client-concurrent/main.goQH supports QOTP keylog output for decrypting network traffic in Wireshark. This is useful for debugging and protocol analysis.
Server-side keylog (recommended):
# Build with keylog support
go run -tags keylog ./examples/server/main.go
# The server will create qh_server_keylog.txt automaticallyThe keylog file format follows the SSLKEYLOGFILE convention with QOTP_SHARED_SECRET entries that can be used with the QOTP Wireshark dissector.
QH protocol wire format efficiency compared against HTTP/1.1, HTTP/2, and HTTP/3.
- Benchmark Documentation - Methodology and documentation
- Benchmark Report - Generated report