Free 30-min Web3 Consultation
Book Now
Smart Contract Security Audits
Learn More
Custom DeFi Protocol Development
Explore
Full-Stack Web3 dApp Development
View Services
Free 30-min Web3 Consultation
Book Now
Smart Contract Security Audits
Learn More
Custom DeFi Protocol Development
Explore
Full-Stack Web3 dApp Development
View Services
Free 30-min Web3 Consultation
Book Now
Smart Contract Security Audits
Learn More
Custom DeFi Protocol Development
Explore
Full-Stack Web3 dApp Development
View Services
Free 30-min Web3 Consultation
Book Now
Smart Contract Security Audits
Learn More
Custom DeFi Protocol Development
Explore
Full-Stack Web3 dApp Development
View Services
LABS
Glossary

balanceOf

balanceOf is a core function defined by token standards like ERC-20 that returns the quantity of tokens held by a specific blockchain address.
Chainscore © 2026
definition
BLOCKCHAIN FUNCTION

What is balanceOf?

A core smart contract function that queries the token balance of a specific address on a blockchain.

The balanceOf function is a standard method defined in token smart contracts, most notably within the ERC-20 and ERC-721 standards on Ethereum and other EVM-compatible chains. It is a read-only or view function that takes a single parameter—an address—and returns the token balance associated with that address as an unsigned integer. This function is fundamental for wallets, explorers, and decentralized applications (dApps) to display user holdings, verify ownership, and enforce access controls. Its standardized signature is function balanceOf(address _owner) public view returns (uint256 balance).

From a technical perspective, balanceOf queries a mapping data structure inside the smart contract, typically declared as mapping(address => uint256) private _balances;. When called, it does not modify the blockchain state or require gas from the caller, making it free to execute on most nodes. This function is the primary mechanism for off-chain systems and indexers to aggregate and report token distribution data. Its reliability and standardization are critical for the composability of the DeFi ecosystem, allowing protocols to trustlessly verify collateral or stake.

Common use cases include checking a wallet's token balance in a user interface, verifying if an address holds a specific Non-Fungible Token (NFT) for gated access, and enabling smart contracts to perform logic based on a user's holdings (e.g., requiring a minimum balance to vote in a DAO). For NFTs (ERC-721), the return value is either 0 or 1 for a given token ID, indicating ownership. It is often paired with the transfer function, which subsequently updates the internal balances mapping that balanceOf reads from.

While seemingly simple, the balanceOf function's implementation must be secure and accurate, as it is a trust anchor for financial logic. Malicious or incorrect implementations can lead to severe vulnerabilities, such as allowing unauthorized transfers or incorrect balance reporting. Developers must ensure it integrates correctly with other state-changing functions to maintain invariants, like the total supply always equaling the sum of all balances. Audits frequently focus on the consistency of the balances mapping manipulated by this function.

how-it-works
ERC-20 & ERC-721 STANDARD

How the balanceOf Function Works

The `balanceOf` function is a core, read-only method in token standards like ERC-20 and ERC-721 that returns the token balance of a specified address on the blockchain.

The balanceOf function is defined by the ERC-20 standard for fungible tokens and the ERC-721 standard for non-fungible tokens (NFTs). Its primary purpose is on-chain state querying, allowing any external caller—such as a wallet, decentralized application (dApp), or another smart contract—to programmatically check how many units of a token a specific Ethereum address holds. The function signature is typically balanceOf(address _owner) public view returns (uint256), where _owner is the address being queried and the return value is an integer representing the balance.

For fungible ERC-20 tokens like DAI or USDC, balanceOf returns a simple count of token units, where 1 unit often equals 1 * 10^18 of the token's smallest denomination (wei). For non-fungible ERC-721 tokens, the function's behavior is identical in signature but different in semantics: it returns the number of distinct NFT token IDs owned by the address, not the sum of their values. This function is a view function, meaning it does not modify the blockchain state, requires no gas fee to call, and is executed locally by an Ethereum node.

The balanceOf function is fundamental to blockchain interoperability and composability. Wallets use it to display user holdings, decentralized exchanges (DEXs) use it to check liquidity provider stakes, and lending protocols use it to determine a user's collateral balance. Its reliability depends on the correct implementation of the underlying token contract's internal balance tracking, usually a mapping such as mapping(address => uint256) private _balances;. Understanding balanceOf is essential for developers building any application that interacts with tokenized assets on Ethereum and compatible EVM chains like Polygon, Arbitrum, and BNB Smart Chain.

key-features
ERC-20 & ERC-721 FUNCTION

Key Features of balanceOf

The balanceOf function is a core read-only method in token standards that returns the token balance of a specified address. It is fundamental for wallets, explorers, and smart contracts to query ownership.

03

Gas-Free Read Operation

As a view (or constant) function, calling balanceOf does not require a transaction, pay gas fees, or alter the blockchain. It queries the current state directly from a node.

  • Execution: Can be called via RPC calls (eth_call) from any client or frontend.
  • Performance: Essential for real-time balance updates in user interfaces without cost or delay.
04

Integration in Smart Contracts

Smart contracts frequently call balanceOf on external tokens to enforce logic, such as checking if a user has sufficient funds before proceeding.

  • Common Pattern: require(IERC20(token).balanceOf(msg.sender) >= amount, "Insufficient balance");
  • DeFi Use: Lending protocols use it to calculate collateral ratios, and DEXs use it to check liquidity provider shares.
05

Underlying Data Structure

The function reads from a core mapping data structure within the token contract. For most implementations:

  • ERC-20: mapping(address => uint256) private _balances;
  • ERC-721: mapping(address => uint256) private _balances; (count) and mapping(uint256 => address) private _owners;

The function simply returns _balances[account]. This makes it an O(1) constant-time lookup.

06

Related Query Functions

balanceOf is often used alongside other standard functions for a complete state picture:

  • totalSupply(): Returns the total tokens in existence (ERC-20) or minted (ERC-721).
  • allowance(owner, spender) (ERC-20): Checks approved spending limit.
  • ownerOf(tokenId) (ERC-721): Returns the owner of a specific NFT ID.
  • tokenOfOwnerByIndex(owner, index) (ERC-721): Enumerates NFTs owned by an address.
ecosystem-usage
PRACTICAL APPLICATIONS

Ecosystem Usage: Who Uses balanceOf?

The balanceOf function is a foundational read-only call used across the blockchain ecosystem to query token holdings. Its primary consumers are smart contracts, user interfaces, and analytical tools that need to verify ownership or calculate financial positions.

ERC SPECIFICATION COMPARISON

balanceOf Across Different Token Standards

A comparison of the balanceOf function's implementation and behavior across major Ethereum token standards.

Feature / AttributeERC-20 (Fungible)ERC-721 (NFT)ERC-1155 (Multi-Token)

Primary Return Type

uint256 (balance)

address (owner)

uint256 (balance)

Function Signature

balanceOf(address owner)

balanceOf(address owner)

balanceOf(address account, uint256 id)

Return Value Meaning

Quantity of identical tokens owned

Token ID of the NFT owned (or revert)

Quantity of a specific token ID owned

Batch Query Support

Typical Use Case

Check token holdings

Verify NFT ownership

Check balance of a specific game item or asset

Gas Cost (Relative)

Low

Low

Medium (for single query)

Handles Non-Existent Tokens

Returns 0

Reverts or returns zero address

Returns 0

ERC-20 & BEYOND

Technical Details & Considerations

The `balanceOf` function is a fundamental read operation in token standards, but its implementation and interpretation involve critical technical nuances for developers and analysts.

The balanceOf function is a standard method defined in token contracts, such as ERC-20 and ERC-721, that returns the token balance of a specified wallet address. When called with an address parameter (e.g., balanceOf(0x123...)), it queries the contract's internal state—typically a mapping data structure—to retrieve and return the number of tokens associated with that address as an unsigned integer (uint256). This is a view function, meaning it does not modify the blockchain state and can be called without paying gas fees when executed off-chain via an RPC node.

Example ERC-20 Interface:

solidity
function balanceOf(address account) external view returns (uint256);
BALANCEOF

Frequently Asked Questions (FAQ)

Common questions about the `balanceOf` function, a fundamental method for querying token ownership in smart contracts.

The balanceOf function is a standard read-only (view) function in token smart contracts that returns the token balance of a specified wallet address. It is a core component of token standards like ERC-20 and ERC-721, allowing external applications to query how many units of a token a specific account holds without modifying the blockchain state. The function typically takes a single parameter, an address, and returns a uint256 (for fungible tokens) or other integer representing the balance.

Example ERC-20 Signature:

solidity
function balanceOf(address account) external view returns (uint256);

Calling balanceOf(0x123...) on a DAI contract would return the amount of DAI that address holds.

ENQUIRY

Get In Touch
today.

Our experts will offer a free quote and a 30min call to discuss your project.

NDA Protected
24h Response
Directly to Engineering Team
10+
Protocols Shipped
$20M+
TVL Overall
NDA Protected direct pipeline
balanceOf: ERC-20 Token Balance Function Explained | ChainScore Glossary