Skip to content
NEW Earn 30% affiliate commissions Get your link

How to update Solana token metadata: name, logo and links

To update Solana token metadata, the update authority signs a Metaplex update while isMutable is true. Name and symbol are on-chain; logo and links are in JSON.

10 min read
Cover image for How to update Solana token metadata: name, logo and links

Key takeaways

  • A classic SPL token's name (32 bytes), symbol (10 bytes) and URI (200 bytes) are stored in a Metaplex Token Metadata account derived from the mint; the logo, description and links live in the JSON file at that URI.
  • Only the update authority can change Solana token metadata, and only while isMutable is true; Metaplex lets that flag go from true to false but never back, so immutable metadata is final.
  • A token with no metadata can get a Metaplex account through CreateMetadataAccountV3, but only while its mint authority still exists, at a cost of about 0.0037 SOL rent plus a 0.01 SOL Metaplex fee.
  • Token-2022 mints can store metadata inside the mint itself, edited with the spl-token CLI's update-metadata command, for example spl-token update-metadata <MINT> name NewName.
  • SOLTidy's Update Metadata tool sends one UpdateMetadataAccountV2 instruction for a flat 0.045 SOL, copies creators and collection back unchanged, and can pin a new logo and JSON to IPFS.

The short answer

To update a Solana token's metadata, the token's update authority signs one Metaplex Token Metadata update instruction, which works only while the account's isMutable flag is true. That changes the three on-chain fields: name (up to 32 bytes), symbol (up to 10 bytes) and URI (up to 200 bytes). The logo, description and social links live in the JSON file the URI points to, so you change them by publishing a new JSON file and pointing the URI at it. Token-2022 mints that store metadata in the mint itself are edited with spl-token update-metadata instead.

I built the Update Metadata tool on SOLTidy, and most of what follows comes from what it has to get right. If your problem is a logo that does not appear at all, start with why a token logo is not showing in Phantom or Jupiter instead; this post is about making a deliberate change.

Where does a Solana token's metadata live?

Solana token metadata lives in one of two places, depending on how the token was created.

Metaplex Token Metadata account (classic SPL tokens, and many Token-2022 tokens). The mint account itself stores only supply, decimals and authorities. The name, symbol and URI sit in a separate account owned by the Metaplex Token Metadata program (metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s). Its address is a program-derived address (PDA) computed from the seeds "metadata", the program ID and the mint address, so any wallet can find it without a registry. Phantom's token display docs say it looks there first and prioritizes the on-chain name and symbol over the JSON values.

Token-2022 metadata extension. A Token-2022 mint can carry a metadata pointer extension, which says which account holds the canonical metadata, and a token-metadata extension, which stores name, symbol, URI, an update authority and optional custom key-value fields inside the mint account itself. The Token-2022 extensions guide covers both. Phantom documents that it reads the name and symbol from the mint and the image from the URI, as described in Token-2022 explained for traders.

In both cases the URI points to an off-chain JSON file, which holds the image link (the logo), the description and optional links.

What can you change, and where?

Each piece of a token's identity lives in a specific place, and that decides how you change it and who has to sign:

WhatWhere it livesHow you change itWho signs
NameOn-chain metadata, max 32 bytesMetadata update instructionUpdate authority
SymbolOn-chain metadata, max 10 bytesMetadata update instructionUpdate authority
URIOn-chain metadata, max 200 bytesMetadata update instructionUpdate authority
Logoimage field in the JSONNew JSON, then new URIUpdate authority (for the URI)
Descriptiondescription in the JSONNew JSON, then new URIUpdate authority (for the URI)
Website, X, Telegramextensions in the JSONNew JSON, then new URI; aggregators separatelyUpdate authority, plus each platform's process
Update authorityOn-chain metadataUpdate with a new authorityCurrent update authority
MutabilityOn-chain isMutable flagUpdate, true to false onlyUpdate authority
SupplyMint accountMint or burn tokensMint authority (mint), holders (burn)
DecimalsMint accountCannot be changedNobody
Mint and freeze authorityMint accountSetAuthority, not a metadata updateThat authority

Two things in this table surprise people. First, the logo is not an on-chain field: changing it is really a URI change. Second, the mint authority and the update authority are different keys. Revoking the mint authority, which mint vs freeze authority covers, does not lock the metadata.

Who is allowed to update token metadata?

Only the update authority, the address stored in the metadata account, can update it, and only while isMutable is true. Metaplex's update docs put it plainly: the update authority can change the account "as long as the Is Mutable attribute is set to true", and when it is changed to false, "any future updates will fail."

The update authority is usually the wallet that created the token. It can be handed to another address, such as a multisig, in the same update. Immutable metadata is metadata whose isMutable flag is false: the program only accepts a change from true to false, so once locked, the name, symbol and URI are permanent. That is exactly why buyers and rug checkers like to see it, and it is what the Make Immutable tool does, for a flat 0.02 SOL.

One caveat: immutability freezes the URI, not the file behind it. If the URI points to a server you control, the JSON and logo can still change. IPFS and Arweave links are content-addressed, so they cannot.

How do you add metadata to a token that has none?

You create a Metaplex metadata account with the CreateMetadataAccountV3 instruction, which must be signed by the token's mint authority. Tokens made with a plain spl-token create-token have no metadata, which is why wallets show them as unknown.

The cost is fixed by the program and the network. A metadata account created today is 607 bytes, which at the current rent rate of 5,080 lamports per byte (including 128 bytes of overhead) is 3,733,800 lamports, about 0.0037 SOL. Metaplex adds a 0.01 SOL protocol fee on create, listed on its protocol fees page. So creating metadata costs about 0.0137 SOL before any tool fee, the same figure broken down in how much it costs to create a Solana token.

The order matters: if you already revoked the mint authority, nobody can create Metaplex metadata for that mint again. Add metadata first, revoke second, as the launch checklist recommends.

Which instruction updates the metadata?

For Metaplex metadata, two instruction families exist, and both are signed by the update authority:

  • UpdateMetadataAccountV2, the older instruction. It takes a full data block (name, symbol, URI, seller fee, creators, collection, uses), an optional new update authority, and an optional isMutable value. Because it replaces the whole data block, you must copy over the fields you are not changing.
  • Update (updateV1 in Metaplex's Umi JavaScript library), the newer instruction shown in Metaplex's current docs. It can change the data, primary-sale flag, mutability, collection and update authority, and supports programmable NFTs.

For creation, the matching pair is CreateMetadataAccountV3 and the newer Create instruction (createV1 and helpers such as createFungible in Umi). Metaplex's docs now label Token Metadata a legacy program and point new NFT projects to Metaplex Core, but SPL fungible tokens are still described by Token Metadata accounts, and that is what wallets read.

How do you update Token-2022 metadata with the spl-token CLI?

If the mint uses the Token-2022 metadata extension, you edit it with the spl-token CLI, signed by the metadata's update authority. The syntax, from the Token-2022 extensions guide:

# create a Token-2022 mint with room for metadata
spl-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb create-token --enable-metadata

# write the initial name, symbol and URI (signed by the mint authority)
spl-token initialize-metadata <MINT> <NAME> <SYMBOL> <URI>

# change a field: name, symbol, uri, or a custom key
spl-token update-metadata <MINT> name NewName
spl-token update-metadata <MINT> uri https://example.com/new.json

# add or remove a custom field
spl-token update-metadata <MINT> website https://example.com
spl-token update-metadata <MINT> website --remove

Because this metadata lives inside the mint, longer values make the mint account larger and raise its rent-exempt minimum, so the mint needs enough lamports to stay rent-exempt. Metaplex tools do not touch this extension, and neither does SOLTidy's Update Metadata page, which detects it and says so.

What should the metadata JSON look like?

The JSON should contain at least name, symbol, description and image, the four fields of Metaplex's fungible token standard. Social links are commonly added under an extensions object. This is the shape SOLTidy generates when it pins metadata for you:

{
  "name": "My Token",
  "symbol": "MYT",
  "description": "What the token is for.",
  "image": "https://gateway.pinata.cloud/ipfs/<IMAGE_CID>",
  "extensions": {
    "website": "https://example.com",
    "twitter": "https://x.com/mytoken",
    "telegram": "https://t.me/mytoken"
  }
}

Keep name and symbol identical to the on-chain values, since wallets prefer the on-chain ones anyway, and keep the URI to the JSON under 200 bytes. The extensions keys are a convention, not part of the fungible standard, so wallets mostly ignore them; aggregators keep their own copies of your links.

Where should you host the logo and JSON?

Host both on content-addressed, permanent storage: IPFS with a reliable pinning service, or Arweave. A centralized server is fine while you run it, but the logo disappears if the domain lapses, and holders cannot be sure the file will not be swapped later, even after you lock the metadata.

When uploads are enabled, SOLTidy pins through Pinata. The server checks that the image really is a PNG, JPG, WebP or GIF by reading its bytes, rejects anything over 1 MB, pins the image, builds the JSON above (accepting only https:// links for website, X and Telegram), pins that too, and returns a gateway.pinata.cloud/ipfs/ URI for the metadata. The Pinata key stays on the server. You can also paste your own https:// or ipfs:// URI instead.

How do you update token metadata with SOLTidy?

The Update Metadata tool views any mint's metadata for free and lets the update authority change it for a flat 0.02 SOL per transaction:

  1. Paste the mint address into Update Metadata. The panel loads the Metaplex account and shows the name, symbol, URI, whether it is mutable and the update authority, with a logo and description preview from the JSON. No wallet is needed for this.
  2. Connect the update authority. Editing unlocks only when the metadata is mutable and your wallet is the update authority. If the mint has no metadata and your wallet is the mint authority, the page offers to create it instead.
  3. Edit the name, symbol or URI, or upload a new logo with a description and links to have the image and JSON pinned to IPFS. The panel checks the 32, 10 and 200 byte limits before you sign.
  4. Choose the optional, irreversible actions only if you mean them: make the metadata immutable, or transfer the update authority. Both need an extra confirmation.
  5. Sign one transaction. It contains a single UpdateMetadataAccountV2 instruction (or CreateMetadataAccountV3 for a new account) plus the 0.02 SOL fee transfer. After it confirms, the panel reloads the account from the chain so you can check the new values.

One detail I took care over: because UpdateMetadataAccountV2 overwrites the full data block, the tool reads the current seller fee, creators, collection and uses from the chain and writes them back unchanged. Only what you edited changes. When it creates metadata, your wallet becomes the update authority.

The free route is honest too. If you are comfortable with code, the Metaplex Umi library's updateV1 does the same thing for network fees only, and for Token-2022 extension metadata the CLI above is the way. If you are launching a new token, the Token Creator sets the metadata correctly from the start.

How long do Phantom, Jupiter, Solscan and DexScreener take to show the change?

The on-chain update is final as soon as the transaction confirms, but each app refreshes on its own schedule, and some do not refresh from chain at all. As of November 2026:

PlatformReads your on-chain update?What to expect
SolscanYesIts knowledge base says the token page updates automatically from on-chain metadata; no time is stated. Logo or social corrections on Solscan's own profile go through its token update form.
PhantomYesNo documented refresh time; in my experience minutes to about a day. On-chain name and symbol win over the JSON.
JupiterNot after verificationIts VRFD FAQ says Jupiter "does not automatically pull metadata changes from onchain sources after a token has been verified". A metadata update request costs 1,000 JUP, burned, and anyone can submit one.
DexScreenerNot for logo and socialsProject logo, description and links come from its paid Enhanced Token Info product, not from your metadata JSON.

If a change has not appeared after a day, check the chain first: open the token on an explorer and confirm the URI really is the new one. The full troubleshooting order is in why a token logo is not showing, and the aggregator listing processes are in how to get your token on Jupiter, DexScreener and Birdeye.

Bottom line

Updating Solana token metadata is one transaction signed by the update authority, possible only while isMutable is true. Name, symbol and URI change on-chain; the logo, description and links change by publishing a new JSON file, ideally on IPFS or Arweave, and pointing the URI at it. Tokens without metadata can get it only while the mint authority exists, and Token-2022 extension metadata is edited with spl-token update-metadata. For Metaplex metadata, the Update Metadata tool does the edit, an optional IPFS upload, and the creators-preserving copy for 0.02 SOL. Once everything shows correctly, lock it with Make Immutable.

Questions & answers

Who can update a Solana token's metadata?

Only the update authority recorded in the metadata account, and only while its isMutable flag is true. The update authority is usually the wallet that created the token, but it can be transferred. It is separate from the mint and freeze authorities, so revoking those does not stop metadata edits. Explorers such as Solscan show the update authority on the token page.

How do I change the logo of my Solana token?

The logo is the image field inside the JSON file your metadata URI points to. Upload the new image, publish a new JSON file that references it, then have the update authority change the on-chain URI to the new JSON. If the JSON sits on a server you control you can replace the file in place, but content-addressed hosting such as IPFS or Arweave needs a new URI.

How do I add a website, X or Telegram link to my token?

Links are not on-chain fields. Add them to the metadata JSON, commonly under an extensions object with website, twitter and telegram keys, publish the file and point the URI at it. Wallets mostly ignore these links. Jupiter, DexScreener and Solscan keep their own token profiles, so you may also need to submit the links through their own update processes.

Can I add metadata to a token that was created without it?

Yes, if the mint authority still exists. A Metaplex metadata account is created with CreateMetadataAccountV3, which the mint authority must sign. It costs about 0.0037 SOL of rent for the 607-byte account plus a 0.01 SOL Metaplex protocol fee. If the mint authority has already been revoked, Metaplex metadata can never be added to that mint.

How do I update Token-2022 metadata?

If the mint uses the Token-2022 metadata extension, the metadata lives inside the mint account and is edited with the spl-token CLI, for example spl-token update-metadata <MINT> name NewName, signed by the metadata update authority. The same command takes symbol, uri or a custom key. Metaplex tools, including SOLTidy's Update Metadata page, do not edit that extension.

Can immutable token metadata ever be changed?

No. Once isMutable is set to false, Metaplex rejects every further update, and there is no instruction that sets it back to true. The only thing that can still change is the content of the file behind the URI if it is hosted on a server someone controls, which is why permanent storage is preferred before locking.

Tools from this guide

Bookmark SOLTidy

Then open SOLTidy from the bookmark instead of from search results or links in DMs, where look-alike scam sites live.