HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
ipfs
js-ipfs
JavaScript2015–2025
ipfs / js-ipfs · Archived

js-ipfs

IPFS implementation in JavaScript

23Distinct people
39Mentions
0Explicit recommenders
7.4KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

IPFS implementation in JavaScript

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 2:04:58 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year39 dated mentions

Observed mentions: 2015-12-09 23:16:10 UTC to 2025-08-16 21:17:15 UTC.

0510152015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 17 mentions; 0 submissions, 17 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC101
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC707
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC404
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC17017
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC303
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC202
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC404
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
⛔️ DEPRECATED: js-IPFS has been superseded by Helia 📚 Learn more about this deprecation or how to migrate ⚠️ If you continue using this repo, please note that security fixes will not be provided The JavaScript implementation of the IPFS protocol Getting started Read the docs Ensure CORS is correctly configured for use with the HTTP client Look into the examples to learn how to spawn an IPFS node in Node.js and in the Browser Consult the Core API docs to see what you can do with an IPFS node Head over to https://proto.school to take the IPFS course that covers core IPFS concepts and JS APIs Check out https://docs.ipfs.io for glossary, tips, how-tos and more Need help? Please ask 'How do I?' questions on https://discuss.ipfs.io Find out about chat channels, the IPFS newsletter, the IPFS blog, and more in the IPFS community space. Table of Contents Getting started Install as a CLI user Install as an application developer Documentation Structure Packages Want to hack on IPFS? License Getting Started Install as a CLI user Installing ipfs globally will give you the jsipfs command which you can use to start a daemon running: $ npm install -g ipfs $ jsipfs daemon Initializing IPFS daemon... js-ipfs version: x.x.x System version: x64/darwin Node.js version: x.x.x Swarm listening on /ip4/127.0 .... more output You can then add a file: $ jsipfs add ./hello-world.txt added QmXXY5ZxbtuYj6DnfApLiGstzPN7fvSyigrRee3hDWPCaf hello-world.txt Install as an application developer If you do not need to run a command line daemon, use the ipfs-core package - it has all the features of ipfs but in a lighter package: $ npm install ipfs-core Then start a node in your app: import * as IPFS from 'ipfs-core' const ipfs = await IPFS.create() const { cid } = await ipfs.add('Hello world') console.info(cid) // QmXXY5ZxbtuYj6DnfApLiGstzPN7fvSyigrRee3hDWPCaf Documentation Concepts Config Core API Examples Development Structure This project is broken into several modules, their purposes are: /packages/interface-ipfs-core Tests to ensure adherence of an implementation to the spec /packages/ipfs An aggregator module that bundles the core implementation, the CLI, HTTP API server and daemon /packages/ipfs-cli A CLI to the core implementation /packages/ipfs-core The core implementation /packages/ipfs-core-types Typescript definitions for the core API /packages/ipfs-core-utils Helpers and utilities common to core and the HTTP RPC API client /packages/ipfs-daemon Run js-IPFS as a background daemon /packages/ipfs-grpc-client A gRPC client for js-IPFS /packages/ipfs-grpc-protocol Shared module between the gRPC client and server /packages/ipfs-grpc-server A gRPC-over-websockets server for js-IPFS /packages/ipfs-http-client A client for the RPC-over-HTTP API presented by both js-ipfs and go-ipfs /packages/ipfs-http-server JS implementation of the Kubo RPC HTTP API /packages/ipfs-http-gateway JS implementation of the IPFS HTTP Gateway /packages/ipfs-http-response Creates a HTTP response for a given IPFS Path /packages/ipfs-message-port-client A client for the RPC-over-message-port API presented by js-ipfs running in a shared worker /packages/ipfs-message-port-protocol Code shared by the message port client & server /packages/ipfs-message-port-server The server that receives requests from ipfs-message-port-client Packages List of the main packages that make up the IPFS ecosystem. Package Version Deps CI/Travis Coverage Lead Maintainer Files ipfs-unixfs Alex Potsides Repo ipfs-repo Alex Potsides ipfs-repo-migrations N/A Exchange ipfs-bitswap Dirk McCormick IPNS ipns Vasco Santos Generics/Utils ipfs-utils Hugo Dias ipfs-http-client Alex Potsides ipfs-http-response Vasco Santos ipfsd-ctl Hugo Dias is-ipfs Marcin Rataj aegir Hugo Dias libp2p libp2p Jacob Heun peer-id Vasco Santos libp2p-crypto Jacob Heun libp2p-floodsub Vasco Santos libp2p-gossipsub Cayman Nava libp2p-kad-dht Vasco Santos libp2p-mdns Jacob Heun libp2p-bootstrap Vasco Santos @chainsafe/libp2p-noise N/A libp2p-tcp Jacob Heun libp2p-webrtc-star Vasco Santos libp2p-websockets Jacob Heun libp2p-mplex Vasco Santos libp2p-delegated-content-routing Jacob Heun libp2p-delegated-peer-routing Jacob Heun IPLD @ipld/dag-pb N/A @ipld/dag-cbor N/A Multiformats multiformats N/A mafmt Vasco Santos multiaddr Jacob Heun This table is generated using the module package-table with package-table --data=package-list.json. Want to hack on IPFS? The IPFS implementation in JavaScript needs your help! There are a few things you can do right now to help out: Read the Code of Conduct and JavaScript Contributing Guidelines. Check out existing issues The issue list has many that are marked as 'help wanted' or 'difficulty:easy' which make great starting points for development, many of which can be tackled with no prior IPFS knowledge Look at the IPFS Roadmap This are the high priority items being worked on right now Perform code reviews More eyes will help a. speed the project along b. ensure quality, and c. reduce possible future bugs. Add tests. There can never be enough tests. License
Read the full README on GitHub

What Hacker News says

17 sources
So, the article is coming slowly or not coming at all because two of the four bootstrappers are timing out and, if you're unlucky enough to hit one of them, it might take minutes to replicate the article content. Bug has been reported to the js-ipfs guys and a pull request has been merged: https://github.com/ipfs/js-ipfs/pull/1693 That was instructive and I'm glad the experience has resulted in people getting interested, questions being asked and bugs being fixed. Sorry if it didn't work perfectly, distributed stuff is hard. I don't understand the flagging but hey, HN will be HN, I guess :) I will fix the issue in the next days and will keep on developing Vitriol. Obviously any help is appreciated. Thanks to everyone for your comments!
In Show HN: Vitriol – a distributed, serverless web publishing platform
About the intro article not coming up Sometimes the bootstrapping server seem to be overwhelmed. I suspect HN's "hug of death" could be possibly responsible. This will be resolved when js-ipfs implements DHT and relay: > Please read this: DHT (automatic content discovery) and Circuit Relay (pierce through NATs and dial between any node in the network) are two fundamental pieces that are not finalized yet. There are multiple applications that can be built without these two services but nevertheless they are fundamental to get that magic IPFS experience. If you want to track progress or contribute, please follow: DHT: https://github.com/ipfs/js-ipfs/pull/856 Relay: https://github.com/ipfs/js-ipfs/pull/1063 This stuff is alpha at this point, and sometimes there are still fires to extinguish. Sorry about the inconvenience, I suggest to try
Read the rest
again later :(
In Show HN: Vitriol – a distributed, serverless web publishing platform
> In regards to using a DHT, that's something I have not researched. I am not sure how long an offer is valid, were you thinking of being able to update them as needed whenever you want to establish a connection? Yes. I have toyed with js-libp2p to obtain "providers" based on a key, but I believe the part of js-libp2p that allows you to participate in the DHT isn't quite done [0]. I imagine you'd make a CID that would be a simple hash of some shared string. Then you'd tell the network you are a "provider" with that CID, and when requested, you give the offer (AES'd w/ shared string or other shared secret?). The client can just connect to the same DHT and give the hash and get the (encrypted?) offer. Not sure if IPFS has a way for me to prevent other people from serving/replicating the CID I am serving instead of forcing it to be a hash of
Read the rest
the content. A similar approach can happen on BT mainline w/ an infohash maybe. 0 - https://github.com/ipfs/js-ipfs/pull/856
In Show HN: WebRTC signalling data using QR codes
I built this mainly because I was feeling the pain while implementing a website for a customer that is allowing their users to upload and stream files in the browser. As the file upload should accept any kind of input, but the streaming only allows for certain files to be played back in the browser I researched different codecs that are available on the web for streaming and came across: https://github.com/ipfs/js-ipfs/tree/master/examples/browser... I though, why not make this a SaaS.
In Show HN: A website that converts any IPFS file to HLS and reups it to IPFS
There is already a Javascript implementation [1], but it is not feasible to setup a full IPFS node in every browser tab that loads an IPFS resource. Instead you can use ipfs-companion [2], a browser extension that lets you easily load IPFS resources in your browser. While it can use the Javascript implementation, this is not recommended as it is currently pretty resource heavy [3]. [1] https://github.com/ipfs/js-ipfs [2] https://github.com/ipfs-shipyard/ipfs-companion [3] https://github.com/ipfs-shipyard/ipfs-companion/blob/master/...
In Pushing the Limits of IPFS and OrbitDB
I think it depends on what the use case for IPFS is. Many use it "server-side" to just transfer and store files, so a "native client" makes a lot of sense. The IPFS devs always recognized the importance of the browser though and as such js-ipfs (https://github.com/ipfs/js-ipfs) has always been a first-class implementation of IPFS. With js-ipfs, the IPFS protocol works in the browser and can be embedded to JavaScript applications in a way that doesn't "require a new client". Highly recommend to read into IPFS and how it works to understand the various use cases and possibilities. A good starting point would be https://ipfs.io/ and https://github.com/ipfs/ipfs.
In Pushing the Limits of IPFS and OrbitDB
> they never really finished the pubsub implementation and js-ipfs still can't run in the browser because there is no IPFS network that communicates using WebSockets and not TCP/UDP I don't believe the pub/sub is critical functionality (progress at [0], but it's really just chatty). Progress of that additional feature should not be a measuring stick for the project as a whole. For js-ipfs, I see work being done frequently, e.g. the DHT work[1] and weekly syncs[2]. I agree work is slow, but I am not getting the impression it is fizzing out. Having said that, I think there are fundamental problems with the ideas behind it. I want MaidSafe's ideas and IPFS's completion/MVP schedule. IPFS doesn't bring enough anonymity or forced, equitable, encrypted block sharing IMO (I am aware of efforts on both fronts of course). 0 - https://github.com/ip
Read the rest
In Paper review: IPFS – Content addressed, versioned, P2P file system

Showing the 15 most recent of 17 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.