# ipfs/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-ipfs).**

23,137 stars · 1,486 forks · MIT

## Links

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

## Topics

`ipfs` `ipfs-protocol` `ipfs-web` `ipld` `js-ipfs` `multiformats` `p2p` `paper` `protocol`

## Description

IPFS is a peer-to-peer hypermedia protocol and content-addressed storage system that identifies data by cryptographic hashes rather than network locations. It enables the creation of a decentralized web by organizing files and directories as directed acyclic graphs of linked content identifiers.

The project differentiates itself through the use of a distributed hash table for locating peers and a system of signed records to map human-readable names to changing content. It also provides HTTP gateways that translate standard web requests into peer-to-peer queries, allowing decentralized data to be accessible via standard web browsers.

Broad capabilities cover decentralized data storage, including content pinning for persistence and the hosting of static websites with custom DNS resolution. The system also includes peer-to-peer messaging via a topic-based pubsub system, cryptographic key management for data authenticity, and tools for visualizing network traffic and peer connectivity.

Node operations can be managed through a command-line interface, a browser-based GUI, or a standardized HTTP RPC API.

## Tags

### Data & Databases

- [Content-Addressable Storage](https://awesome-repositories.com/f/data-databases/content-addressable-storage.md) — Implements a storage architecture that identifies data by its cryptographic hash rather than a network location.
- [Decentralized Storage](https://awesome-repositories.com/f/data-databases/decentralized-storage.md) — Provides a system for storing and retrieving data across peer-to-peer networks without a central authority. ([source](https://docs.ipfs.tech/concepts/glossary/))
- [Remote Block Fetching](https://awesome-repositories.com/f/data-databases/block-storage/remote-block-fetching.md) — Locates peers hosting specific identifiers and fetches associated data blocks from remote network sources. ([source](https://docs.ipfs.tech/how-to/ipfs-in-web-apps/))
- [P2P Data Replication](https://awesome-repositories.com/f/data-databases/client-server-data-synchronization/core-data-sync-servers/cross-location-data-replication/p2p-data-replication.md) — IPFS manages a global set of pinned data by replicating and tracking files across multiple peers. ([source](https://docs.ipfs.tech/install/))
- [Content-Based Retrieval](https://awesome-repositories.com/f/data-databases/content-based-retrieval.md) — IPFS fetches data from a peer-to-peer network using unique content identifiers via browser extensions or gateways. ([source](https://docs.ipfs.tech/))
- [Content Pinning](https://awesome-repositories.com/f/data-databases/content-pinning.md) — IPFS publishes files to a distributed network and ensures persistence through local nodes or pinning services. ([source](https://docs.ipfs.tech/))
- [P2P Persistence Coordination](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/data-persistence-storage/data-persistence-management/p2p-persistence-coordination.md) — IPFS ensures specific data remains available on the network by pinning blocks and managing data sets. ([source](https://docs.ipfs.tech/how-to/))
- [P2P Block Exchange](https://awesome-repositories.com/f/data-databases/data-exchange-protocols/p2p-block-exchange.md) — Implements a dedicated protocol for requesting and sending data blocks between peers. ([source](https://docs.ipfs.tech/concepts/glossary/))
- [P2P Provider Location](https://awesome-repositories.com/f/data-databases/distributed-data-processing/data-location-trackers/p2p-provider-location.md) — Queries distributed hash tables to identify which peers are hosting specific content identifiers. ([source](https://docs.ipfs.tech/how-to/troubleshooting/))
- [Mutable Pointer Resolution](https://awesome-repositories.com/f/data-databases/mutable-pointer-resolution.md) — Maps persistent public keys to changing content identifiers via signed records to support data versioning.
- [Content-Addressable Retrievals](https://awesome-repositories.com/f/data-databases/remote-data-retrieval/identifier-based-retrievals/content-addressable-retrievals.md) — Fetches data from the network using content identifiers to ensure retrieval regardless of the physical node location. ([source](https://docs.ipfs.tech/quickstart/retrieve/))
- [Deduplication Encoders](https://awesome-repositories.com/f/data-databases/storage-engines/data-integrity/deduplication-encoders.md) — Generates unique identifiers and data structures to ensure data integrity and global deduplication. ([source](https://docs.ipfs.tech/concepts/ipfs-implementations/))
- [Content Pinning](https://awesome-repositories.com/f/data-databases/storage-garbage-collection/content-pinning.md) — IPFS stores specific data on a node to prevent deletion during garbage collection. ([source](https://docs.ipfs.tech/case-studies/arbol/))
- [Merkle DAG File Systems](https://awesome-repositories.com/f/data-databases/versioned-storage/merkle-dag-file-systems.md) — Organizes files and directories as a directed acyclic graph of linked content identifiers for immutable storage.
- [Data-Block Management](https://awesome-repositories.com/f/data-databases/data-persistence/data-block-management.md) — Manages the lifecycle of internal data blocks, including removal and reclamation of local storage space. ([source](https://docs.ipfs.tech/reference/kubo/rpc/))
- [Graph Traversal](https://awesome-repositories.com/f/data-databases/graph-traversal.md) — Queries and traverses decentralized data structures using selectors to retrieve specific parts of a graph. ([source](https://docs.ipfs.tech/concepts/glossary/))
- [Local-First Storage](https://awesome-repositories.com/f/data-databases/local-first-storage.md) — IPFS pins specific data to a local node to prevent garbage collection and ensure availability. ([source](https://docs.ipfs.tech/concepts/))
- [Repository Integrity Checks](https://awesome-repositories.com/f/data-databases/repository-integrity-checks.md) — Checks blocks in the repository for corruption to ensure data consistency and integrity. ([source](https://docs.ipfs.tech/reference/kubo/rpc/))
- [Storage Garbage Collection](https://awesome-repositories.com/f/data-databases/storage-garbage-collection.md) — Identifies and deletes orphaned or obsolete data objects to reclaim local storage space. ([source](https://docs.ipfs.tech/how-to/desktop-app/))
- [Recursive Pinning Verification](https://awesome-repositories.com/f/data-databases/storage-garbage-collection/content-pinning/recursive-pinning-verification.md) — IPFS pins objects to prevent garbage collection and verifies that recursive pins are complete locally or remotely. ([source](https://docs.ipfs.tech/reference/kubo/rpc/))
- [Third-Party Pinning Services](https://awesome-repositories.com/f/data-databases/third-party-pinning-services.md) — IPFS uses external services to ensure specific files remain available on the network without hosting a local node. ([source](https://docs.ipfs.tech/install/))

### Networking & Communication

- [Networking](https://awesome-repositories.com/f/networking-communication/content-addressable-transfers/networking.md) — Identifying and locating data using cryptographic hashes instead of server locations to ensure data integrity.
- [Peer-to-Peer Protocols](https://awesome-repositories.com/f/networking-communication/peer-to-peer-protocols.md) — Implements a decentralized hypermedia protocol for addressing and routing data using content identifiers.
- [Content-Based Data Retrieval](https://awesome-repositories.com/f/networking-communication/content-based-data-retrieval.md) — IPFS downloads specific data from the network by pasting identifiers or network paths into a retrieval tool. ([source](https://docs.ipfs.tech/install/ipfs-desktop/))
- [Content-Based Routing](https://awesome-repositories.com/f/networking-communication/content-based-routing.md) — Routes data requests through a network of peers based on the identifiers of the requested blocks.
- [Decentralized Website Hosting](https://awesome-repositories.com/f/networking-communication/decentralized-website-hosting.md) — IPFS serves web pages and applications across a peer-to-peer network without relying on a central server. ([source](https://docs.ipfs.tech/how-to/))
- [Peer-to-Peer Networking](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/peer-to-peer-networking.md) — Implements a peer-to-peer networking model where nodes act as both clients and servers to share resources. ([source](https://docs.ipfs.tech/concepts/))
- [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) — Saves and retrieves files across a peer-to-peer network to ensure availability without relying on a central server. ([source](https://docs.ipfs.tech/install/))
- [HTTP Gateway Proxies](https://awesome-repositories.com/f/networking-communication/http-gateway-proxies.md) — Provides HTTP gateways that translate standard web requests into peer-to-peer queries for browser accessibility.
- [P2P-to-HTTP Bridging](https://awesome-repositories.com/f/networking-communication/http-gateways/p2p-to-http-bridging.md) — IPFS resolves content identifiers through an HTTP proxy to make peer-to-peer data accessible to standard web browsers. ([source](https://docs.ipfs.tech/quickstart/retrieve/))
- [Hypermedia Protocols](https://awesome-repositories.com/f/networking-communication/hypermedia-protocols.md) — Building applications that use content identifiers and linked data structures to create a permanent, distributed web.
- [Node Management RPCs](https://awesome-repositories.com/f/networking-communication/node-management-rpcs.md) — Exposes a remote procedure call API to programmatically manage node operations and decentralized data. ([source](https://docs.ipfs.tech/reference/kubo-rpc-cli/))
- [Peer-to-Peer Content Delivery](https://awesome-repositories.com/f/networking-communication/peer-to-peer-content-delivery.md) — IPFS creates an accessible entry point for clients to retrieve hashed content from the peer-to-peer network using standard web protocols. ([source](https://docs.ipfs.tech/case-studies/arbol/))
- [Peer-to-Peer Data Exchange](https://awesome-repositories.com/f/networking-communication/peer-to-peer-data-exchange.md) — Transfers raw data chunks between nodes using a specialized protocol for efficient content retrieval.
- [Network Query Routing](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking-extensions/network-query-routing.md) — Finds addresses for a peer ID or locates peers providing a specific value. ([source](https://docs.ipfs.tech/reference/kubo/rpc/))
- [Routing Table Management](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/peer-discovery/routing-table-management.md) — Maintains distributed routing tables to determine the best network path for retrieving content-addressed data. ([source](https://docs.ipfs.tech/reference/kubo/rpc/))
- [RPC Interfaces](https://awesome-repositories.com/f/networking-communication/rpc-interfaces.md) — Provides a standardized HTTP RPC interface for controlling network operations and retrieving data across different languages. ([source](https://docs.ipfs.tech/))
- [Publish-Subscribe Messaging](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-services/message-broker-infrastructure/publish-subscribe-messaging.md) — Provides a publish-subscribe messaging mechanism for low-latency communication between distributed nodes. ([source](https://docs.ipfs.tech/reference/kubo/rpc/))
- [Decentralized Data Replication](https://awesome-repositories.com/f/networking-communication/decentralized-data-replication.md) — Propagates content between active and local nodes to create a redundant and decentralized backup. ([source](https://docs.ipfs.tech/case-studies/arbol/))
- [Decentralized Naming Systems](https://awesome-repositories.com/f/networking-communication/decentralized-naming-systems.md) — Maps traditional domain names to content identifiers to provide human-readable entry points for decentralized data. ([source](https://docs.ipfs.tech/concepts/))
- [Cluster State Coordinators](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-computing/consensus-coordination-systems/cluster-state-coordinators.md) — Provides systems to maintain a consistent view of global cluster topology and metadata across multiple nodes. ([source](https://docs.ipfs.tech/concepts/ipfs-implementations/))
- [DNS-to-Content Linking](https://awesome-repositories.com/f/networking-communication/dns-to-content-linking.md) — Associates standard DNS domain names with decentralized content addresses to improve accessibility. ([source](https://docs.ipfs.tech/concepts/glossary/))
- [Custom HTTP Response Serving](https://awesome-repositories.com/f/networking-communication/http-request-customization/custom-http-response-serving.md) — IPFS retrieves content-addressed data via HTTP requests using identifiers and optional paths to force file downloads. ([source](https://docs.ipfs.tech/reference/http/gateway/))
- [Topic-Based Broadcasting](https://awesome-repositories.com/f/networking-communication/instant-messaging-services/peer-to-peer-messaging/cluster-peer-broadcasting/topic-based-broadcasting.md) — Enables sending data to all peers subscribed to specific topics via routed gossip networks. ([source](https://docs.ipfs.tech/concepts/glossary/))
- [NAT Traversal](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-proxying-tools/network-proxies/udp-tunneling/nat-traversal.md) — Establishes direct peer connections through firewalls using relay nodes and coordinated signaling.
- [Routing Delegation](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-routing-traffic-management/request-routing/routing-delegation.md) — Offloads P2P discovery and routing queries to specialized remote endpoints to resolve content identifiers. ([source](https://docs.ipfs.tech/install/))
- [Peer Connection Management](https://awesome-repositories.com/f/networking-communication/peer-connection-management.md) — Lists active listeners, pings remote hosts, and manages peering relationships. ([source](https://docs.ipfs.tech/reference/kubo/rpc/))
- [Peer-to-Peer Messaging](https://awesome-repositories.com/f/networking-communication/peer-to-peer-messaging.md) — Implementing real-time communication and data broadcasting between nodes using a decentralized pubsub system.
- [Bootstrap Node Discovery](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/bootstrap-node-discovery.md) — Customizes node behavior and optimizes connectivity by modifying bootstrap peer lists and local settings. ([source](https://docs.ipfs.tech/how-to/))
- [Bootstrap Peer Management](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/bootstrap-peer-management.md) — Adds, removes, or lists the initial set of peers used to join the network. ([source](https://docs.ipfs.tech/reference/kubo/rpc/))
- [Signed Record Management](https://awesome-repositories.com/f/networking-communication/signed-record-management.md) — Publishes and resolves signed records that map human-readable names to evolving content addresses. ([source](https://docs.ipfs.tech/reference/kubo/rpc/))

### Software Engineering & Architecture

- [Decentralized Node Operation](https://awesome-repositories.com/f/software-engineering-architecture/local-first-architectures/decentralized-node-operation.md) — IPFS runs a daemon that manages data distribution, peer discovery, and content retrieval across a decentralized network. ([source](https://docs.ipfs.tech/concepts/ipfs-implementations/))
- [Distributed Hash Tables](https://awesome-repositories.com/f/software-engineering-architecture/distributed-systems/distributed-data-management/distributed-hash-tables.md) — Implements a decentralized system for mapping keys to values to locate peers hosting specific data.
- [Peer-to-Peer Content Hosting](https://awesome-repositories.com/f/software-engineering-architecture/local-first-architectures/peer-to-peer-content-hosting.md) — IPFS makes content-addressed data available to the network by hosting it locally or using a pinning service. ([source](https://docs.ipfs.tech/how-to/ipfs-in-web-apps/))
- [Merkle-Tree Data Integrity](https://awesome-repositories.com/f/software-engineering-architecture/string-processing-algorithms/tree-based-storage/merkle-tree-storage-engines/merkle-tree-data-integrity.md) — Uses Merkle tree structures and hashing to ensure retrieved data has not been tampered with. ([source](https://docs.ipfs.tech/quickstart/retrieve/))

### Part of an Awesome List

- [P2P File Sharing](https://awesome-repositories.com/f/awesome-lists/media/p2p-file-sharing.md) — Calculates content identifiers for local files and makes them available to other nodes for decentralized exchange. ([source](https://docs.ipfs.tech/how-to/desktop-app/))
- [Cryptographic Key Management](https://awesome-repositories.com/f/awesome-lists/security/identity-and-access-management/cryptographic-key-management.md) — Manages the lifecycle of cryptographic keys for generating, importing, and verifying data signatures. ([source](https://docs.ipfs.tech/reference/kubo/rpc/))

### Development Tools & Productivity

- [Content Identifiers](https://awesome-repositories.com/f/development-tools-productivity/identifier-generators/content-identifiers.md) — Provides unique, reproducible content identifiers based on hashes to locate and retrieve data from the network. ([source](https://docs.ipfs.tech/how-to/desktop-app/))
- [Name-Based Filesystem Interfaces](https://awesome-repositories.com/f/development-tools-productivity/remote-file-management/name-based-filesystem-interfaces.md) — IPFS provides a name-based filesystem interface for adding and editing files while automating hash updates. ([source](https://docs.ipfs.tech/concepts/glossary/))

### Security & Cryptography

- [Content Identifier Encoders](https://awesome-repositories.com/f/security-cryptography/data-encoders/content-identifier-encoders.md) — Encodes data or directories into unique, verifiable content identifiers using cryptographic hash functions. ([source](https://docs.ipfs.tech/how-to/ipfs-in-web-apps/))

### Web Development

- [Content Hash Verification](https://awesome-repositories.com/f/web-development/element-selectors/presence-verifiers/entity-presence-verification/authenticity-verification/content-hash-verification.md) — Allows clients to verify that retrieved blocks match the requested cryptographic identifier. ([source](https://docs.ipfs.tech/reference/http/gateway/))
- [DNS Linkage](https://awesome-repositories.com/f/web-development/custom-domain-hosting/dns-linkage.md) — IPFS resolves a domain DNS record to a content identifier to serve peer-to-peer data over HTTPS. ([source](https://docs.ipfs.tech/how-to/websites-on-ipfs/dnslink-gateway/))
- [Static Site Hosting](https://awesome-repositories.com/f/web-development/static-site-hosting.md) — Serves as a platform for publishing and delivering pre-authored web assets across a peer-to-peer network.

### DevOps & Infrastructure

- [Static Site Deployments](https://awesome-repositories.com/f/devops-infrastructure/deployment-management-strategies/static-site-deployments.md) — IPFS pushes website files to a decentralized network automatically using continuous integration workflows. ([source](https://docs.ipfs.tech/install/))
- [RPC-Based Remote Management](https://awesome-repositories.com/f/devops-infrastructure/rpc-based-remote-management.md) — Connects a command line interface to a local or remote daemon via RPC to manage data. ([source](https://docs.ipfs.tech/install/command-line/))
- [P2P Deployment](https://awesome-repositories.com/f/devops-infrastructure/static-site-deployment/p2p-deployment.md) — IPFS publishes static sites and applications to a peer-to-peer network with optional custom domain mapping. ([source](https://docs.ipfs.tech/))

### Programming Languages & Runtimes

- [Recursive Hashing Utilities](https://awesome-repositories.com/f/programming-languages-runtimes/content-hashing-utilities/recursive-hashing-utilities.md) — Generates unique content identifiers for files and directories by recursively processing their contents. ([source](https://docs.ipfs.tech/case-studies/arbol/))

### System Administration & Monitoring

- [P2P Node GUIs](https://awesome-repositories.com/f/system-administration-monitoring/p2p-node-guis.md) — Controls a peer-to-peer node through a visual interface for managing files, peers, and system settings. ([source](https://docs.ipfs.tech/install/ipfs-desktop/))

### User Interface & Experience

- [Browser File Management](https://awesome-repositories.com/f/user-interface-experience/browser-file-management.md) — Provides a browser interface to pin content, import files, and copy shareable content identifiers. ([source](https://docs.ipfs.tech/install/ipfs-companion/))
