← Protocols
Metaplex
01Description

The Solana digital asset standard. Metaplex Core (mpl-core) is the modern single-account NFT standard with plugins for royalties, transfer rules, and freezing. The legacy Token Metadata standard (mpl-token-metadata) still backs most existing collections. Both are accessed through the Umi JavaScript framework.

02Best for
  • 01Solana NFT minting
  • 02single-account NFTs (Core)
  • 03candy machines
  • 04compressed NFTs
  • 05on-chain royalty plugins
  • 06programmable NFTs (pNFTs)
03Install
  • pnpm add @metaplex-foundation/mpl-core @metaplex-foundation/mpl-token-metadata @metaplex-foundation/umi @metaplex-foundation/umi-bundle-defaults @solana/web3.js
04Environment variables
VariableScopeDescription
NEXT_PUBLIC_SOLANA_RPC_URLClientSolana RPC endpoint (Helius, Triton, QuickNode) used by Umi.
05Prompt snippet
Use Metaplex via the Umi framework: `createUmi(rpcUrl).use(mplCore())` for Core, or `.use(mplTokenMetadata())` for legacy collections. Prefer `mpl-core`'s `create()` and `createCollection()` for new mints — single-account assets are cheaper and composable with plugins (Royalties, FreezeDelegate, TransferDelegate, Attributes). Use `fetchAssetV1` / `fetchCollectionV1` to read state and `update()` for mutable fields. For airdrops/launches, layer Core Candy Machine on top. Sign with `umi.use(walletAdapterIdentity(wallet))` so the connected wallet pays.
06Gotchas
  • Metaplex Core (`mpl-core`) and legacy Token Metadata (`mpl-token-metadata`) are different programs — do not mix accounts/instructions; check which standard a collection uses before reading or updating.
  • Royalty enforcement on Solana is plugin-based (Core Royalties plugin, or pNFT rule sets on legacy). Marketplaces choose whether to honor them; assume royalties may be bypassed by non-compliant venues like AMMs.
  • Compressed NFTs (Bubblegum) require a Merkle tree account sized at mint time — you cannot grow it later, so size for max supply or accept hard caps.
  • Umi expects its own keypair/signer interfaces; passing a raw `@solana/web3.js` Keypair without `createSignerFromKeypair` will silently fail at signing.
  • Updating a Core asset's URI does not invalidate cached off-chain metadata; trigger a refresh on indexers (Helius DAS, SimpleHash) after mutating.
  • Core Candy Machine is a separate program (`mpl-core-candy-machine`) from the legacy Candy Machine v3 — guards and config syntax differ.
07Alternatives