How to Fetch Token Metadata

Tokens created with the Metaplex Token Metadata Program have a metadata account that stores the token's name, symbol, URI, and other information. The metadata account is a PDA derived from the mint address.

Fetch Metadata for a Single Token

Kit
import { address, createSolanaRpc } from "@solana/kit";
import {
findMetadataPda,
fetchMetadata,
fetchMaybeMetadata,
fetchMetadataFromSeeds
} from "@metaplex-foundation/mpl-token-metadata-kit";
const rpc = createSolanaRpc("https://api.mainnet.solana.com");
// Example: USDC mint address
const mintAddress = address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
// Option 1: Fetch directly from mint (simplest)
const metadata = await fetchMetadataFromSeeds(rpc, { mint: mintAddress });
console.log("Token Name:", metadata.data.name);
console.log("Token Symbol:", metadata.data.symbol);
console.log("Metadata URI:", metadata.data.uri);
console.log("Update Authority:", metadata.data.updateAuthority);
console.log("Is Mutable:", metadata.data.isMutable);
// Check optional fields
if (metadata.data.creators.__option === "Some") {
console.log("Creators:", metadata.data.creators.value);
}
// Option 2: Safe fetch (returns exists: false if not found)
const [metadataPda] = await findMetadataPda({ mint: mintAddress });
const maybeMetadata = await fetchMaybeMetadata(rpc, metadataPda);
if (maybeMetadata.exists) {
console.log("Found metadata:", maybeMetadata.data.name);
} else {
console.log("No metadata found for this mint");
}

Fetch Off-Chain JSON Metadata

The uri field in the on-chain metadata points to a JSON file containing extended metadata like the image URL, description, and attributes.

Kit
import { address, createSolanaRpc } from "@solana/kit";
import { fetchMetadataFromSeeds } from "@metaplex-foundation/mpl-token-metadata-kit";
const rpc = createSolanaRpc("https://api.mainnet.solana.com");
const mintAddress = address("YourMintAddressHere");
// Fetch on-chain metadata
const metadata = await fetchMetadataFromSeeds(rpc, { mint: mintAddress });
// Fetch off-chain JSON metadata
if (metadata.data.uri) {
const response = await fetch(metadata.data.uri);
const jsonMetadata = await response.json();
console.log("Name:", jsonMetadata.name);
console.log("Description:", jsonMetadata.description);
console.log("Image:", jsonMetadata.image);
}

Not all tokens have Metaplex Token Metadata. Tokens using Token Extensions (Token-2022) may store metadata directly on the mint using the metadata extension. See Token Extensions Metadata.

Is this page helpful?

Managed by

© 2026 Solana Foundation.
All rights reserved.
Get connected