HTTP/3 is the third major version of theHypertext Transfer Protocol used to exchange information on theWorld Wide Web, complementing the widely deployedHTTP/1.1 andHTTP/2. Unlike previous versions which relied on the well-establishedTCP (published in 1974),[2] HTTP/3 usesQUIC (officially introduced in 2021),[3] amultiplexed transport protocol built onUDP.[4]
HTTP/3 uses similar semantics compared to earlier revisions of the protocol, including the samerequest methods,status codes, andmessage fields, but encodes them and maintains session state differently. However, partially due to the protocol's adoption of QUIC, HTTP/3 has lower latency and loads more quickly in real-world usage when compared with previous versions: in some cases over four times faster than with HTTP/1.1 (which, for many websites, is the only HTTP version deployed).[5][6]
As of September 2024, HTTP/3 is supported by more than 95% of major web browsers in use[7] and 34% of the top 10 million websites.[8] It has been supported byChromium (and derived projects includingGoogle Chrome,Microsoft Edge,Samsung Internet, andOpera)[9] since April 2020 and byMozilla Firefox since May 2021.[7][10]Safari 16+ has included support, and it was enabled by default starting with 16.4[11]
Protocol stack of HTTP/3 compared to HTTP/1.1 and HTTP/2
HTTP/3 originates from anInternet Draft adopted by the QUIC working group. The original proposal was named "HTTP/2 Semantics Using The QUIC Transport Protocol",[12] and later renamed "Hypertext Transfer Protocol (HTTP) over QUIC".[13]
On 28 October 2018 in a mailing list discussion, Mark Nottingham, Chair of theIETF HTTP and QUIC Working Groups, proposed renaming HTTP-over-QUIC to HTTP/3, to "clearly identify it as another binding of HTTP semantics to the wire protocol [...] so people understand its separation from QUIC".[14] Nottingham's proposal was accepted by fellow IETF members a few days later. The HTTP working group was chartered to assist the QUIC working group during the design of HTTP/3, then assume responsibility for maintenance after publication.[15]
Support for HTTP/3 was added toChrome (Canary build) in September 2019 and then eventually reached stable builds, but was disabled by a feature flag. It was enabled by default in April 2020.[9] Firefox added support for HTTP/3 in November 2019 through a feature flag[7][16][17] and started enabling it by default in April 2021 in Firefox 88.[7][10] Experimental support for HTTP/3 was added to Safari Technology Preview on April 8, 2020[18] and was included with Safari 14 that ships withiOS 14 andmacOS 11,.[19][20]Starting September 2024, HTTP/3 is supported for all users on Safari 16 or newer.[11]
HTTP semantics are consistent across versions: the samerequest methods,status codes, andmessage fields are typically applicable to all versions. The differences are in the mapping of these semantics to underlying transports. BothHTTP/1.1 andHTTP/2 useTCP as their transport. HTTP/3 usesQUIC, atransport layernetwork protocol which usesuser spacecongestion control over theUser Datagram Protocol (UDP). The switch to QUIC aims to fix a major problem of HTTP/2 called "head-of-line blocking": because the parallel nature of HTTP/2's multiplexing is not visible to TCP'sloss recovery mechanisms, a lost or reorderedpacket causes all activetransactions to experience a stall regardless of whether that transaction was impacted by the lost packet. Because QUIC provides native multiplexing, lost packets only impact the streams where data has been lost.
The HTTPSDNS resource record as defined inRFC9460[21] allows for connecting without first receiving the Alt-Svc header via previous HTTP versions, therefore removing the 1 RTT of handshaking of TCP.[22][23] There is client support for HTTPS resource records since Firefox 92, iOS 14, reported Safari 14 support, and Chromium supports it behind a flag.[24][25][26]
On 7 June 2021,LiteSpeed Web Server (and OpenLiteSpeed) 6.0.2 was released and became the first version to enable HTTP/3 by default.[36]
Caddy web server v2.6.0 (released 20 September 2022) has HTTP/3 enabled by default.[37]
Nginx supports HTTP/3 since 1.25.0 (released 23 May 2023). A technology preview of nginx with HTTP/3 support was released in June 2020.[38] Binary packages of nginx with HTTP/3 support have been released in February 2023.[39]
Cloudflare distributes a patch for nginx that integrates the quiche HTTP/3 library into it.[40]
Microsoft IIS support for HTTP/3 is enabled natively with Windows Server 2022/Windows 11.[41]
HAProxy supports HTTP/3 over QUIC since version 2.6 released on 31 May 2022.[42][43]