Overview

Web3 Storage offers a service layer for storing content on the InterPlanetary File System (IPFS) and Filecoin networks. It is designed to simplify the process of adding persistent, decentralized storage capabilities to Web3 applications, including decentralized applications (DApps), non-fungible tokens (NFTs), and other data-intensive projects requiring verifiable and resilient storage. The platform provides APIs and client libraries that abstract the underlying complexities of interacting directly with IPFS content addressing and Filecoin storage deals, making it accessible to developers without deep expertise in these protocols Web3 Storage API reference.

The service is particularly suited for use cases where data integrity, censorship resistance, and long-term availability are critical. For NFTs, Web3 Storage helps ensure that the associated metadata and digital assets are stored immutably rather than on centralized servers, addressing concerns about asset permanence Web3 Storage documentation. It also integrates with NFT.Storage, a service specifically tailored for NFT data, providing additional tools for managing and linking NFT assets to decentralized storage.

Developers using Web3 Storage can upload files and directories, receiving Content Identifiers (CIDs) which are cryptographic hashes that uniquely identify the data on IPFS. This content-addressing mechanism means that data is identified by its content rather than its location, enhancing network resilience and verifiability. Once data is on IPFS, Web3 Storage facilitates making Filecoin storage deals to ensure the data is persistently stored across the Filecoin network, a decentralized storage marketplace storing data on Web3 Storage. This dual-protocol approach leverages IPFS for content addressing and retrieval, and Filecoin for long-term archival and persistence, offering a comprehensive decentralized storage solution.

Web3 Storage is developed and maintained by Protocol Labs, the organization behind IPFS and Filecoin. It targets developers and technical buyers who need to integrate decentralized storage without managing their own IPFS nodes or Filecoin miners. Its free tier provides substantial introductory usage, allowing developers to experiment and deploy smaller projects before committing to paid plans that scale with increased storage and bandwidth requirements. The platform's commitment to open standards, such as those promoted by the IETF for HTTP semantics, also helps ensure broad compatibility and interoperability with existing web infrastructure.

Key features

  • IPFS Content Addressing: Automatically generates Content IDs (CIDs) for uploaded data, enabling content-based identification and retrieval across the IPFS network Web3 Storage data storage guide.
  • Filecoin Storage Deals: Facilitates making storage deals on the Filecoin network to ensure long-term data persistence and provable storage details on Filecoin storage.
  • NFT.Storage Integration: Seamlessly integrates with NFT.Storage for optimized handling and storage of NFT metadata and assets.
  • Client Libraries and SDKs: Provides SDKs for JavaScript, Python, Go, and Rust to simplify integration into various application environments Web3 Storage client libraries.
  • Public Gateway Access: Offers high-performance IPFS gateways for efficient content retrieval by end-users.
  • Developer API: A RESTful API allows programmatic interaction for uploading, retrieving, and managing stored data API reference documentation.
  • Free Tier: Includes 1 TB of storage and 1 TB of bandwidth per month for initial development and smaller projects Web3 Storage pricing.

Pricing

Web3 Storage offers a free tier and various paid plans designed to scale with usage. The pricing structure is based on storage capacity and bandwidth consumption.

Plan Storage (per month) Bandwidth (per month) Price (as of 2026-05-28) Notes
Free Tier 1 TB 1 TB $0 Suitable for evaluation and small projects.
Developer Plan 5 TB 5 TB $50 Increased limits for growing applications.
Pro Plan 25 TB 25 TB $200 Designed for larger applications and teams.
Enterprise Custom Custom Contact Sales Custom solutions for high-volume needs.

For detailed and up-to-date pricing information, refer to the official Web3 Storage pricing page.

Common integrations

  • NFT.Storage: Used to store NFT metadata and assets persistently on IPFS and Filecoin, with specific schemas for NFT data Web3 Storage NFT.Storage guide.
  • Ethereum/EVM Chains: DApps built on Ethereum or compatible EVM chains can reference CIDs from Web3 Storage within smart contracts for decentralized content linking.
  • Filecoin Network: Directly integrates with the Filecoin network for verifiable and long-term decentralized data storage Filecoin deals documentation.
  • IPFS Gateways: Content stored via Web3 Storage is accessible through any public IPFS gateway, improving content availability retrieving data from Web3 Storage.

Alternatives

  • Pinata: A popular IPFS pinning service that simplifies interacting with the IPFS network for content storage, particularly for NFTs.
  • Infura: Provides a suite of API services for connecting to Ethereum, IPFS, and other decentralized networks, including IPFS storage capabilities.
  • Arweave: A decentralized storage network designed for permanent data storage with a single upfront fee model.

Getting started

To get started with Web3 Storage, you typically install a client library and use an API token to interact with the service. Here's an example using the JavaScript client library to upload a file:


import { Web3Storage } from 'web3.storage'

// Construct with token and endpoint
const client = new Web3Storage({ token: process.env.WEB3STORAGE_TOKEN })

async function getFiles (path) {
  const files = await Web3Storage.getFilesFromPath(path)
  console.log(`Read ${files.length} file(s) from ${path}`)
  return files
}

async function uploadFile (filePath) {
  const files = await getFiles(filePath)
  console.log(`Uploading ${files.length} files`)
  const cid = await client.put(files, {
    name: 'my-dapp-data',
    maxRetries: 3
  })
  console.log('Content added with CID:', cid)
  return cid
}

// Example usage: Upload a local file named 'hello.txt'
// You would replace 'path/to/my/hello.txt' with your actual file path
// Make sure to set WEB3STORAGE_TOKEN in your environment variables
// For a real application, consider a secure way to manage API tokens.
// uploadFile('path/to/my/hello.txt')

// To retrieve content, you can use the CID:
async function retrieveFile(cid) {
  const res = await client.get(cid)
  if (!res.ok) {
    throw new Error(`failed to get ${cid} - [${res.status}] ${res.statusText}`)
  }

  // unpack File objects from the response
  const files = await res.files()
  for (const file of files) {
    console.log(`${file.cid} ${file.name} ${file.size}`)
    // You can also read the file content, e.g., file.text() or file.arrayBuffer()
  }
}

// Example retrieval (replace with an actual CID from your upload)
// retrieveFile('bafybeic24...generated-cid...fgh4')

This code snippet demonstrates how to initialize the Web3 Storage client, prepare files for upload, perform the upload, and then retrieve files using their Content ID (CID). More detailed examples and guides for various languages are available in the Web3 Storage documentation.