http 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 available in several different formats for your convenience, including epub, PDF and a plain web version.


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

Spanish by Javier Infante, French by Olivier Cahagne, Russian by Vladimir Lettiev, Chinese by Calvin Zhang and Simon Xia, Swedish by Daniel Stenberg, Japanese by Tatsuhiro Tsujikawa and of course the original English by Daniel Stenberg.

There's an incomplete Portuguese translation in the making, you can help us complete it!

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. We recently moved over to markdown syntax.

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!

This page was updated February 2, 2016.