Your token logo isn’t showing up — and that’s 100% normal. It has absolutely nothing to do with a bug in your smart contract. The core reason is dead simple: Token standards like ERC-20 were never designed to store an image file. Every wallet, block explorer, and DEX pulls logos from a completely separate, off-chain source. To get your logo to appear, you have to proactively “register” it with each platform, one by one, kind of like filing a trademark.
Introduction

“My contract is deployed. The name, symbol, and decimals are all spot-on. People are even trading it! So why on earth does my token show up as a boring gray question mark or a blank circle when I paste the contract address into MetaMask, pull it up on Etherscan, or try to swap it on Uniswap?”
Sound familiar? You just hit the same wall that 99% of first-time token launchers crash into. Seeing that naked, faceless icon makes your project feel sketchy — like a shitcoin or a rug pull — even if your intentions are totally legit. It absolutely kills your credibility with potential community members before you even get started.
Take a deep breath. You’re about to learn that this isn’t a technical failure on your part. It’s a fundamental design choice in the decentralized world. This article will go from the ground-level “why” all the way through the manual fix, including platform-by-platform differences and time-saving tricks, so you can finally give your token the face it deserves.
Deep Dive: Why Your Logo Vanished
1. The Root Cause: Smart Contracts Have No “Image” Slot
Think of it like opening a bank account. The bank’s core system stores your account number, your name, and the currency type — but it definitely doesn’t store your profile picture. The same logic applies to Ethereum, BSC, and other EVM chains. From day one, the standard ERC-20 token contract only requires three core public variables:
name: The full name, e.g., “My Awesome Token”symbol: The ticker, e.g., “MAT”decimals: Usually 18
Your logo — whether it’s a 200KB PNG or a 2MB GIF — simply does not exist anywhere in this on-chain data set. Storing images on a blockchain is insanely expensive in terms of gas fees, so the base protocol intentionally left out this “non-essential” feature. This means no tool will ever magically “pull” a picture directly out of your contract address.
(A small exception) On Solana, the Token Metadata Program can store a URI link that points to an image. But even when that link is valid, wallets like Phantom still need to actively fetch, cache, and display the image. Delays and “disappearing logos” can still absolutely happen.
2. So Where Do Wallets Get the Logos From?
If the contract doesn’t have the picture, where is everyone pulling it from? The answer: every major platform maintains its own separate, offline “phonebook.” You, the project creator, have to deliver your token’s “business card” (with the logo) to each of these phonebooks manually. Here’s how the biggest players work:
MetaMask
MetaMask relies on two primary sources: first, an official GitHub repository called MetaMask/logo, which holds icon files for a few thousand tokens; and second, it queries the CoinGecko API. If your token isn’t in that GitHub repo and hasn’t been listed on CoinGecko, MetaMask will simply never show a logo.
Trust Wallet (commonly used on BNB Smart Chain)
Trust Wallet is extremely popular on BSC. Its logo source is very explicit: the trustwallet/assets GitHub repository. To get a logo on Trust Wallet, you must submit a Pull Request (PR) to that repo, following their strict format. This includes a logo.png file and a small info.json file. Once the Trust Wallet team reviews and merges your PR, users worldwide will eventually see the icon after their app refreshes.
Etherscan / BscScan (Block Explorers)
Most block explorers offer an “Update Token Info” section directly on your token’s contract page. This is where you can upload a logo, official website, and social links. But there’s a non-negotiable prerequisite: your contract’s source code must be verified (Verify & Publish). An unverified contract gives the explorer no way to prove you are the owner, so it blocks you from updating the info.
Uniswap / PancakeSwap (DEXs)
DEXs rely entirely on “Token Lists.” Uniswap’s default list comes from tokenlists.org, while PancakeSwap manages an extended list on its own GitHub. If you haven’t added your token to these lists through a PR, your coin will appear in the DEX interface with a generic question mark icon, often accompanied by the warning “This token isn’t on the active token list.”
3. Which Trap Did You Fall Into? (The Big Three)
New token logos vanish for one of three reasons. Check which one sounds like you:
You submitted absolutely nothing, anywhere. This is the most common. People think “launch and show” is automatic. It’s not.
You tried to update the block explorer, but your contract wasn’t verified. The page probably threw an error like “not authorized,” and you assumed it went through. It didn’t.
You submitted a Pull Request but got instantly rejected. This happens when you try to add your token to the Trust Wallet repo before getting listed on CoinMarketCap/CoinGecko, or because your logo was the wrong size (not 256x256) or named incorrectly (e.g., “MyToken.png” instead of the required “logo.png”).
4. The Hands-On Fix: Follow This Exact Order
To get your logo to appear in the shortest time across the widest user base, follow these steps in order based on platform influence and review difficulty.
Step 1: Verify Your Contract (Mandatory)
Go to your token’s contract page on Etherscan or BscScan. Click “Contract” → “Verify and Publish.” Select the exact same compiler version and open-source license you used, and paste in your source code. Until this is done, all other steps are dead in the water.
Step 2: Update Token Info on the Block Explorer
Once verified, the “Update Token Info” button will be unlocked. Upload a transparent PNG logo, ideally 200x200 pixels. Fill in your official website and social links too. This gives immediate logo visibility to anyone checking the explorer, and it serves as a reference for other platforms when they review your later submissions.
Step 3: Apply for CoinMarketCap and CoinGecko (The Game-Changer)
This step takes the most effort but gives the biggest payoff. Once your token is listed on these major data aggregators, MetaMask, Trust Wallet, and countless portfolio trackers will automatically pull your logo from them. New tokens need to meet basic trading volume and information completeness requirements, which can be tough, but this should be your primary goal.
Step 4: Submit Pull Requests to Wallet Icon Repos
This directly fixes the “blank icon” problem in the wallets themselves.
Trust Wallet: Fork the trustwallet/assets repo, create a folder named exactly after your contract address (with a checksum), put your logo.png (256x256) and an info.json inside, and submit a PR. Be patient with the review process.
MetaMask: The process is similar with the MetaMask/logo repo, or you can simply wait until CoinGecko lists you, which often updates MetaMask automatically.
Step 5: Add Your Token to DEX Lists
To get a native logo on Uniswap or PancakeSwap’s swap interface, you’ll need to submit a JSON entry to the appropriate token list repo (like Uniswap/default-token-list or pancakeswap/token-list). This makes the trading experience feel polished and trustworthy.
A temporary fix: While you wait for approvals, remind your community that they can always import the token manually by pasting the contract address. It will function perfectly for transfers and trades, even if it’s visually “naked” for the moment.
Side-by-Side Comparison: How Platforms Pull Your Logo
| Platform | Logo Source | How You Submit | Review Time | Key Hurdles / Notes |
|---|---|---|---|---|
| MetaMask | ① MetaMask/logo GitHub repo ② CoinGecko API | Submit a PR to the GitHub repo | 1-4 weeks (variable) | Heavily relies on CoinGecko; massive user base |
| Trust Wallet | trustwallet/assets GitHub repo | Submit a PR to the GitHub repo | 1-2 weeks | Strict review; usually requires CMC or CG listing |
| Etherscan/BscScan | Explorer’s own database | “Update Token Info” form on website | 1-3 business days | Contract must be verified; shows up quickly after update |
| Uniswap/PancakeSwap | Official or community Token Lists | Submit a PR to the specific Token List repo | 2-4 weeks | Controls the default display on DEX front-ends |
| Phantom/Solana | Image pointed to by on-chain Metadata URI | Update the Token Metadata Program data | Minutes to hours | Subject to caching; may require manual refresh in wallet |
| CoinGecko | Own internal database | Submit an application form on their website | 1-4 weeks | Getting listed here radiates your logo out to many wallets automatically |
Beginner Q&A: Your Top Questions Answered
Q1: I updated the logo on Etherscan, but MetaMask is still blank. Why?
A: Because they don’t read the same “phonebook.” Etherscan uses its own database. MetaMask uses its own GitHub repo or CoinGecko’s data. You need to satisfy MetaMask’s requirements separately — either submit a PR to their logo repo, or wait until your token is listed on CoinGecko and the update propagates naturally.
Q2: I added a custom function in my contract that returns an image link. Why don’t wallets read it?
A: Standard ERC-20 tokens don’t define such an interface, so the vast majority of wallets and dApps simply ignore your custom function. There’s a proposal called EIP-747 (tokenLogoURI), but it has almost zero adoption. Forget the contract hack; stick to the off-chain registration channels we outlined.
Q3: I don’t want to open-source my contract. Can I email Etherscan and ask them to manually upload my logo?
A: The success rate is close to zero. The “Update Info” privilege on explorers is strictly tied to a verified contract. Without verification, there’s no standard way to prove ownership. Your best bet is to verify at least a minimal, non-revealing interface contract, or reconsider keeping it fully closed-source.
Q4: My token is on Solana. The image link in the metadata is correct, but Phantom wallet still shows the old icon or nothing. Help!
A: This is a caching issue. Inside Phantom, go to “Manage Token List,” find your token, and trigger a refresh. A more reliable method is to re-write the token metadata using the Solana CLI or a tool like Metaboss. This forces most wallets to re-fetch the data from the chain.
Q5: What are the exact requirements to get a logo into Trust Wallet?
A: As per the trustwallet/assets repo guidelines, your project needs a clean website, active social media, and — crucially — it’s highly recommended that you’re already listed on CoinMarketCap or CoinGecko, or have substantial on-chain activity (holders, transactions). A brand-new token with zero trades will almost certainly be rejected. The file itself must be a 256x256 PNG named exactly logo.png.
Q6: Is there one magic trick to fix my logo everywhere at once?
A: Unfortunately, no. There’s no single “central image server” in a decentralized world. The closest thing to a silver bullet is this: focus all your energy on getting listed on CoinGecko. Once that happens, MetaMask, Trust Wallet, and many tracking sites will automatically pull your info. It saves you a huge amount of manual PR work.
Q7: Can people still trade my token if the logo doesn’t appear? Does it hurt the price?
A: Yes, they can absolutely trade it. Decentralized trading is purely based on the contract address. The logo is just a cosmetic front-end element; it has zero impact on your token’s ability to transfer or swap on-chain. That said, a “faceless” token psychologically destroys user trust and buying confidence. It screams “scam” to many newcomers, so fixing it has a massive, real-world impact on your project’s market perception.
Q8: I finished the whole submission checklist a month ago. Why do some places show the logo and others still don’t?
A: This is entirely normal. Every wallet app has its own update cycle. Mobile wallets are notorious for aggressively caching icons and might not pull the new image until the user force-refreshes the token list or the app itself pushes a version update. As long as your PRs are merged and CoinGecko shows your logo, the rest is just a waiting game. Be patient, and let your community know they can manually refresh.
Summary
If your token appears as a “faceless ghost” right after launch, it’s not a bug — it’s just the base-layer reality. Remember this mantra: No image on-chain. Register proactively. Submit everywhere. Wait for approval.
Your core path is: Verify contract → Update block explorer → Fight for a CoinGecko listing → Submit PRs to Trust Wallet/MetaMask → Join DEX token lists. Every single platform is its own kingdom, and you need to knock on each door individually. Prepare a clean, transparent-background PNG in both 200x200 and 256x256 sizes ahead of time, and you’ll breeze through the technical checks.
The rest is patience. The day your community sees that sleek, professional logo shining everywhere they look, you’ll know the grind was completely worth it.
