How to Tell If an Address Is a Wallet or a Smart Contract
You can usually tell by checking whether the address has any deployed code associated with it on the blockchain. A wallet address (externally owned account, or EOA) has no code. A smart contract address has code stored at that location. Most block explorers show this difference clearly on the address page.
Why the distinction matters
Sending tokens to a wallet is straightforward. Sending tokens to a contract may trigger unexpected behavior - the contract could reject the transfer, lock the tokens, or execute additional logic. Knowing which type you're dealing with helps you avoid mistakes like sending ERC-20 tokens to a contract that cannot return them.
The Simplest Check: Look for "Contract" or "Wallet" Label
Open the address on any block explorer (Etherscan, BscScan, Solscan, etc.). The page header or summary section almost always displays one of these labels:
- Wallet or Address - The account has no code. It's an EOA controlled by a private key.
- Contract - The account has deployed code. It's a smart contract.
This label is the quickest answer. If you see neither, proceed to the next method.
Step-by-Step: verify using the explorer's code tab
Most EVM-compatible explorers (Etherscan, BscScan, PolygonScan, etc.) include a dedicated code section.
- Go to the address page.
- Find the tab or section labeled Code, Contract, or Bytecode.
- If you see a block of code (or a message like "Contract Source Code Verified"), the address is a smart contract.
- If you see a message like "This address does not have source code" or the tab is missing entirely, and the page shows no other contract indicators, it is likely a wallet.
Note: Some explorers hide the Code tab if the address is clearly a wallet. In that case, the page often shows only transaction history and balance.
Alternative method: check the transaction history
A wallet address typically shows only outgoing and incoming transactions that it initiated or received. A contract address will often show:
- Internal transactions (calls to other contracts).
- Contract creation transactions (the transaction that deployed it).
- Event logs that the contract emitted.
If you see a transaction with "Contract Creation" as the method, the address is a contract. If every transaction is a simple transfer or approval, it is likely a wallet.
For Non-EVM Chains (Solana, Bitcoin, etc.)
The concept is similar but the explorer interface differs.
- Solana (Solscan, SolanaFM): Open the address page. Look for the Program or Executable label. A wallet address will say "Account" or "System Program." A contract (called a program on Solana) will be marked as "Executable" or "Program." The page often shows a "Deployments" or "Program ID" section for contracts.
- Bitcoin (Blockchain.com, Mempool.space): Bitcoin addresses are always wallets. There are no smart contracts on Bitcoin (ignoring limited script capabilities). Every address is an EOA.
- UTXO-based chains (Litecoin, Dogecoin): Same as Bitcoin - all addresses are wallets.
Edge cases and caveats
- Multi-sig wallets (like Gnosis Safe) are technically smart contracts but function as wallets. The explorer will label them as contracts. If you see "Contract" on a multi-sig, treat it as a wallet for practical purposes.
- Proxy contracts - These act as intermediaries and may appear as contracts with minimal code. The actual logic lives in another contract. The explorer still shows them as contracts.
- Burn addresses - These are wallets (or contracts) that no one controls. They are often labeled "Burn" or "Null Address" by explorers. They have no code unless someone deliberately deployed a contract there (rare).
- Test networks - The same rules apply. An address on Goerli or Sepolia with code is a contract; without code, it's a wallet.
What if you still can't tell?
Some explorers allow you to query the blockchain directly via their API. For EVM chains, call eth_getCode on the address. If the result is 0x (empty), it's a wallet. If it returns any bytecode, it's a contract. Tools like Etherscan's "Get Code" button do this automatically.
Summary
| Check | Wallet (EOA) | Smart Contract |
|---|---|---|
| Explorer label | "Address" or "Wallet" | "Contract" |
| Code tab | Missing or says "No source code" | Shows code or bytecode |
| Transaction types | Simple transfers | Internal calls, events, creation |
| Blockchain data | No code at address | Code exists at address |
When in doubt, look for the presence of code. No code means a private key controls it. Code means the blockchain logic controls it. That distinction is the entire answer.
Not financial advice. sonnyonsol.xyz publishes market data and general information about staring robot. Crypto assets are volatile and you can lose everything you put in. Nothing here is a recommendation to buy, sell or hold, and we make no price predictions.
Prices are sourced from third parties and may be delayed or wrong. Verify anything you intend to act on against a primary source.