Solana CookbookTokens
To add metadata (name, symbol, image) to a standard SPL Token, you need to use the Metaplex Token Metadata Program. This creates a metadata account that is linked to your token mint via a Program Derived Address (PDA).
This guide covers metadata for standard SPL Tokens (Token Program) and is also applicable for Token-2022. If you want to use the Metadata Extension for Token-2022, see the Metadata Extension guide.
Kit
import { createClient, generateKeyPairSigner, lamports } from "@solana/kit";import { rpcAirdrop, solanaRpc } from "@solana/kit-plugin-rpc";import { airdropPayer, payer as kitPayer } from "@solana/kit-plugin-signer";import {getCreateV1InstructionAsync,fetchMetadataFromSeeds,TokenStandard,} from "@metaplex-foundation/mpl-token-metadata-kit";const payer = await generateKeyPairSigner();const mint = await generateKeyPairSigner();const client = await createClient().use(kitPayer(payer)).use(solanaRpc({rpcUrl: "http://localhost:8899",rpcSubscriptionsUrl: "ws://localhost:8900",}),).use(rpcAirdrop()).use(airdropPayer(lamports(1_000_000_000n)));// Create token with metadataconst createInstruction = await getCreateV1InstructionAsync({mint,authority: payer,payer,name: "My Token",symbol: "MTK",uri: "https://example.com/token-metadata.json",sellerFeeBasisPoints: 0, // 0% royalty (use 500 for 5%)tokenStandard: TokenStandard.Fungible,});const { context } = await client.sendTransaction([createInstruction]);console.log("Transaction Signature:", context.signature);// Verify metadata was createdconst metadata = await fetchMetadataFromSeeds(client.rpc, {mint: mint.address,});console.log("Mint Address:", mint.address);console.log("Token Name:", metadata.data.name);console.log("Token Symbol:", metadata.data.symbol);console.log("Metadata URI:", metadata.data.uri);
Console
Click to execute the code.
Is this page helpful?