Phantom Developer Docs
HomeDeveloper Forums
  • 👻Introduction
    • Introduction
  • 🛌Embedded
    • Getting Started with Phantom Embedded Wallets
    • Embedded Web SDK
  • 🟩Solana
    • Getting Started With Solana
    • Detecting the Provider
    • Establishing a Connection
    • Sending a Legacy Transaction
    • Sending a Versioned Transaction
    • Signing a Message
    • Error Messages and Codes
  • 🔷Ethereum, Monad Testnet, Base, & Polygon
    • Getting Started with Ethereum, Monad Testnet, Base, and Polygon
    • 🟣Monad Testnet
    • Detecting the Provider
    • Establishing a Connection
    • Sending a Transaction
    • Signing a Message
    • Provider API Reference
      • Properties
        • isPhantom
        • chainId
        • networkVersion
        • selectedAddress
        • _events
        • _eventsCount
      • Events
        • Connect
        • Accounts Changed
        • Disconnect
        • Chain Changed
      • Methods
        • isConnected
        • request
      • Error Messages & Codes
  • 🌊Sui Beta
    • Getting Started with Sui
    • Detecting the Provider
    • Establishing a Connection
    • Sending a Transaction
    • Signing a Message
  • 🟠Bitcoin
    • Getting Started With Bitcoin
    • Detecting the Provider
    • Establishing a Connection
    • Sending a Transaction
    • Signing a Message
    • Provider API Reference
  • ⛓️Phantom Deeplinks
    • Phantom Deeplinks
    • Provider Methods
      • Connect
      • Disconnect
      • SignAndSendTransaction
      • SignAllTransactions
      • SignTransaction
      • SignMessage
    • Other Methods
      • Browse
      • Fungible
      • Swap
    • Handling Sessions
    • Specifying Redirects
    • Encryption
    • Limitations
  • 🛠️Developer Powertools
    • Auto-Confirm
    • Domain and Transaction Warnings
    • Mobile Web Debugging
    • Phantom Blocklist
    • Shortcuts
    • Sign-In-With (SIW) Standards
    • Solana Actions & Blinks
    • Solana Priority Fees
    • Solana Token Extensions (Token22)
    • Solana Versioned Transactions
    • Testnet Mode
    • Token Pages
    • Wallet Standard
  • ✅Best Practices
    • Launching a Dapp
    • Displaying Apps within the Activity Tab
    • Displaying Apps within Dialogs
    • Displaying Tokens on Solana
      • Fungibles
      • NFTs & Semi-Fungibles
      • Supported Media Types
  • 🙋Resources
    • FAQ
    • Demo Applications
    • Community Guides & SDKs
    • Logos & Assets
Powered by GitBook
On this page
  • Searching for Metadata
  • Categorizing Tokens
  • Displaying Tokens

Was this helpful?

  1. Best Practices

Displaying Tokens on Solana

If you've created a token on Solana using the SPL Token Program, then your token is compatible with Phantom. If Phantom users own a certain balance of an SPL token, that balance will always appear in

PreviousDisplaying Apps within DialogsNextFungibles

Last updated 1 year ago

Was this helpful?

If you've created a token on Solana using the or , then your token is compatible with Phantom. If Phantom users own a certain balance of a token made with these programs, that balance will always appear in their wallet. However, if Phantom cannot find more metadata about that token, it will display the token as "Unknown".

Searching for Metadata

When searching for metadata, Phantom will first look to the established by . This program enhances ordinary SPL token with a Metadata Account that describes additional fields such as the token's symbol, image, and description. Some of these fields exist on-chain in the Metadata Account itself, while others exist off-chain in a JSON file that follows a . The link to this off-chain JSON file is found at the Metadata Account's uri field.

If a Metadata Account is found, Phantom will prioritize on-chain fields (e.g. name, symbol) before off-chain fields described in the uri JSON file.

Categorizing Tokens

Phantom will categorize and display tokens based on their . The tokenStandard field can be found in the token's on-chain Metadata Account and is used to describe a token's fungibility. The tokenStandard field has four options:

  • Fungible: A token with simple metadata that can be freely mixed with others of the same mint. Common examples include and .

  • FungibleAsset: A token with metadata that can also have NFT-like attributes. Commonly referred to as Semi-Fungible, these tokens are often used in gaming contexts to support stackable items like a piece of wood.

  • NonFungible: A non-fungible token with a account. This is the most popular type of NFT, encompassing well known collections like and .

  • NonFungibleEdition: A non-fungible token with an account (printed from a Master Edition). This is a helpful feature for creators who want to offer multiple copies of their 1/1 NFTs.

  • ProgrammableNonFungible: A new non-fungible asset class which allows for flexible configuration of various lifecycle rules triggered by specific actions. More info about Programmable NFTs or pNFTs can be found .

If no tokenStandard is set, Phantom will fallback to categorizing tokens based on the following logic:

  1. If the total mint supply is 1, Phantom will consider the token to be NonFungible.

  2. If the total mint supply is greater than 1 and the mint has 0 decimals, Phantom will consider the token to be a FungibleAsset.

  3. Phantom will consider all other tokens to be Fungible.

Displaying Tokens

Phantom will display all Fungible tokens in the Home tab. For more information on Fungible token best practices, please see:

All other token standards (FungibleAsset, NonFungible, and NonFungibleEdition) will be displayed in the Collectibles tab. For more information on collectible best practices, please refer to:

✅
SPL Token Program
Token-2022 Program (i.e. "Token Extensions")
Token Metadata Program
Metaplex
mints
standard format
Token Standard
USDC
SRM
Master Edition
Solana Monkey Business
DeGods
Edition
here
Fungibles
NFTs & Semi-Fungibles