Working with IPFS in JS

There are two main JavaScript libraries for working with IPFS. Both work in Node.js and in modern web browsers:

Both libraries have the same interface for using all the major IPFS commands.

Whenever reasonable, we recommend the second method (interacting with a separate IPFS node via the HTTP API). Keeping the IPFS node in a separate process (even if it’s one your program spawns) isolates you from any stability problems with the node. If a user already has IPFS installed, this also means you can take advantage of a single, common installation on their computer. It’s also less code to load in a browser. If you need to spawn a separate IPFS process, you might want to take a look at js-ipfsd-ctl, which uses the same interface to spawn a go-ipfs node, a js-ipfs node, or an in-process js-ipfs node.

IPFS in Web Browsers

Both the js-ipfs and js-ipfs-http-client libraries work in browsers, but each has some special considerations noted in their READMEs.

We are also building a browser extension named IPFS Companion. If a visitor to your site has it installed, it will make a global window.ipfs object available to your JavaScript. This object has the same interface as js-ipfs-api, but comes with much better security controls and lets you use IPFS without loading any special libraries.