# ipfs/js-ipfs

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/ipfs-js-ipfs).**

7,401 stars · 1,211 forks · JavaScript · NOASSERTION · archived

## Links

- GitHub: https://github.com/ipfs/js-ipfs
- Homepage: https://js.ipfs.tech
- awesome-repositories: https://awesome-repositories.com/repository/ipfs-js-ipfs.md

## Topics

`decentralized` `distributed` `immutable` `ipfs` `ipld` `javascript` `js-ipfs` `libp2p` `p2p` `peer-to-peer`

## Description

js-ipfs is an HTTP client library that connects to any IPFS daemon, enabling JavaScript applications to interact with the InterPlanetary File System. It provides a promise-based asynchronous API for managing content-addressed storage, where all data is identified by cryptographic hashes (CIDs) for immutable references and deduplication. The library communicates with a remote IPFS node through HTTP requests, supporting cancellation of in-flight operations via standard AbortController signals.

The library offers a comprehensive set of capabilities for working with IPFS, including adding and retrieving content by CID, managing a mutable filesystem with standard read/write/delete operations, and pinning content for permanent storage. It supports peer-to-peer file sharing through a distributed hash table (DHT) for peer discovery and content routing, as well as real-time pub/sub messaging over libp2p for topic-based communication between peers. Users can also publish and resolve IPNS names to create human-readable references to content-addressed data.

Additional functionality includes managing node configuration, monitoring node statistics such as bandwidth usage and repository stats, and querying the DHT to find peers or store key-value pairs. The library supports streaming data transfer for large files, allowing incremental processing without loading entire payloads into memory.

## Tags

### Data & Databases

- [Content-Addressable Storage](https://awesome-repositories.com/f/data-databases/content-addressable-storage.md) — Stores and retrieves files using content hashes as permanent identifiers for verifiable, deduplicated storage.
- [HTTP Clients](https://awesome-repositories.com/f/data-databases/content-addressable-storage/http-clients.md) — Ships an HTTP client library that adds, retrieves, and pins content by CID on IPFS nodes.
- [Distributed Hash Tables](https://awesome-repositories.com/f/data-databases/distributed-hash-tables.md) — Leverages a Kademlia DHT for peer discovery and decentralized key-value storage.
- [Content-Addressable Retrievals](https://awesome-repositories.com/f/data-databases/remote-data-retrieval/identifier-based-retrievals/content-addressable-retrievals.md) — Fetches data from a storage node using content hashes as identifiers. ([source](https://cdn.jsdelivr.net/gh/ipfs/js-ipfs@master/README.md))
- [Virtual File System Layers](https://awesome-repositories.com/f/data-databases/virtual-file-system-layers.md) — Provides a virtual filesystem layer over content-addressed storage with standard file operations.
- [HTTP Clients](https://awesome-repositories.com/f/data-databases/distributed-hash-tables/http-clients.md) — Provides an HTTP client for querying the DHT to find peers and store key-value pairs on IPFS.
- [Streaming Transfers](https://awesome-repositories.com/f/data-databases/large-file-transfer-optimizers/large-file-transfers/streaming-transfers.md) — Transfers large files as streams for incremental processing without loading entire payloads into memory.
- [Content Pinning](https://awesome-repositories.com/f/data-databases/storage-garbage-collection/content-pinning.md) — Marks content as pinned to keep it permanently stored on a node, or removes pins for garbage collection. ([source](https://cdn.jsdelivr.net/gh/ipfs/js-ipfs@master/README.md))

### Part of an Awesome List

- [HTTP Clients and Servers](https://awesome-repositories.com/f/awesome-lists/devtools/http-clients-and-servers.md) — Communicates with a remote IPFS daemon through HTTP requests as a client.

### Content Management & Publishing

- [Content-Addressed File Systems](https://awesome-repositories.com/f/content-management-publishing/media-management/file-management-systems/content-addressed-file-systems.md) — Creates and edits files and directories in a versioned, content-addressed filesystem.
- [Decentralized Publishing Tools](https://awesome-repositories.com/f/content-management-publishing/decentralized-publishing-tools.md) — Publishes websites and content that remain accessible even if the original server goes offline.

### Development Tools & Productivity

- [Content Identifiers](https://awesome-repositories.com/f/development-tools-productivity/identifier-generators/content-identifiers.md) — Identifies all data by cryptographic content hashes for immutable references and deduplication.

### Networking & Communication

- [Peer-to-Peer File Sharing](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/peer-to-peer-networking/peer-to-peer-file-sharing.md) — Provides a client library for sharing files directly between peers using the IPFS distributed network.
- [File System Clients](https://awesome-repositories.com/f/networking-communication/peer-to-peer-clients/file-system-clients.md) — Provides an HTTP client for mutable filesystem operations and IPNS name publishing on IPFS.
- [HTTP Clients](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-services/message-broker-infrastructure/publish-subscribe-messaging/http-clients.md) — Ships an HTTP client for subscribing to topics and publishing messages in IPFS's libp2p pub-sub system.
- [PubSub Subscribers](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-services/message-broker-infrastructure/publish-subscribe-messaging/pubsub-subscribers.md) — Provides an HTTP client for subscribing to topics and publishing messages in IPFS's pub-sub system. ([source](https://cdn.jsdelivr.net/gh/ipfs/js-ipfs@master/README.md))
- [Mutable Name Resolvers](https://awesome-repositories.com/f/networking-communication/decentralized-naming-resolvers/mutable-name-resolvers.md) — Publishes content paths under human-readable names and resolves names back to current content paths. ([source](https://cdn.jsdelivr.net/gh/ipfs/js-ipfs@master/README.md))
- [Pub-Sub Messaging](https://awesome-repositories.com/f/networking-communication/pub-sub-messaging.md) — Implements pub-sub messaging over libp2p for real-time topic-based communication between IPFS peers.
- [PubSub Messaging Systems](https://awesome-repositories.com/f/networking-communication/pubsub-messaging-systems.md) — Uses libp2p's publish-subscribe protocol for real-time topic-based messaging between peers.
- [Request Abort Controllers](https://awesome-repositories.com/f/networking-communication/request-abort-controllers.md) — Implements signal-based abort controllers to cancel active network requests.

### Operating Systems & Systems Programming

- [File System Operations](https://awesome-repositories.com/f/operating-systems-systems-programming/system-administration-maintenance/file-system-management/file-system-operations.md) — Creates, reads, updates, and deletes files and directories within a mutable file system. ([source](https://cdn.jsdelivr.net/gh/ipfs/js-ipfs@master/README.md))

### Programming Languages & Runtimes

- [IPFS Clients](https://awesome-repositories.com/f/programming-languages-runtimes/language-ecosystems-tooling/software-development-kits/javascript-client-libraries/ipfs-clients.md) — Ships a JavaScript HTTP client library that connects to any IPFS daemon for file and content management.
- [Asynchronous Promise Interfaces](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-promise-interfaces.md) — Wraps all operations in JavaScript promises for non-blocking control flow.

### Repository Format

- [Daemon Client Connections](https://awesome-repositories.com/f/repository-format/remote-connection-management/daemon-client-connections.md) — Connects to a remote IPFS daemon via HTTP to enable all API interactions. ([source](https://cdn.jsdelivr.net/gh/ipfs/js-ipfs@master/README.md))

### Web Development

- [Content-Addressed File Uploads](https://awesome-repositories.com/f/web-development/local-file-uploads/content-addressed-file-uploads.md) — Uploads data or files to a content-addressed storage node, returning content identifiers for retrieval. ([source](https://cdn.jsdelivr.net/gh/ipfs/js-ipfs@master/README.md))
- [Request Cancellation](https://awesome-repositories.com/f/web-development/http-methods/service-method-mapping/request-cancellation.md) — Cancels in-flight HTTP requests using standard AbortController signals. ([source](https://cdn.jsdelivr.net/gh/ipfs/js-ipfs@master/README.md))
