What is an NFT?
An NFTAn NFT is a token that is unique, so it can represent ownership of a single item such as art, a ticket or a name.See it in the glossaryRead the explainer (non-fungible token) is a numbered entry in a Smart contractA smart contract is a program stored at an address on the blockchain that anyone can call and that runs exactly as written.See it in the glossaryRead the explainer’s ledger. The contract is a small program at one blockchain AddressAn address is the public identifier of a wallet or contract on Ethereum, a long string starting with 0x.See it in the glossary, and it records facts such as “token number 1 belongs to this wallet”. Wallets and marketplaces read those records to show what you own.
“Non-fungible” means each token can be told apart from the others. A dollar bill is fungible, because any bill swaps for any other. A numbered concert seat is not, because row 4, seat 12 is one specific thing.
Standards let every wallet and marketplace read every contract the same way. The Ethereum community writes them as proposals, and the ones about apps and tokens are called ERCAn ERC is an application-level Ethereum standard, such as the rules for how tokens behave, so apps can work with them.See it in the glossaryRead the explainer. The hub post on EIPs and ERCs explains the naming. For NFTs, two ERCs matter in practice: ERC-721 and ERC-1155.
What is ERC-721?
ERC-721 is the original NFT standard, defined in EIP-721. Its rule is that every token ID has exactly one owner. Think of numbered concert seats, where seat 1 belongs to one person and seat 2 to another.
A contract that follows the standard answers a short list of questions that any wallet can ask:
ownerOf(tokenId): who owns this token?balanceOf(owner): how many tokens does this address own in this collection?transferFromandsafeTransferFrom: move one token to another address.approve: let another address, such as a marketplace, move one specific token for you.setApprovalForAll: let an operator, usually a marketplace, move every token you hold in this collection. This is the broader and riskier permission.
Two features that people expect from collections are optional extras. name(), symbol() and tokenURI(tokenId) come from the MetadataMetadata is the descriptive data attached to a token, such as its name, image and traits, usually stored outside the chain.See it in the glossaryRead the explainer extension, and totalSupply() comes from the enumerable extension. Most collections offer both, which is why marketplaces show a collection name and a supply count.
Because each ID is its own record, ERC-721 fits one-of-a-kind items. Examples are a 10,000-piece profile-picture collection, a name or domain, a piece of digital art, or a deed-like record.
What is ERC-1155?
ERC-1155 is the multi-token standard, specified in EIP-1155. One contract holds many token types, and each type has a balance per person. Think of a shop shelf with several kinds of item and a stock count for each customer. Ana has 40 gold coins, Ben has 3, and Ana also has one sword.
The question changes from “who owns token 1?” to “how many of token 1 does this address hold?”. The standard answers it with balanceOf(account, id). A balance of 40 makes the token behave like a currency, and an ID with only one unit behaves like an ERC-721 token. One contract can mix both, which is why game studios use it. If a page says you “own 3 of” something, you are looking at an ERC-1155 balance.
ERC-1155 also adds batch operations. safeBatchTransferFrom sends several token types in one TransactionA transaction is a signed instruction that changes something on the blockchain, such as sending ETH or calling a contract.See it in the glossary, and balanceOfBatch reads several balances in one call. A game that gives a player a sword, a shield and 100 coins needs one transaction instead of three.
ERC-721 vs ERC-1155: the difference
ERC-721 tracks who owns each token ID, while ERC-1155 tracks how many of each token ID every address holds. Everything else follows from that.
| ERC-721 | ERC-1155 | |
|---|---|---|
| Everyday picture | Numbered concert seats | A shop shelf with stock counts |
| Ownership question | ownerOf(id) returns one address |
balanceOf(account, id) returns a number |
| Supply per ID | Exactly one | Any number, including one |
| Token types per contract | One collection, all non-fungible | Many types, fungible and non-fungible mixed |
| Moving tokens | One token per transfer call | Several types per transaction (safeBatchTransferFrom) |
| Metadata link | tokenURI(id), already resolved |
uri(id), may contain a {id} placeholder |
| Typical use | Profile pictures, art, names, deeds | Game items, editions, tickets, memberships |
Neither is better in general. ERC-721 is simpler to reason about and is the default for one-of-a-kind items. ERC-1155 is more efficient when many tokens share one contract and some come in quantities.
Where does the NFT picture live?
The picture is usually not on the blockchain. The contract stores a link to a small JSON file with a name, a description and an image link. That file points to the image. Storing an image onchain is expensive, so almost every collection keeps its files elsewhere.
The link comes from tokenURI(tokenId) on ERC-721 and uri(id) on ERC-1155. It often starts with ipfs://, which means the file lives on IPFS. IPFS is a network that finds files by a fingerprint of their content instead of a server address. Some collections use an ordinary web address instead.
The blockchain settles ownership, but what the token looks like depends on files kept elsewhere. If the collection owner changes the base link or the server behind it disappears, the picture can change or vanish. The ownership record stays as it was. Content-addressed IPFS links are harder to swap quietly, so collections that care about permanence prefer them.
ERC-1155 adds one wrinkle. Its uri(id) may return a template containing the text {id}, which the app must replace with the token ID in a specific format. The ERC-1155 URI and metadata guide covers that rule.
See it on a real contract
The card shows the total supply of Bored Ape Yacht Club, an ERC-721 collection. The ERC-721 Inspector reads its name, owner and tokenURI for any token ID. For ERC-1155, the ERC-1155 Inspector on adidas Originals (0x28472a58A490c5e09A238847F66A68a47cC76f0f) showed a supply of 4363 for token 0 and 5569 for token 1. That was on 2026-11-11 at block 26391463: thousands of copies of each ID in one contract.
Total supply of Bored Ape Yacht Club
Reading live from Ethereum
Inspect Bored Ape Yacht Club in the ERC-721 Inspector
Show the query
bayc.totalSupply()Common mix-ups
-
“The picture is stored on the blockchain.” Usually the contract holds only a link to a file kept elsewhere.
-
“ERC-1155 is the newer, better ERC-721.” ERC-721 suits one-of-a-kind items, and ERC-1155 suits items that come in quantities.
-
“Listing an NFT only approves that one token.” Not always.
setApprovalForAlllets a marketplace move every token you hold in that collection. -
“ERC-1155 tokens are always interchangeable.” They can be, but an ID with a supply of one behaves like an ERC-721 token.
Summary
- ERC-721 gives every token ID exactly one owner, which suits one-of-a-kind items.
- ERC-1155 tracks how many of each token type every address holds, which suits game items, editions and tickets.
- The picture usually lives outside the blockchain, so only the ownership record is guaranteed to last.
For developers
You can read both kinds of contract with one evmquery request each and no ABI file. The ERC-20, ERC-721 and ERC-1155 ABI reference lists the function signatures for all three standards.