#What is the long-term vision for NFT.Storage?

NFT.Storage helps NFT developers today who are looking for easy APIs and best practices for storing their NFT data securely and resiliently. Even in the short-term, it is a trustless and decentralized solution. Users are able to cryptographically verify that the content identifiers that the service provides corresponds to their data, and that this data is hosted in multiple ways across the IPFS and Filecoin networks (allowing for accessibility across the network and preventing lock-in, with users also able to pin their data elsewhere to increase redundance).

Though we believe that there will always be value in some form of the libraries and services NFT.Storage provides, in the long-term the goal is to increasingly decentralize NFT.Storage. This includes relying more directly on the Filecoin network as the protocol continues to evolve. Some examples include storing data directly on the Filecoin network without putting it on a centralized IPFS node first and building oracles + DAOs + bridges to ensure n copies of data on the network (as Filecoin continues to evolve). We also want to make it easy for users to deploy and run their own NFT.Storage storage service. This, and other exciting things on the horizon, will help upgrade today's NFT.Storage implementation into the provably permanent storage solutions of tomorrow.

#How long will data be stored on NFT.Storage?

Data will be available in IPFS indefinitely as well as stored in long-term, redundant Filecoin storage deals with the global community of miners. See the Terms of Service for details.

#What are the upload or file size restrictions on NFT.Storage?

NFT.Storage accepts storage requests up to 31GiB in size per individual upload! Each upload can include a single file or a directory of files. (If you are using the HTTP API, you'll need to do some manual splitting for files over 100MB. See the HTTP API docs for details.) Currently, the rate limit will be triggered if the API receives more than 30 requests using the same API key within a 10 second window.

#Where can I learn more about NFT best practices?

Visit NFT School for information on NFT best practices as well as a variety of helpful tutorials and how-to guides for NFT developers.

#Who can access the data I store on NFT.Storage?

All data uploaded to NFT.Storage is available to anyone who requests it using the correct CID. Do not store any private or sensitive information in an unencrypted form using NFT.Storage.

#Can I delete my data on NFT.Storage?

You can delete data from being associated with your account, and it will no longer appear on the Files page of your account. However, this doesn’t prevent nodes in the IPFS decentralized storage network from retaining copies of the data indefinitely. Do not use NFT.Storage for data that may need to be permanently deleted in the future.

#I tried using an HTTP gateway to retrieve my content from IPFS but am receiving an HTTP error. Does this mean my content was not stored successfully on NFT.Storage?

Not necessarily! HTTP gateways are a great way for users who aren't running their own IPFS nodes to retrieve content from the IPFS network. However, they do introduce a centralized point of failure to a user flow. If a given gateway is down, or is under too much load, or is facing other issues, users who are accessing content through that gateway might be unable to access content. In this case, we recommend trying another gateway or running and using your own IPFS node.

Additionally, if the data was not stored on NFT.Storage, then there might be issues with the IPFS node(s) with a copy of the data providing that data to the gateway. Using NFT.Storage makes sure that the content stored is broadcasted to the network using best practices!

#How is NFT.Storage free to use?

Filecoin storage providers commit their hard drive capacity to the Filecoin network, and earn significant block rewards for doing so. This translates into real-world profits for storage providers, which incentivizes them to continue committing additional hard disk space to the Filecoin network. However, when storage providers are storing data from Filecoin users, their likelihood of winning block rewards goes up by a big factor 一 10x! Because NFT.Storage participates in the Filecoin Plus program, all data uploaded through the service is eligible for this 10x reward multiplier. This is such a powerful incentive for Filecoin storage providers to store user data that they tend to be willing to offer free storage and retrieval services in order to get this block reward multiple. As a result, most storage providers offer free storage and retrieval on Filecoin today and will continue to do so as long as block rewards continue to be a powerful incentive. This should be true for a very long time 一 for example, it is still the case that block rewards are powerful incentives for Bitcoin miners today. While there is some additional infrastructure cost associated with running the NFT.Storage service, Protocol Labs is committed to maintaining this infrastructure indefinitely as part of our mission to grow the decentralized storage ecosystem and preserve humanity's information for future generations.

#Is there a limit on numbers of files in a directory?

There are no limits enforced by the service, other than the size limit of 31GiB per individual upload. However, if your directory is large or has a lot of files, you might have some difficulty uploading it due to memory issues (especially if you are uploading to the website via your browser or the directory size is larger than your device's memory) or connection issues. If this is the case for you, we recommend splitting up your directory into smaller directories.

#Why am I seeing: SyntaxError: Unexpected token '.'

Try updating to Node version 14 or later. We no longer offer support for versions prior to v14 (see here). This error can occur when attempting to use Optional Chaining with an old version of Node.

#Why am I seeing: SyntaxError: Cannot use import statement outside a module

Try updating to Node version 14 or later. This error can occur because of having an old version of Node. We no longer offer support for Node versions prior to v14 (see here). With Node v14 or greater, you should be able to use import if you are using ESM Modules, otherwise you will need to use require.

#Why don't you support versions of Node prior to v14?

We do not support versions of Node prior to v14 because they are not considered active releases and that would mean loss of important, newer features such as Optional Chaining.

#How can I upload metadata with an existing HTTP image url?

We generally try to steer people away from linking to specific HTTP gateways, since they can be a single point of failure and may go down or disappear some point. If your heart is set on using HTTP URLs, I'd say your best bet is to create the metadata json manually and store it using storeBlob. There's an example app called minty that creates metadata like this, which might help demonstrate. Minty stores IPFS URIs in the metadata, but it could easily be modified to store gateway URLs instead.

#Skypack issues or Webpack 4 not bundling?

NFT.Storage is packaged in a way that causes issues with Webpack 4 and other JavaScript build tools that have not been updated to support the exports field in package.json. If you are unable to change your build tooling, you can import a pre-bundled version of the NFT.Storage library by changing your import statment. Please see the troubleshooting entry for an example.