The IPFS Primer

This primer contains a series of tutorials explaining IPFS, Merkle Trees and the Decentralized Web. It's written and maintained as a gitbook so people can read it in many formats.

The GitHub repository for this book is at

Getting Help

During these tutorials, if you have any questions feel free to ask them in the IPFS forums or in the #ipfs channel on We have a large, active community who use these venues as our main places to seek support and to provide it.


The primer contains tutorials about

  1. Dynamic Content on IPFS

    For a full list of tutorials, look at the Table of Contents.


  • Cryptographic Hashes and Content Addressability

  • Authenticated Graphs

  • Turning Files into Trees

  • Turning any Data into Trees

  • Publishing hashes on the DHT

  • Getting data from the Peer to Peer Network

  • Immutability: "Changes" as additions to the tree

  • CRDTs

  • Pubsub

  • Authenticated Streams (with pubsub)


Each tutorial is a set of lessons that all use a format inspired by the Railsbridge Curriculum. Each lesson declares a set of Goals, or learning objectives, then lists the Steps, or activities, and finally provides an Explanation that reviews what you've done and connects those activities to the lesson's stated Goals. The format for each lesson looks like this:

Note for Contributors

For a concise explanation of Learning Objectives (which we're calling Goals in this book), read UC Denver's Assessment & Instructional Alignment Tutorial. Try to make your learning objectives Specific, observable and measurable and heed their tip to use the list of verbs in the taxonomy table worksheet to help you choose observable behaviors for your course learning objectives.

To build the HTML, PDF, epub and mobi versions of the book with one command, run ./


This primer was created by @flyingzumwalt. The contents of these tutorials were initially pulled from documentation in the first-generation documentation homed on the IPFS website and the (now-inactive) IPFS examples git repository. (Find them in their new homes on, particularly the "Usage ideas and examples" section.)

Contributors to those original docs included

  • @whyrusleeping

  • @jbenet

  • @lgierth

  • @lynnandtonic

  • @wraithgar

  • @adambrault

  • @donothesitate

  • @djdv

    plus a long list of contributors to the original examples repository

Last updated