Skip to main content

How to burn NFTs

What is burning?​

Completely destroying a Token/NFT is called burning. Burning will destroy the whole token and close the corresponding accounts. This results in

  • The NFT being eliminated from the blockchain
  • while the transactions around it obviously remain in the blockchain history
  • giving you back some SOL that was reserved for account rent

How to burn...​

To burn NFTs different instructions can be run depending on which kind of NFTs you are using. You can not just burn it like a SPL token. This would not close all the token accounts required. Normal NFTs can be burned through the BurnNft instruction, Editions Prints require a different instruction called BurnEditionNft instruction. There are multiple options for you how to burn NFTs as a user or programmatically as a developer:

... as a user?​

  • Websites: there are web based tools created by the community which allow you to connect your wallet and burn NFTs like sol-incinerator.com.
  • Wallets: Some wallets like Solflare allow you to directly burn a NFT in your wallet by choosing the NFT and clicking something like close
  • Metaboss: Metaboss is a CLI tool primarily targeted at developers which has a burn function. You can either burn a single NFT or burn a list of NFTs. Assumed that you have metaboss installed already you just have to run the following command where <OWNER_KEYPAIR> is the path to your filesystem wallet and <MINT_ACCOUNT> the NFTs address: metaboss burn one -k <OWNER_KEYPAIR> --account <MINT_ACCOUNT>

... as a developer?​

  • JS SDK: The @metaplex-foundation/js SDK has a delete() function which can currently burn NFTs and soon also Editions. A simple NFT can burned like like shown in the following example. Depending on some conditions, like if it is part of a sized collection some additional parameters have to be used. delete() detects if it needs to burn a standard NFT or Edition Print.
import { Metaplex } from "@metaplex-foundation/js";
import { clusterApiUrl, Connection, PublicKey } from "@solana/web3.js";
const connection = new Connection(clusterApiUrl("devnet"));
const mx = Metaplex.make(connection);
const mintAddress = new PublicKey(address);
const parameters = {
mintAddress : mintAddress
}
await mx.nfts().delete(parameters);