Solana Get Token Metadata: How to Retrieve SPL Token Metadata

Learn how to fetch token metadata on Solana, including token name, symbol, and URI, using Solana Web3.js and the Metaplex Token Metadata program. Understand the importance of metadata and how it enhances token usability.

Introduction

In the Solana ecosystem, SPL tokens follow a standard structure, but additional metadata such as token name, symbol, and image URI is stored using the Metaplex Token Metadata program. Retrieving this metadata is essential for wallets, exchanges, and dApps that display token details. This guide explains how to fetch token metadata using Solana Web3.js and CLI tools.

1. Understanding Token Metadata on Solana

SPL tokens contain metadata stored in an on-chain PDA (Program Derived Address), managed by the Metaplex Token Metadata Program. Metadata fields include:

  • Token Name (e.g., "Solana USDC")
  • Symbol (e.g., "USDC")
  • URI (points to JSON metadata with token details)

2. Retrieve Token Metadata Using Solana CLI

You can fetch token metadata using the Solana CLI with the following command:

solana account <TOKEN_METADATA_ACCOUNT>

To locate the metadata account for an SPL token, use the Metaplex Token Metadata Program's derived address:

solana address -k <TOKEN_METADATA_ACCOUNT>

3. Retrieve Token Metadata Using Solana Web3.js

For developers, the Solana Web3.js and Metaplex libraries provide an efficient way to fetch metadata.

Step 1: Install Required Packages

npm install @solana/web3.js @metaplex-foundation/mpl-token-metadata

Step 2: Fetch Token Metadata

const { Connection, PublicKey } = require("@solana/web3.js");
const { Metadata } = require("@metaplex-foundation/mpl-token-metadata");

const connection = new Connection("https://api.mainnet-beta.solana.com");
const mintAddress = new PublicKey("TOKEN_MINT_ADDRESS");

async function getTokenMetadata() {
    const metadataPDA = await Metadata.getPDA(mintAddress);
    const metadataAccount = await Metadata.load(connection, metadataPDA);
    console.log("Token Name:", metadataAccount.data.name);
    console.log("Symbol:", metadataAccount.data.symbol);
    console.log("URI:", metadataAccount.data.uri);
}

getTokenMetadata();

Example Output:

Token Name: Solana USDC
Symbol: USDC
URI: https://arweave.net/metadata.json

4. Why Token Metadata Matters

Token metadata is crucial for:

  • Wallets & dApps: Displaying token names, symbols, and images properly.
  • NFT & DeFi Applications: Fetching asset details for trading and verification.
  • User Experience: Preventing scams by verifying token authenticity.

Conclusion

Retrieving token metadata on Solana enhances usability and security by ensuring token details are properly displayed in wallets and dApps. Whether using CLI or Web3.js, fetching metadata is a straightforward process that improves the overall Solana experience.

For more Solana development tutorials, stay tuned for the latest updates!