A detailed document explaining and documenting HTTP/2, the successor to the widely popular HTTP/1.1 protocol

  • By Daniel Stenberg
  • Last update: Sep 21, 2022
  • Comments: 9

http2 explained

This is a detailed document describing HTTP/2 (RFC 7540), the background, concepts, protocol and something about existing implementations and what the future might hold.

The contents are translated into several different languages.

See https://daniel.haxx.se/http2/ for the canonical home for this project.

See https://github.com/bagder/http2-explained for the source code of all book contents.


The document is distributed under the Creative Commons Attribution 4.0 license: https://creativecommons.org/licenses/by/4.0/


I encourage and welcome help and contributions from anyone who may have improvements to offer. We accept pull requests, but you can also just file issues or send email to [email protected] with your suggestions!

/ Daniel Stenberg




  • 1

    HTML version

    Convert the ODF version into a HTML version that can be hosted on a single web page and in one page per chapter.

    The work has began. I store the images in a separate directory (https://github.com/bagder/http2-explained/tree/master/images ) and I name the HTML directory after the language of the text (https://github.com/bagder/http2-explained/tree/master/en ) to allow more (future) versions in case translators want to use HTML too.

    I have not considered CSS or other styling issues and I suck at that anyway.

  • 2

    plain-text http2?!

    8.3 says: "curl and libcurl has its implementation based on the separate http2 library called nghttp2 and supports plain-text http2..."

    plain-text http2?! http2 is binary and it cannot be plain-text, this sentence is confusing. You mean non-TLS http2, right?

  • 3

    Fix translation mistake in zh/part6

    In part6 of English version, on 6.5 Header compression topic, we have:

    While the number of objects per web page has increased (as mentioned earlier), the use of cookies and the size of the requests have also kept growing over time.

    This has been translated into Chinese as:


    In my opinion, It'd better be translated into Chinese as:

    每个页面请求的对象数量在增多(如前所述),同时 cookies 的使用和请求的大小也在日渐增长。

  • 4

    Some ideas for chapter 1 (French)

    This is a small test with chapter 1. Let me know if this is the type of comments you want. I'm aware that Quebec French and France French is different :)

  • 5

    Graph keys/labels

    On page 6, the line graph (presumably showing objects/page and load size) includes no key to specifically state that it is the case.

    Just for best practice and all.

  • 6

    For russian translation. Опечатка "Mozilla Fierfox"

    Прошу прощения за такой способ сообщения о неточности перевода, другого способа связаться вы не оставили. Первый абзац под заголовком "http2 для https://", предпоследнее предложение "Однако, два известных разработчика спецификации чётко заявили, что они будут реализовывать только http2 поверх TLS: руководитель Mozilla Fierfox и руководитель Google Chrome".

  • 7

    Minor language corrections in the Swedish version.

    I found this document via the Apache manual, and read it in Swedish. Since you so clearly invite comments I couldn't resist to note down some nitpicks and send them in this PR. It is only minor language adjustments. I've updated some parts that felt like anglicisms, fixed a few misspellings, etc. Some things might be a matter of taste, you of course pick what you want. The only material change is that I removed the claim you work for Mozilla; I believe that was no longer the case last time I listened to a presentation of yours.

    If I would have written this myself I would probably have translated a couple of terms too (e.g. host→värd, state→tillstånd, tabbar→flikar) but I've refrained from doing such changes. I'm not that much of a fusspot! :smiley:

    I realise the document is a couple of years old by now and not completely reflects the current status. Maybe I am the last one to pick up on http2. But just in case there comes any more readers, I still suggest it to be updated.

  • 8

    README.md and part1-2.md (en): Fixed errors and language improvements


    This is fixes for the en/README.md and en/part1-2.md files:

    • Incorrect paragraph references;
    • Words errors;
    • Redundant syntax elements; and
    • Language improvements
  • 9

    zh: title page name


    The title of this page is README. If we want it to be consistent with other languages, it should be the Chinese translation of "http2 explained", which is


    Also, if the sub pages are ordered that would be great.

    (Was trying to make a PR but seems it has something to do with how GitBook pulls data from GitHub, and I don't know how to do that)

    Thank you so much!