http2 explained front | FAQ | changelog | presentations
http2 explained

http2 explained describes the protocol HTTP/2 at a technical and protocol level. Background, the protocol, the implementations and the future. Written by Daniel Stenberg.

This is a "living document" in the sense that I keep posting updates, and I care about and value feedback, questions and comments I get about it. This document improves over time thanks to a joint effort. Full credits to all helpers at the end of the document.

This document has been downloaded more than 200,000 times and has been given praise widely. Give it a shot! It is provided free of charge under a Creative Commons license.

It is being provided in both PDF and web versions.


All the translations are offered if you click the image on the right:

  • Chinese by Calvin Zhang and Simon Xia
  • English by Daniel Stenberg (original version)
  • French by Olivier Cahagne
  • Italian by Massimiliano Fantuzzi
  • Japanese by Tatsuhiro Tsujikawa
  • Persian by Ehsaan
  • Portuguese by Bruno Lellis and Filipe Boleto
  • Russian by Vladimir Lettiev
  • Spanish by Javier Infante
  • Swedish by Daniel Stenberg
  • Turkish by Zeynep Sanliturk

All translations are of course also subject to bug fixes and improvements!

Help out!

Comment on, add sections, fix typos or correct errors in this document! Submit an issue or a pull-request, or just email


The full document is available on github.

Network capture samples

h2-14-plain-nghttp2.pcapng is a Wireshark capture of curl talking http2 draft-14 in plain text with is a 949KB zip with a bundled SSL key. It is a full stream showing Firefox downloading around 380 different images from the Akamai HTTP/2 demo, thus over HTTPS.

Get Wireshark 2.0 to dissect HTTP/2 frames.

If you have more and better sample stream captures, please send them my way!

See Also

HTTP/3 Explained for all details of version 3!