Skip to content

How to Verify a Token Contract Address

💡
Before you start

You need a crypto wallet you already use — MetaMask, Trust Wallet or similar — and the token you want to check must already be visible in it. Nothing is installed and nothing is spent: every step here is reading public information, and no step ever asks for your seed phrase, your private key, or a signature. If a page ever asks for those while you are following this, you are on the wrong page — close it.

What you will be able to do: prove for yourself, in about two minutes, whether a token sitting in your wallet is the genuine one or a counterfeit — without trusting anybody's word, including ours.

Before you start: nothing to buy, install or sign

Every step below only reads. No transaction, no signature, no spend, no risk to your funds. You need a device with a browser, the wallet that holds the token, and about two minutes. The examples use the MetaMask browser extension; other wallets keep the same information in a similar place.

Why the Name on a Token Proves Nothing

Anyone can create a cryptocurrency token. Deploying one is a permissionless action that costs a few dollars in network fees, takes about ten minutes, and requires no approval from anybody. The technical standard that defines these tokens, ERC-20, treats the name and symbol as optional information — it states that other software "MUST NOT expect these values to be present" — and it contains no mechanism anywhere for enforcing that a name or symbol is unique.

The practical consequence surprises most people: a stranger can create a token called Tether USD with the ticker USDT, mint themselves a billion of it, and send it to your wallet. Your wallet will very likely display it as USDT, sometimes with the correct logo. The token is entirely genuine as a token. It is entirely worthless as money.

A token's real identity is the blockchain it lives on plus its contract address — the long string beginning 0x. Everything else on your screen is decoration that somebody chose. Telling a real token from a counterfeit is a two-minute check, and the rest of this page is that check, performed on a real example.

The Words You Need

Token A coin that lives inside another blockchain rather than having its own. USDT on Ethereum is a token.
Contract address The token's real, permanent identity: 0x followed by 40 characters, 42 in total.
Network / chain Ethereum, Tron, Solana and so on. The same asset has a different contract address on each one, so an address that is correct on one network is wrong on another.
Block explorer A website that shows you what is on a blockchain. etherscan.io is the common one for Ethereum.
Ticker / symbol The short label, such as USDT. Anyone can put any ticker on any token they create — which is the entire reason this check exists.

Verify Any Token in Five Steps

1
Get the contract address of the token in your wallet

Go: open the MetaMask extension and select the Tokens tab.

Do: click the token you want to check (for example USDT), click the vertical three-dots menu, then click View asset in explorer.

You should see: a new browser tab opens on a block explorer, showing a long string that starts with 0x. That is your token's contract address.

If not: on MetaMask Mobile this menu item does not exist. MetaMask's own guidance is to open the in-app browser (hamburger icon, top left) and look the token up on a listing site instead. Do not hunt for a button that is not there.

2
Get the official address from the issuer, typed by hand

Go: type https://tether.to/en/supported-protocols/ into your browser's address bar yourself. Never open a link that somebody sent you.

Do: find the Ethereum Network section and copy the value shown after USD₮ contract address.

You should see: 0xdac17f958d2ee523a2206206994597c13d831ec7 — 42 characters including the 0x, and all lowercase.

If not: if the page has no list of contract addresses, you are on the wrong page or the wrong site. Tether's Transparency page does not carry them; the addresses are on Supported Protocols. Check the domain letter by letter before trusting anything on it.

⚠️
Never compare the shortened address

Your wallet shows something like 0xdAC1...1ec7. We tested it: two completely different addresses — differing in 26 of their 42 characters — produce the identical short form. Comparing abbreviations is not a weaker check. It is no check at all.

3
Compare the whole string without reading 42 characters by eye

Go: switch back to the browser tab that opened in step 1 — the one whose address bar starts with https://etherscan.io/.

Do: press Ctrl+F (⌘+F on a Mac), paste the official address you copied in step 2, and press Enter.

You should see: the browser highlights a match on the page. Same address means the token in your wallet is the genuine one.

If not: first re-copy the address, making sure you captured all 42 characters. If there is still no match, open a new tab, type https://etherscan.io/token/ and paste the official address after it. If that page is a different page from the one your wallet opened, the token in your wallet is counterfeit.

💡
Different capitalisation is normal — it does not mean tampering

Tether publishes its address in lowercase; wallets and explorers usually display it mixed-case. That mixed case is a built-in checksum defined by the standard ERC-55, and the standard is explicitly backwards compatible with the lowercase form — they are the same address. What must match are the letters and digits, not their capitalisation. Advice telling you that different capitalisation indicates a typo or a tamper is wrong, and following it will make you reject the real token.

4
Read the token page properly, and do not over-trust it

Go: stay on the same https://etherscan.io/token/... page and look at the panel beside the token's name.

Do: read the token's name, its ticker, and any reputation label. Etherscan uses six: UNKNOWN, NEUTRAL, OK, SUSPICIOUS, UNSAFE and SPAM.

You should see: a page whose contract address matches what you confirmed in step 3.

If not: if the label reads SUSPICIOUS, UNSAFE or SPAM, stop and treat the token as counterfeit regardless of the name it displays.

⚠️
A green "Verified" tick is not a safety certificate

In Etherscan's own words, verification confirms only that "the published source code corresponds to what is running on the blockchain", and "Etherscan helps you inspect and explore onchain data, but it does not audit or guarantee the safety of contracts". Counterfeit tokens are frequently verified. Etherscan also states plainly that it does not endorse any token project, and that its reputation labels are subjective and community-reported. Treat SUSPICIOUS, UNSAFE and SPAM as decisive; treat a clean label as nothing decided.

5
Decide, and act safely

Go: back to the MetaMask extension, on the Tokens tab where you started.

Do: if step 3 matched, keep the token. If it did not match, do not tap Swap, do not tap Approve, and do not open any link that arrived with the token.

You should see: a wallet you can now trust, because you checked it yourself instead of believing a label.

If not: if you have already interacted with a counterfeit, stop using that wallet for anything valuable and move the remaining funds to a wallet whose recovery phrase has never been typed anywhere.

A Worked Example, Start to Finish

Checking a USDT balance that appeared in a MetaMask wallet on Ethereum. The wallet displayed the token as USDT, abbreviated to 0xdAC1...1ec7. Tether's own site gave 0xdac17f958d2ee523a2206206994597c13d831ec7. Pasting that into the browser's Find on the explorer page produced a match, so the token was genuine.

Here is the comparison performed in full, showing exactly what the eye cannot do reliably. The lookalike address below was constructed for this demonstration:

Output
length of official address (with 0x): 42
naive comparison (case-sensitive) : False      <- lowercase vs mixed case
correct comparison (lowercased)   : True       <- SAME ADDRESS

what a wallet shows for the real one : 0xdAC1...1ec7
what a wallet shows for the lookalike: 0xdAC1...1ec7
abbreviations identical?              : True   <- the trap
full addresses identical?             : False

characters that differ: 26 of 42 - positions 8 to 35

Two traps appear in that single run. The case-sensitive comparison reports False for a token that is real. The abbreviated forms are identical for a token that is fake. Both are avoided by comparing the entire string, ignoring capitalisation — which is precisely what step 3 does for you.

Your Turn

Your wallet shows a token called USDT and displays its address as 0xdAC1...1ec7. Tether's page gives 0xdac17f958d2ee523a2206206994597c13d831ec7. The full address in your wallet turns out to be:

0xdAC17F0000000000000000000000000000831ec7

Is the token in your wallet genuine, and how much of the address did you have to read in order to know?

Answer: counterfeit

The short forms are identical — both 0xdAC1...1ec7 — but the full strings differ in 26 of their 42 characters. You had to compare the whole string, which is why step 3 uses the browser's Find instead of your eyes. Note also what is not the deciding factor: the real address written in lowercase versus mixed-case is still the same address.

When It Goes Wrong

  • Find highlights nothing. The addresses differ, so the token is counterfeit. Do not interact with it, and do not approve or swap it.
  • The capitalisation differs but the letters match. Normal — it is checksum encoding. Continue; it is the same address.
  • There is no three-dots menu. You are on MetaMask Mobile, which has no such path. Use the in-app browser and a token listing site.
  • Tether's page shows no addresses. You are on Transparency rather than Supported Protocols. Go to https://tether.to/en/supported-protocols/.
  • The label says SUSPICIOUS, UNSAFE or SPAM. There are community reports of fraud. Treat the token as counterfeit whatever its name says.
  • The address matches, but on a different network. The same asset has a different address on every chain. Check which network your wallet is on.

Do It Without This Page

Once you have done it once, the whole check is three moves:

  • Wallet, then token, then three dots, then View asset in explorer. That is your address.
  • Type the issuer's own site by hand and copy the official address.
  • Ctrl+F on the explorer page, paste, Enter. A match means real; nothing means fake.

Capitalisation may differ — it is still the same address. Never compare the shortened 0x1234...abcd form. And remember that the dollar value beside a balance is produced by software after the blockchain's part is finished, which is why a worthless token can display a large and convincing amount. The amount on screen is never the thing to verify; the contract address is.