IPFS organiseert data op basis van inhoud in plaats van locatie: elk bestand dat aan het netwerk wordt toegevoegd, wordt opgeknipt in stukken, gehasht en voorzien van een Content Identifier (CID) die is opgebouwd uit die hash. Omdat de CID puur is afgeleid van de inhoud van een bestand, produceren twee nodes die hetzelfde bestand opslaan altijd dezelfde CID, en verandert het adres volledig zodra ook maar één byte wordt gewijzigd, wat opgehaalde content een ingebouwde integriteitsgarantie geeft.
Het vinden van data op IPFS werkt anders dan op het conventionele web. Omdat een CID niets zegt over waar een bestand zich fysiek bevindt, kondigen peers via een distributed hash table aan welke content ze bezitten, en zoeken aanvragers in die tabel naar nodes die de gewenste CID aanbieden. Content verplaatst zich alleen over het netwerk wanneer een peer er daadwerkelijk om vraagt; er wordt niets uitgezonden naar servers die er niet om hebben gevraagd.
Een bekende beperking is dat het toevoegen van een bestand aan IPFS niet garandeert dat het beschikbaar blijft. Nodes verwijderen content periodiek via garbage collection, tenzij deze expliciet is "gepind", dus beschikbaarheid op lange termijn hangt af van iemand die de data blijft hosten, of betaalt voor een pinning-service die dat doet. Daarom wordt IPFS vaak gecombineerd met Filecoin, een zusternetwerk van hetzelfde team, Protocol Labs, dat betaalde, cryptografisch geverifieerde opslagcontracten toevoegt bovenop de adresseringslaag van IPFS.
De bekendste toepassing in crypto is opslag van NFT's: in plaats van afbeeldingen of JSON-metadata direct on-chain op te slaan, verwijst de tokenURI van een smart contract doorgaans naar een ipfs://-adres, waardoor dure on-chain opslag minimaal blijft terwijl de token toch gekoppeld blijft aan specifieke, manipulatiebestendige off-chain content. Omdat een CID niet stilletjes kan worden verwisseld, gedraagt op IPFS gehoste metadata zich vrijwel immutable, zolang het betreffende bestand ergens gepind blijft.