HTTP/3 on HTTP:n kolmas pääversio, jota käytetään tiedonsiirtoon WWW-järjestelmässä ja joka täydentää laajalti aikaisempia versioita HTTP/1.1 ja HTTP/2. Toisin kuin aiemmat versiot, jotka luottavat vakiintuneeseen vuonna 1974 julkaistuun TCP-protokollaan, HTTP/3 käyttää uutta UDPn päälle rakennettua multipleksoitua siirtoprotokollaa QUIC:ia. IETF julkaisi 6. kesäkuuta 2022 HTTP/3:n ehdotettuna standardina dokumentissa RFC 9114.
Version muutokset keskittyvät pääasiassa tiedon siirtoon. Pyyntöjen semantiikka pysyy siis samanlaisena: pyyntömetodit, tilakoodit ja otsakekentät ovat samat kuin aiemmissa versioissa. HTTP/3:lla on alhaisempi viive, joten sen sivut latautuvat nopeammin aiempiin versioihin verrattuna: joissakin tapauksissa jopa neljä kertaa nopeammin kuin HTTP/1.1:llä (joka on vielä monilla verkkosivustoilla ainoa käytössä oleva HTTP-versio).
HTTP/3:a tukee (ainakin osittain) 97 prosenttia kaikista seuratuista verkkoselainasennuksista ja 29 prosenttia kymmenestä miljoonasta suosituimmasta verkkosivustosta. Versiota on tukenut Chromium (ja johdetut projektit, kuten Google Chrome, Microsoft Edge, Samsung Internet ja Opera) huhtikuusta 2020 lähtien ja Mozilla Firefox toukokuusta 2021 lähtien. Safari 14 lisäsi tuen versiolle, mutta se pysyy oletusarvoisesti poissa käytöstä.

HTTP/3 on peräisin QUIC-työryhmän hyväksymästä Internet-luonnoksesta. Alkuperäinen ehdotus nimettiin "HTTP/2 Semantics Using The QUIC Transport Protocol" (suom. HTTP/2 semantiikka käyttäen QUIC-kuljetusprotokollaa) ja myöhemmin "Hypertext Transfer Protocol (HTTP) over QUIC" (suom. hypertekstin siirtoprotokolla QUIC:in yli).
IETF:n HTTP- ja QUIC-työryhmien puheenjohtaja Mark Nottingham ehdotti sähköpostilistakeskustelussa 28. lokakuuta 2018 HTTP-over-QUIC:n uudelleennimeämistä HTTP/3:ksi, jotta "se olisi selkeästi toinen HTTP-semantiikan sitominen siirtoprotokollaan, jotta ihmiset ymmärtävät sen eron QUIC:sta." Muut IETF:n jäsenet hyväksyivät Nottinghamin ehdotuksen muutamaa päivää myöhemmin. HTTP-työryhmä valtuutettiin auttamaan QUIC-työryhmää HTTP/3:n suunnittelussa ja sen ylläpidosta vastaamisesta julkaisun jälkeen.
HTTP/3-tuki lisättiin Chromen canary-testiversioon syyskuussa 2019. Se saavutti lopulta vakaan toiminnan, mutta se otettiin oletusarvoisesti pois käytöstä. HTTP/3 otettiin takaisin käyttöön huhtikuussa 2020. Firefox lisäsi HTTP/3-tuen marraskuussa 2019 ominaisuuslipulla ja otti sen oletusarvoisesti käyttöön huhtikuussa 2021 Firefox 88:ssa HTTP/3:n kokeellinen tuki lisättiin Safari Technology Previewiin 8. huhtikuuta 2020 ja se sisältyi Safari 14:ään, joka toimitetaan iOS 14:n ja macOS 11:n kanssa, mutta se on edelleen oletuksena pois käytöstä Safarista 16. lähtien, sekä macOS:ssä että iOS:ssä.
HTTP-semantiikka on sama kaikissa versioissa: samat pyyntömenetelmät, tilakoodit ja otsakekentät ovat käytettävissä kaikissa versioissa. Erot ovat näiden semantiikan yhdistämisessä taustalla olevaan tiedon siirtoon verkon välityksellä. Sekä HTTP/1.1 että HTTP/2 käyttävät TCP:tä siirtoprotokollana. HTTP/3 sen sijaan käyttää QUIC- protokollaa, siirtokerroksen verkkoprotokollaa, joka hoitaa käyttäjätilan ruuhkanhallintaa UDP-siirtoprotokollan yli. Vaihto QUICiin pyrkii korjaamaan HTTP/2:n suuren ongelman, jota kutsutaan "jonon tukkeutumiseksi". Koska HTTP/2:n multipleksoinnin rinnakkaisluonne ei näy TCP:n virhetilannemekanismeille, kadonnut tai uudelleenjärjestelty paketti aiheuttaa kaikkien aktiivisten tapahtumien ja tiedon siirtojen keskeytymisen riippumatta siitä, vaikuttiko kadonnut paketti kyseiseen tapahtumaan. Koska QUIC-protokolla tarjoaa multipleksoinnin suoraan siirtoprotokollatasolla, kadonneet paketit vaikuttavat vain niihin tietovirtoihin, joissa tietoja on kadonnut.
Ehdotetut DNS-resurssitietueet SVCB (palvelusidonta) ja HTTPS mahdollistaisivat yhteyden muodostamisen suoraan HTTP/3-versiolla vastaanottamatta ensin Alt-Svc-otsaketietoa palvelimelta aikaisempien HTTP-versioiden avulla, mikä poistaisi yhden viestin TCP:n kättelyprosessista. HTTPS-resurssitietueille on tuki Firefoxissa versiosta 92 eteenpäin, Safarissa versiosta 14 eteenpäin, ja Chromium tukee sitä ohjelmistolipun takaa.
| Selain | Versio, jossa lisätty (oletuksena pois käytöstä) | Versio, jossa lisätty (oletuksena käytössä) | Kommentti | ||
|---|---|---|---|---|---|
| Chromium | Vakaa (79) | joulukuu 2019 | 87 | huhtikuu 2020 | Aiemmissa versioissa on otettu käyttöön muita QUIC-luonnoksia |
| Edge | Vakaa (79) | joulukuu 2019 | 87 | huhtikuu 2020 | Edge 79 oli ensimmäinen Chromiumiin perustuva versio |
| Firefox | Vakaa (72.0.1) | tammikuu 2020 | 88 | huhtikuu 2021 | |
| Safari | Vakaa (14.0) | syyskuu 2020 | 16.4 | maaliskuu 2023 | Apple kokeili HTTP/3-tukea joillakin Safari-käyttäjillä Safari 16.4:stä alkaen. |
Avoimen lähdekoodin kirjastot, jotka toteuttavat asiakas- tai palvelinlogiikan QUIC:lle ja HTTP/3:lle, ovat muun muassa:
| Nimi | Asiakas | Palvelin | Ohjelmointikieli | Kehittäjäorganisaatio |
|---|---|---|---|---|
| lsquic | Kyllä | Kyllä | C | LiteSpeed |
| nghttp3 | Kyllä | Kyllä | C | |
| h2o | Ei | Kyllä | C | |
| libcurl | Kyllä | Ei | C | |
| MsQuic | Kyllä | Kyllä | C | Microsoft |
| proxygen | Kyllä | Kyllä | C++ | |
| Cronet | Kyllä | Kyllä | C++ | |
| .NET | Kyllä | Kyllä | C# (käyttää MsQuic) | Microsoft |
| quic-go | Kyllä | Kyllä | Go | |
| http3 | Kyllä | Kyllä | Haskell | |
| Kwik | Kyllä | Kyllä | Java | |
| Flupke | Kyllä | Kyllä | Java | |
| aioquic | Kyllä | Kyllä | Python | |
| quiche | Kyllä | Kyllä | Rust | Cloudflare |
| neqo | Kyllä | Kyllä | Rust | Mozilla |
| quinn | Kyllä | Kyllä | Rust | |
| s2n-quic | Kyllä | Kyllä | Rust | AWS |