Key takeaways
- A Solana token's name and symbol are stored on-chain in its metadata, while the logo comes from the image field of an off-chain JSON file that the metadata URI points to.
- A Solana token created with the plain spl-token CLI has no Metaplex metadata account, so Phantom and other wallets show it as an unknown token without a logo.
- If a Solana token's name shows but its logo does not, the usual cause is a metadata URI that returns invalid JSON or an image link that is dead, slow or not publicly reachable.
- Wallets, explorers and Jupiter cache token metadata, so a corrected Solana token logo can take from minutes to about a day to appear everywhere.
- Jupiter's verified checkmark is a separate review: standard review is free with no set timeline, and express review cost 1,000 JUP, burned, at the time of writing.
The short answer#
A Solana token's logo is not stored on-chain. The token's metadata stores the name, symbol and a URI, the URI points to a JSON file, and that file's image field points to the picture. If the metadata account is missing, the wallet shows "Unknown token". If the JSON or image link is broken, you get the name with no logo. If everything is correct but the old image still shows, it is caching, which clears within minutes to about a day.
I get asked about this more than anything else on the launch side of SOLTidy, and in my experience it is almost always one of five causes. Here is how to find yours.
Where do Phantom and Jupiter get a token's name and logo?#
Wallets read the token's metadata account first, then fetch the JSON at its URI, then the image. For a classic SPL token, the metadata lives in a separate account owned by the Metaplex Token Metadata program, at an address derived from the mint, so every app can find it without a registry. Phantom's developer docs say it looks to the Metaplex Token Metadata program first and prioritizes the on-chain name and symbol over the values in the JSON.
The on-chain part holds:
- Name, up to 32 bytes
- Symbol, up to 10 bytes
- URI, up to 200 bytes, pointing to the off-chain JSON
Everything else, including the logo and description, lives in the JSON. For Token-2022 mints there is a second option: the metadata extension, which stores the same name, symbol and URI inside the mint account itself, and the metadata pointer extension, which says where the canonical metadata is. Phantom documents support for both and expects the JSON to follow the Metaplex format either way. The difference between the two token programs is covered in Token-2022 explained for traders.
Aggregators and screeners add their own layer. Jupiter, DexScreener, Birdeye and CoinGecko keep their own token records, which start from on-chain data but can be curated, verified or overridden. That is why a token can look right in Phantom and wrong on a chart.
What are the common reasons a token logo does not show?#
Five causes cover nearly every case I have seen. Work through them in order, because each one depends on the one before.
| Symptom | Likely cause | Fix |
|---|---|---|
| "Unknown token", no name or logo | No metadata account (plain CLI mint) | Create metadata with the mint authority |
| Name shows, logo blank | URI returns an error, HTML or invalid JSON | Host a valid JSON file and update the URI |
| Name shows, logo blank | image link is dead, private or slow | Re-host the image permanently and update the JSON |
| Old logo still shows | Caching in wallets, explorers or aggregators | Wait, refresh, check the URI really changed |
| Correct in Phantom, wrong or unverified on Jupiter | Aggregator's own records or verification | Submit through the aggregator's own process |
1. The token has no metadata at all#
A mint made with spl-token create-token has no Metaplex account, so wallets have nothing to show. Phantom's docs say it falls back to categorizing the token by supply and decimals when no metadata exists, which in practice means "Unknown token". Creating the metadata requires the mint authority's signature. If you already revoked the mint authority, Metaplex metadata can never be added; this is why the rule is metadata first, revoke second.
2. The URI does not return valid JSON#
Open the URI in a private browser window. You should see raw JSON, not a web page, a login screen, a file-sharing preview or a 404. Common mistakes are a URI that points straight to the image instead of the JSON, a trailing comma or smart quotes that break the JSON, and a link from Google Drive or Dropbox that returns an HTML preview page rather than the file.
3. The image link inside the JSON is broken#
If the JSON loads, copy its image value into the private window. It must load directly as an image. A CID that nobody pins any more, a private IPFS gateway, an expired upload service or a personal server that is down all produce a blank icon. Very large images can also time out; keeping the logo square and under 1 MB is a safe habit.
4. Everything is fixed but the old version still shows#
Wallets, explorers and aggregators cache metadata and images on their own schedules. The on-chain change is instant; the display can lag from a few minutes up to about a day. In Phantom, try a manual refresh (pull down on mobile). If nothing changes after a day, re-check that the on-chain URI is the new one: a common mistake is updating the JSON file at a new address but never updating the URI.
5. The aggregator has its own view#
Jupiter, DexScreener and others do not just mirror your metadata. That case gets its own section below.
What should the metadata JSON look like?#
The JSON needs at least name, symbol, description and image, following the Metaplex fungible token standard:
{
"name": "Example Token",
"symbol": "EXT",
"description": "A short, honest description of the token.",
"image": "https://example.com/ext-logo.png"
}
Rules worth checking:
nameandsymbolmatch the on-chain values. Wallets prefer the on-chain ones, so a mismatch is just confusing.imageis a full, public URL, https or ipfs, to a PNG, JPG, WebP or GIF.- The file is publicly readable with no login, cookie or region block.
- The URI fits in 200 bytes, the on-chain limit.
You can also add external_url and social links. They do not affect whether the logo shows.
Where should you host a token logo?#
Use content-addressed, permanent storage: IPFS with reliable pinning, or Arweave. A logo is only as durable as its host, and wallets will keep requesting it for as long as the token exists.
- IPFS, pinned by a service you trust: the link is tied to the file's content, so it cannot be swapped. The risk is that the pin lapses.
- Arweave: pay once for long-term storage; the content is fixed.
- Your own web server: fine while you run it, but the image disappears if the domain lapses, and holders cannot be sure the file will not change.
- File-sharing links (Drive, Dropbox): avoid them. They often serve a preview page, not the file.
The SOLTidy Token Creator pins the image and the generated JSON to IPFS when uploads are available, or accepts a URI you host yourself, so the format is right from the start.
Why does Jupiter show my token without a logo or a checkmark?#
Jupiter maintains its own token records, and its green checkmark comes from a separate review called VRFD, not from your metadata. At the time of writing, in October 2026, Jupiter's docs describe two paths: a standard review, free with no guaranteed timeline, and an express review that costs 1,000 JUP, burned, with a first review within 24 to 48 hours and up to three reviews in total. Jupiter weighs market cap, organic trading activity, holder distribution, ticker uniqueness, liquidity and, most heavily, social support. Verification can also be removed later.
Jupiter's older strict list has been folded into a "verified" tag on its current token API. Its express verification flow can also submit metadata updates such as name, symbol and icon, which is the route to take if Jupiter shows outdated details after you fixed the on-chain metadata.
DexScreener is different again: it shows a project logo and links through its own paid token-info product. I cover all of the aggregators in how to get your token on Jupiter, DexScreener and Birdeye.
Could Phantom be hiding the token as spam?#
Possibly, and that is a separate problem from a missing logo. Phantom does not publish its spam criteria, so that bad actors cannot game them, and it uses internal signals and Blockaid. Its docs suggest making sure the token is recognized by established registries such as Jupiter and CoinGecko. If your token lands in the hidden list, the user can unhide it, but there is no form a creator can fill in to guarantee visibility.
How do you fix the metadata with the Update Metadata tool?#
The Update Metadata tool reads any mint's metadata for free, without a wallet, and lets the update authority change the name, symbol or URI for a flat 0.02 SOL per transaction.
- Paste the mint. The panel shows the on-chain name, symbol and URI, whether the metadata is mutable, who the update authority is, and a preview of the logo from the JSON.
- Connect the update authority. Usually the wallet that created the token.
- Upload a new logo or paste a new URI. With uploads enabled, the tool pins the image and JSON to IPFS and fills in the link.
- Sign one transaction and the panel reloads the account so you can confirm the new values.
If the token has no metadata at all and your wallet is still the mint authority, the same page creates it for the 0.02 SOL fee plus about 0.0137 SOL that goes to the network and Metaplex, the same metadata cost broken down in how much it costs to create a Solana token.
Two honest limits. The tool does not edit the Token-2022 metadata extension yet; for those mints, the spl-token CLI's metadata commands or the tool that created the token are the route. And it cannot help if the metadata is immutable, which is final by design. Once the logo renders correctly everywhere you care about, locking it with Make Immutable is a good signal to buyers, and the free Rug Check shows whether a token's metadata is still mutable.
Bottom line#
A missing Solana token logo is almost never a wallet bug. Check the chain in order: does the metadata account exist, does the URI return valid JSON, does the image link load in a private window? Fix whichever link is broken, host on IPFS or Arweave, and allow up to a day for caches. Jupiter's checkmark and DexScreener's logo are separate processes on top of that, and no on-chain change will substitute for them.
Questions & answers
Tools from this guide
- Update MetadataChange a token's name, symbol or logo URI, lock it as immutable, or add missing metadata.
- Token CreatorCreate an SPL token with name, logo and fixed supply in one transaction — no code.
- Make ImmutableLock a token's Metaplex metadata so its name, symbol and logo URI can never be changed again.
- Rug CheckCheck any Solana token for mint and freeze authority, Token-2022 traps, mutable metadata and top holders.
- Tax Token CreatorCreate a Token-2022 mint that withholds a fee on every transfer, with metadata and supply in one transaction.