This page explains practical token management in MetaMask: how the software wallet discovers balances, how to add custom tokens, why a token can be missing, and the security trade-offs when you interact with token contracts. I use MetaMask daily for swaps and small DeFi positions, and I've learned (the hard way) to double-check contract addresses before adding a token. And yes, I once approved a malicious allowance — I revoked it later.
If you need setup help first, see the setup-desktop and setup-mobile guides. For adding networks like BSC or Polygon before adding tokens, see add-bsc and add-polygon.
MetaMask is a non-custodial hot wallet. It shows token balances by querying the blockchain via your current RPC provider. When the wallet lists an ERC-20 (or BEP20 on an EVM-compatible chain) token it generally calls balanceOf on the token contract and then applies the token's decimals to display a human number. Short version: MetaMask reads the contract; it does not invent balances.
That means two things:
What I've found is that most "missing token" problems are just network or contract-metadata issues. Fix the network or add the token manually and the balance usually appears within seconds.
Why add a custom token? Because not every new token is in MetaMask's detection lists. Want to add one yourself? Follow the steps below.
Tip: take a screenshot of the token details (contract, symbol, decimals) before you confirm any transfers. That saved me when I cross-checked a confused transfer later.
Mobile and extension behave the same conceptually. The UI differs.
Where do you get the contract address? From a blockchain explorer for the chain that hosts the token (for example, Etherscan for Ethereum). Look for a verified contract, check total supply and the project's official site or verified social links. But do not copy an address from a random Twitter post. But remember, copying contract addresses from social posts is risky.
MetaMask uses that contract address to call balanceOf and show your holding.
BEP20 tokens live on Binance Smart Chain (BSC) but they follow the same ERC-20-like standard because BSC is EVM-compatible. To add a BEP20 token:
If you try to add a BEP20 contract while on Ethereum mainnet, MetaMask won't show a balance — the contract exists only on BSC.
Common causes and fixes:
If balances still don't appear, check the transaction on a block explorer and confirm the token transfer succeeded. See not-showing-balance for step-by-step debugging.
Here is a quick feature table across MetaMask platforms to set expectations.
| Feature | Desktop extension | Mobile app | Hardware-connected (via extension) |
|---|---|---|---|
| Add custom token (by contract) | Yes | Yes | Yes (via extension) |
| Auto token detection | Yes (token lists + detection) | Yes (mobile detection) | Same as extension |
| Portfolio / simple chart | Basic | Basic | Basic |
| Hide token from list | Yes | Yes | Yes |
| Revoke token approvals (native) | No (use external tools) | No (use external tools) | No (use external tools) |
| Add tokens on other chains (BEP20, Polygon) | Yes (after adding network) | Yes | Yes |
Note: For revoking approvals, see the revoke-approvals guide.
Token allowance (token approval) is how dApps can move tokens on your behalf. Many dApps request an "infinite" approval to save users repeated transactions. That is convenient. It is also a risk. I believe you should limit approvals to what's needed, and check allowances regularly.
MetaMask shows connected sites and allows disconnects, but it does not provide a full revoke-allowance UI. Use the guide at revoke-approvals to scan and revoke large allowances. Also consider using a smart-contract wallet or session keys for higher-value operations.
Phishing dApps will ask for approvals they don't need. Ask: does this dApp need to move my tokens? If not, refuse. For more on scams, see phishing-scams-and-email-frauds.
Need to confirm token details manually? Use a block explorer to "Read Contract" for balanceOf and "Write Contract" only if you know what you're doing. When adding a token, decimals matter: a raw on-chain balance like 123450000000000000000000 maps to 123,450 tokens if the decimals are 18. Long math. But necessary.
If you're a developer or advanced user, you can also interact with the contract ABI from the explorer or use the extension's "Contact"/Add Token flow to test transfers at low value first. Why test? Because if the token has transfer hooks or tax logic, your first transfer may not equal the number you expect.
Q: Is it safe to keep crypto in a hot wallet? A: Hot wallets like MetaMask are convenient and fine for daily DeFi activity. They are not as secure as hardware wallets for large holdings. Use small balances on hot wallets and move cold storage for long-term holdings. See hardware-best-practices and backup-and-recovery-options.
Q: How do I revoke token approvals? A: Use a dedicated allowance revocation tool or follow the steps at revoke-approvals. Disconnecting a site in MetaMask does not automatically remove allowances on token contracts.
Q: What happens if I lose my phone? A: If you have your seed phrase and private keys backed up (safely), you can restore your wallet on another device. Without your seed phrase, funds are unrecoverable. See backup-and-recovery-options.
Q: Why is my token balance zero after adding it? A: Usually because you added the token on the wrong network or used the wrong contract address. Double-check the contract address and the active network (e.g., BSC vs Ethereum).
Token management in this software wallet is straightforward once you understand networks, contract addresses, and decimals. Add tokens by contract address when they don't appear automatically, always verify the contract on a block explorer, and regularly review token approvals. But keep a healthy skepticism: confirm every contract before approving it.
If you want practical how-tos next, check: how-to-import-token, add-bsc, add-polygon, and revoke-approvals. For DeFi usage and swap tips see built-in-swap and connect-to-dapps.
Stay cautious. Test with small amounts first.