Your MetaMask wallet holds USDT, UNI, LINK, and a dozen other tokens without you ever configuring anything special for each one. That is not magic. It is a token standard. Every token on Ethereum follows a shared set of rules that tells wallets, exchanges, and smart contracts exactly how to interact with it. Without those rules, every new token would need its own custom wallet support and exchange integration – weeks of work per project. The two standards that define how almost everything on Ethereum works are ERC-20 for interchangeable tokens and ERC-721 for unique ones. This guide explains both, how they differ, and when each one applies.
What Is a Token Standard and Why Does Ethereum Need One?
A token standard is a shared interface. It specifies which functions a smart contract must implement and how those functions must behave. Any wallet or application that knows how to work with the standard can automatically work with every token that follows it, without knowing anything specific about that token.

What ERC stands for – Ethereum Request for Comment
ERC stands for Ethereum Request for Comment. It is a proposal format used by the Ethereum developer community to define how specific things should work on the network. The number after ERC is simply the sequential proposal number. ERC-20 was the twentieth such proposal. EIPs (Ethereum Improvement Proposals) cover broader protocol changes; ERCs specifically cover application-layer standards like token interfaces.
Anyone can submit an ERC. The proposal goes through community review and, if accepted, becomes a recognized standard that developers can build against. Fabian Vogelsteller, with input from Vitalik Buterin, submitted the ERC-20 proposal on November 19, 2015. It was officially finalized in 2017 and remains the most widely adopted token standard in existence.
What happened before standards existed
Before ERC-20, every token project on Ethereum built its own custom code. Two projects might both call their transfer function by different names, take different parameters, or behave differently in edge cases. The result was that exchanges needed weeks of custom engineering work to list each new token, and wallet developers had to write separate code for every project they wanted to support.
ERC-20 ended that. One standard meant one integration. Build a wallet that supports ERC-20, and it automatically supports every token that follows the standard – including tokens that do not exist yet at the time you write the code. This is what made the 2017 ICO boom technically possible: any new token worked in MetaMask, on Uniswap, and on every supporting exchange from day one.
How standards solve interoperability
The analogy that captures it best is USB. Before USB, every peripheral had its own connector. After USB, one port worked for everything. ERC-20 did the same thing for Ethereum tokens. A wallet does not need to know that USDT is a stablecoin issued by Tether or that UNI is a governance token for Uniswap. It only needs to know that both are ERC-20 tokens, which means it can check balances, request transfers, and display holdings using the exact same code for both. The Ethereum Virtual Machine executes the same function calls regardless of which token’s contract is being addressed, because the interface is standardized.
ERC-20: The Standard for Fungible Tokens
ERC-20 defines how fungible tokens work on Ethereum. Fungible means every unit is identical and interchangeable. One USDT is exactly the same as any other USDT, just as one dollar bill is worth the same as any other dollar bill. This property is what makes ERC-20 tokens suitable for use as currency, collateral, voting rights, and rewards.

What “fungible” actually means
Fungibility is the property of being interchangeable. If you lend someone 10 USDC, you do not need the exact same 10 USDC back – any 10 USDC works. The tokens are indistinguishable from each other. This is the defining characteristic of money in any form. It is also what makes ERC-20 tokens work for lending protocols, liquidity pools, and payment systems: participants do not care which specific tokens they receive, only how many.
The opposite is non-fungibility, which is what ERC-721 handles. A specific NFT cannot be substituted with a different NFT of the same collection – they have different IDs, different traits, and potentially very different market values.
The six mandatory functions every ERC-20 token must have
To be a valid ERC-20 token, a smart contract must implement six specific functions. These functions are what wallets and protocols call when they interact with the token.
| Function | What it does |
|---|---|
| totalSupply() | Returns how many tokens currently exist in total |
| balanceOf(address) | Returns the token balance held by a specific wallet address |
| transfer(to, amount) | Sends tokens directly from the caller’s address to another |
| transferFrom(from, to, amount) | Moves tokens between addresses on behalf of an approved spender |
| approve(spender, amount) | Grants a specific address permission to spend up to a set amount |
| allowance(owner, spender) | Returns how much a spender is still authorized to use from an owner’s balance |
The standard also requires two events: a Transfer event that logs every movement of tokens between addresses, and an Approval event that records every spending permission granted. These events create a transparent, publicly verifiable record on the blockchain.
How ERC-20 tokens actually work – no files move
When you send ERC-20 tokens, nothing physically moves. The token is not a file that travels from your wallet to another. It is a balance recorded inside the token’s smart contract. The contract maintains an internal ledger mapping wallet addresses to their token balances.
Sending tokens means calling the transfer() function on that contract. The contract checks that your balance is sufficient, subtracts the amount from your address, adds it to the recipient’s address, and emits a Transfer event. That is the entire operation. No actual tokens exist as discrete objects – only entries in a ledger that the contract enforces. This also explains why sending USDT requires ETH for gas fees: you are calling a function on the Ethereum network, which costs computation regardless of which token is involved. The mechanics of how Ethereum gas fees work affect every ERC-20 transaction you make.
The approve and transferFrom pattern – DeFi’s engine
The approve() and transferFrom() combination is what makes DeFi work. Without it, using a decentralized exchange would require sending your tokens to the exchange’s contract first – giving up custody. With it, you keep your tokens in your wallet and simply grant the exchange permission to move a specific amount on your behalf when the trade executes.
The flow works like this: you call approve() on the token contract, specifying Uniswap’s contract address and the maximum amount it can spend. Uniswap’s contract then calls transferFrom() when you initiate a swap, moving only what you authorized. Your tokens never leave your wallet until the trade happens, and only the amount you approved can be moved.
The security risk is the approval itself. If you grant an unlimited approval – which many DeFi interfaces request by default – that contract can drain your tokens at any time for as long as the approval stands. Revoking approvals through tools like Revoke.cash after you finish using a protocol is a practical habit for anyone active in DeFi. The broader range of threats targeting Ethereum users goes well beyond just token approvals.
Minting and burning – how token supply changes
The ERC-20 specification does not require minting or burning functions, but almost every real token has them. Minting creates new tokens and increases the total supply. USDC is minted when Circle receives a dollar deposit – one dollar in, one USDC out. DAI is minted when a user locks ETH as collateral in MakerDAO’s protocol. Burning permanently removes tokens from circulation by sending them to an address from which they can never be retrieved. Some protocols burn tokens to create deflationary supply pressure, others burn them when users redeem the underlying asset the token represents.
Real-World ERC-20 Tokens: Stablecoins, Governance, and Utility
The abstract standard becomes concrete through the tokens built on it. Three categories cover most of the ERC-20 market by volume and use.

Stablecoins – the highest-volume ERC-20 use case
Stablecoins are the dominant category of ERC-20 tokens by transaction volume. USDT (Tether) carries approximately $189.5 billion in circulating supply across all chains as of Q1 2026, according to DeFiLlama. USDC has roughly $77.3 billion. DAI, issued by MakerDAO through its collateralized lending system, holds $4.6 billion. These three tokens alone process more monthly settlement volume than many traditional payment networks. Their ERC-20 compliance is what lets them move through the same DeFi protocols, wallets, and exchanges as every other Ethereum token.
Governance tokens – voting with ERC-20
Governance tokens represent voting rights in decentralized protocols. UNI holders vote on Uniswap protocol upgrades and fee changes. COMP holders vote on Compound’s lending parameters. MKR holders vote on DAI collateral types and stability fees. Holding these tokens is functionally similar to holding shares in a company – you do not receive dividends in most cases, but you do have formal input into how the protocol operates. The ERC-20 standard gives governance tokens the same transferability and DeFi compatibility as any other fungible token. To understand what ETH is used for across these protocols, including governance and staking, gives useful context for why token standards matter beyond just the technical spec.
Utility tokens – paying for services on-chain
Utility tokens exist to pay for a specific service within a protocol. LINK, Chainlink’s token, is paid to oracle node operators who deliver real-world data to smart contracts. When a lending protocol needs to know the current ETH price to process a liquidation, it pays LINK to a Chainlink node that delivers that price. The ERC-20 standard lets LINK trade freely on decentralized exchanges while still functioning as the payment mechanism inside its own network.
ERC-20 beyond Ethereum – EVM-compatible chains
The ERC-20 standard works on any blockchain that uses the Ethereum Virtual Machine. Arbitrum, Optimism, Base, Polygon, and BNB Chain all support ERC-20 tokens using the same interface as Ethereum mainnet. USDC on Arbitrum is an ERC-20. USDC on Ethereum mainnet is an ERC-20. The same wallet code, the same function calls, the same behavior – different chains. This portability means the skills and tools you build around ERC-20 on Ethereum transfer directly to Layer-2 networks where transaction costs are a fraction of mainnet. Moving ETH and ERC-20 tokens between mainnet and these networks is covered in the guide on bridging ETH to layer 2.
ERC-721: The Standard for Non-Fungible Tokens
ERC-721 was proposed by William Entriken, Dieter Shirley, Jacob Evans, and Nastassia Sachs and finalized in January 2018. It defines the interface for non-fungible tokens – tokens where every unit is distinct and cannot be substituted for another. The key technical difference from ERC-20 is that ERC-721 tracks individual token ownership by ID rather than tracking cumulative balances.

What makes ERC-721 different from ERC-20
In ERC-20, the contract tracks: this address has 500 tokens. In ERC-721, the contract tracks: token #4721 belongs to this address. The distinction is fundamental. CryptoPunk #1 and CryptoPunk #2 are not interchangeable. They have different visual traits, different ownership histories, and potentially very different prices. Each ERC-721 token has a unique tokenId that persists for the life of the token. You cannot have 0.5 of an ERC-721 token. You own it or you do not.
The core ERC-721 functions
| Function | What it does |
|---|---|
| ownerOf(tokenId) | Returns the address that currently owns a specific token |
| transferFrom(from, to, tokenId) | Transfers a specific token by its ID from one address to another |
| approve(address, tokenId) | Approves a single address to transfer one specific token |
| setApprovalForAll(operator, bool) | Approves an operator to manage all tokens owned by the caller |
| isApprovedForAll(owner, operator) | Checks whether an operator is approved to manage all of an owner’s tokens |
| safeTransferFrom() | Like transferFrom but checks that the recipient contract can handle NFTs |
| balanceOf(address) | Returns how many NFTs an address owns (count, not value) |
What ERC-721 tokens are used for
The first major wave of ERC-721 adoption was digital art and collectibles: CryptoPunks, Bored Ape Yacht Club, Art Blocks. These remain large categories by trading volume. But ERC-721 applications go further than profile pictures. ENS .eth domains are ERC-721 tokens – when you register vitalik.eth, you receive an NFT in your wallet that represents ownership of that name. Gaming projects use ERC-721 for in-game items where each item has distinct attributes. Event ticketing experiments use NFTs to create tickets that cannot be counterfeited and that carry programmable post-event utility. Real estate tokenization projects use ERC-721 to represent fractional or full ownership of physical property on-chain. The Ethereum Name Service is one of the clearest examples of ERC-721 in practical daily use beyond art collecting.
ERC-721 metadata – where the actual content lives
An ERC-721 token itself stores only two things on the Ethereum blockchain: the tokenId and the address of its current owner. The artwork, the description, the traits – all of that is metadata, and it typically lives off-chain. The token’s tokenURI() function returns a URL or IPFS hash pointing to a JSON file that contains the metadata.
This creates a dependency. If the metadata is stored on a centralized server and that server goes offline, the NFT becomes an empty token ID on the blockchain with no image or attributes retrievable. IPFS-hosted metadata is more resilient because the content is addressed by its hash and can be retrieved from any node that has it. Fully on-chain NFTs, which store the image data directly in the contract, have no off-chain dependency at all but cost significantly more to mint. The long-term value of many NFTs depends on whether their metadata is stored in a way that survives beyond the team that created them.
ERC-20 vs ERC-721: Side-by-Side Comparison
The two standards solve different problems.

Choosing the right one is not a matter of preference – it follows from what the token is supposed to represent.
| Feature | ERC-20 | ERC-721 |
|---|---|---|
| Token type | Fungible | Non-fungible |
| Interchangeable? | Yes – 1 USDT = any other 1 USDT | No – each token has a unique identity |
| Tracked by | Balance per address | Ownership of specific tokenId |
| Divisible? | Yes, up to 18 decimal places | No – one token is one token |
| Transfer targets | Amount to address | Specific tokenId to address |
| Gas per transfer | Lower | Higher (more data per token) |
| Primary use cases | Currency, stablecoins, governance, utility | Art, collectibles, domains, gaming items |
| Common examples | USDT, USDC, UNI, LINK, DAI | CryptoPunks, BAYC, ENS domains, event tickets |
When to use ERC-20 vs ERC-721
The practical rule is simple. Ask: “Is every unit identical and equally valuable?” If yes, ERC-20. If no – if each token needs to be distinct, traceable, and unique – ERC-721.
A company issuing reward points uses ERC-20: 100 points from any source are worth 100 points. A company issuing event tickets uses ERC-721: row A seat 14 and row G seat 3 are not the same ticket. A lending protocol that issues a receipt for your deposit uses ERC-20. A protocol that issues a receipt that tracks which specific assets you deposited, when, and at what rate uses ERC-721. The smart contract logic that implements either standard is straightforward once you know which question to ask.
Can ERC-20 and ERC-721 work together?
Yes, and they often do. Uniswap V3 liquidity positions are ERC-721 tokens that represent a position in an ERC-20 token liquidity pool. When you provide liquidity to a USDC/ETH pool on Uniswap V3, you receive an NFT that records exactly which price range you provided liquidity in, how much, and what fees you have earned. That NFT can be sold, transferred, or used as collateral in protocols that accept Uniswap V3 positions. NFTfi and similar platforms let you borrow ERC-20 stablecoins against ERC-721 NFTs as collateral. ENS domains (ERC-721) charge annual renewal fees in ETH (ERC-20). The two standards are not competing. They handle different things and cooperate where needed.
ERC-1155: The Multi-Token Standard That Does Both
ERC-1155 was proposed by the Enjin team and finalized in 2019. It solves a specific problem that blockchain gaming created: a single game might need thousands of fungible tokens (gold coins, potions, arrows) and hundreds of non-fungible items (unique weapons, character skins) all in one game. Deploying a separate ERC-20 and ERC-721 contract for each would be expensive and inefficient.
What ERC-1155 adds over older standards
One ERC-1155 contract can hold any number of token types, some fungible and some non-fungible, all managed through a single interface. The practical gains are in gas costs and batch operations. Sending 10 different token types to 5 recipients in a single ERC-1155 transaction costs a fraction of what 50 separate ERC-20 transfers would cost. ERC-1155 also introduces semi-fungible tokens: event tickets that are identical and fungible before the event but become unique collectibles afterward. OpenSea, Rarible, and most major marketplaces support ERC-1155 alongside ERC-721.
| Standard | Token type | Best for | Batch transfers |
|---|---|---|---|
| ERC-20 | Fungible only | Currency, stablecoins, governance | No |
| ERC-721 | Non-fungible only | Unique art, domains, property | Limited |
| ERC-1155 | Both in one contract | Gaming, mixed collections, bulk ops | Yes |
ERC-20 Security Risks: What to Watch For
Understanding the ERC-20 standard also means understanding where it creates openings for theft and fraud. Most ERC-20 attacks do not exploit bugs in the standard itself. They exploit how users interact with it.
Approval hijacking – the most common ERC-20 attack
Phishing sites present wallet prompts that look like routine DeFi interactions but request unlimited approve() permissions for a malicious contract. Once you sign that approval, the contract can drain every token of that type from your wallet at any time until you revoke it. The attack works because most users do not read approval prompts carefully, and unlimited approvals are common even in legitimate protocols.
Two habits prevent most approval hijacking: setting a specific amount rather than unlimited when approving, and checking active approvals regularly through Revoke.cash and revoking any you do not recognize or no longer need. Each revocation is a small gas transaction, but it eliminates a standing risk. The connection between ERC-20 token approvals and the broader landscape of keeping crypto safe is one of the most practical security topics for active Ethereum users.
Honeypot tokens – fake ERC-20s you can buy but not sell
A honeypot token implements a modified transfer() or transferFrom() that allows purchases but blocks sells. The contract owner adds hidden logic that throws an error when anyone other than the owner tries to move tokens out. The token appears on DEX charts, shows trading volume, and looks like a normal ERC-20. People buy in. Nobody can sell. The contract owner drains the liquidity pool and disappears.
Checking a token before buying: look up the contract on Etherscan, verify the source code is published and verified (unverified contracts are a major red flag), and check whether the transfer function has any conditional blocks that differ from standard ERC-20 behavior. Token Sniffer and similar tools automate this check and flag common honeypot patterns.
Sending ERC-20 tokens to the wrong contract
Sending ERC-20 tokens directly to a smart contract address that does not have a function to forward them further results in permanent loss. The tokens arrive at the contract, are recorded in the token’s ledger as belonging to that contract address, and cannot be retrieved because no function in the receiving contract knows how to send them out.
This happens most often when users copy a protocol’s contract address instead of using the protocol’s interface. Always send tokens through the application’s interface, not directly to contract addresses. The ERC-223 standard was proposed specifically to fix this problem – it would have rejected tokens sent to incompatible contracts – but it never gained adoption because migrating from ERC-20 to any replacement would require retiring hundreds of thousands of existing token contracts.
ERC-20 in 2026: Real-World Asset Tokenization and What Comes Next
The ERC-20 standard is not static. The ecosystem around it has evolved significantly, and its use cases in 2026 go well beyond the original scope of the 2015 proposal.
RWA tokenization – the biggest new ERC-20 use case
Real-world asset tokenization converts ownership rights to physical and financial instruments into ERC-20 tokens that settle on Ethereum. BlackRock’s BUIDL fund – a tokenized money market fund – reached $500 million in assets within weeks of launching on Ethereum. Franklin Templeton tokenized a US government money market fund as an ERC-20 token. JPMorgan uses a permissioned version of Ethereum for inter-bank settlements. McKinsey projects the tokenized asset market could reach $1.7 trillion by 2030.
The ERC-20 standard is why this works: a tokenized treasury bill that follows ERC-20 can be used as collateral in DeFi lending protocols, transferred between institutions on the same rails as stablecoins, and integrated into any application that already supports ERC-20. The full picture of how many ETH tokens exist and how the supply mechanisms work gives context for where these new tokenized assets fit in the broader Ethereum economy.
ERC-4337 – account abstraction and what it changes for ERC-20
ERC-4337, finalized in 2023 and seeing growing adoption through 2025 and 2026, introduces account abstraction to Ethereum without requiring a protocol-level change. The most immediately useful consequence for ERC-20 users is the ability to pay gas fees in ERC-20 tokens rather than ETH. Under the current system, a user who holds only USDC must acquire ETH separately just to send USDC anywhere. ERC-4337 wallet implementations allow a paymaster – a contract that accepts ERC-20 tokens as fee payment and pays the ETH gas on the user’s behalf – to handle this automatically.
ERC-4337 also enables batch transactions, where an approve and a swap happen in a single user-signed operation rather than two separate transactions. For ERC-20 token flows that currently require multiple steps and multiple gas payments, this reduces friction substantially. The how Ethereum works at the protocol level, including the transaction model that ERC-4337 builds on top of, is covered in the guide on how Ethereum works.
Will ERC-20 be replaced?
Etherscan shows over 500,000 deployed ERC-20 token contracts on Ethereum mainnet as of Q1 2026. Chainalysis estimates that over 90% of tokens on major exchanges use ERC-20 or a directly compatible standard. Replacing ERC-20 would require migrating every one of those contracts and rewriting every wallet, DEX, and lending protocol that interfaces with them. That is not a realistic transition.
What happens instead is layering. ERC-4337 adds smart wallet functionality on top of ERC-20 without changing the token standard itself. ERC-1155 handles use cases that ERC-20 and ERC-721 handle separately. ERC-721 handles unique assets alongside ERC-20’s fungible ones. The standards coexist and each does what it does best. The token standard question is not which standard wins – it is which standard fits the specific asset you are working with.
Frequently Asked Questions
What is an ERC-20 token?
An ERC-20 token is a fungible digital asset on Ethereum that follows the ERC-20 interface standard. Every ERC-20 token implements six mandatory functions (totalSupply, balanceOf, transfer, transferFrom, approve, allowance) that make it automatically compatible with any wallet, exchange, or DeFi protocol that supports the standard. USDT, USDC, UNI, LINK, and DAI are all ERC-20 tokens.
What is the difference between ERC-20 and ERC-721?
ERC-20 handles fungible tokens where every unit is identical and interchangeable. ERC-721 handles non-fungible tokens (NFTs) where every token has a unique ID and cannot be substituted for another. ERC-20 tracks balances per address. ERC-721 tracks which specific tokenId belongs to which address. USDC is ERC-20. A CryptoPunk or an ENS domain is ERC-721.
Can I send ERC-20 tokens without ETH?
Under the standard model, no. Sending ERC-20 tokens is a function call on the Ethereum network, and all function calls require ETH for gas fees. ERC-4337 account abstraction wallets change this by allowing paymasters to accept ERC-20 tokens as fee payment, but those wallets are still in early adoption. Standard MetaMask users need ETH to send any ERC-20 token, even if they hold nothing but USDC or USDT.
What is the most popular ERC-20 token?
By circulating supply, USDT (Tether) is the largest ERC-20 token with approximately $189.5 billion in circulation across all chains as of Q1 2026. By DeFi usage and on-chain transaction volume on Ethereum specifically, USDC and DAI are also among the most active. By market cap excluding stablecoins, ETH is the largest asset native to Ethereum, though ETH itself is not technically an ERC-20 token – Wrapped ETH (WETH) is the ERC-20 version used in DeFi.
Are ERC-20 tokens safe?
The ERC-20 standard itself is well-audited and widely deployed. The risks come from how tokens are built on top of it. Unlimited token approvals can be exploited by malicious contracts. Honeypot tokens use hidden logic to block selling. Unverified contracts can include backdoors. Sending tokens to incompatible smart contract addresses causes permanent loss. The standard is safe. The ecosystem around it requires the same due diligence as any financial tool.
What is ERC-1155 and how is it different from ERC-20?
ERC-1155 is a multi-token standard that handles both fungible and non-fungible tokens in a single smart contract. It supports batch transfers – sending multiple different token types in one transaction – which reduces gas costs significantly for applications that need both. ERC-20 handles only fungible tokens. ERC-1155 is most common in gaming and mixed-asset collections. OpenSea supports all three standards.
Do ERC-20 tokens work on other blockchains?
ERC-20 works on any EVM-compatible blockchain. Arbitrum, Optimism, Base, Polygon, and BNB Chain all use the same ERC-20 interface. USDC on Arbitrum and USDC on Ethereum mainnet both implement the same six functions. The same wallet code works for both. They are technically different token contracts on different chains, but they follow identical rules and behave identically from the user’s perspective.









