Features
Burning Assets
Last updated January 31, 2026
This guide shows how to burn Core Assets on Solana using the Metaplex Core SDK. Permanently destroy Assets and recover most of the rent deposit.
What You'll Learn
- Burn an Asset and recover rent
- Handle burning for Assets in Collections
- Understand Burn Delegate permissions
- Know what happens to the account after burning
Summary
Burn a Core Asset to permanently destroy it and recover rent. Only the owner (or Burn Delegate) can burn an Asset.
- Call
burn(umi, { asset })to destroy the Asset - Most rent (~0.0028 SOL) is returned to the payer
- A small amount (~0.0009 SOL) remains to prevent account reuse
- Burning is permanent and irreversible
Out of Scope
Token Metadata burning (use mpl-token-metadata), compressed NFT burning (use Bubblegum), and Collection burning (Collections have their own burn process).
Quick Start
Jump to: Burn Asset · Burn in Collection
- Install:
npm install @metaplex-foundation/mpl-core @metaplex-foundation/umi - Fetch the Asset to verify ownership
- Call
burn(umi, { asset })as the owner - Rent is automatically returned to your wallet
Prerequisites
- Umi configured with a signer that owns the Asset (or is its Burn Delegate)
- Asset address of the Asset to burn
- Collection address (if the Asset is in a Collection) Assets can be burnt using the
burninstruction. This will return the rent-exempt fees to the owner. Only a very small amount of SOL (0.00089784) will stay in the account to prevent it from being reopened.
Code Example
Here is how you can use our SDKs to burn a Core asset. The snippet assumes that you are the owner of the asset.
1import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
2import { burn } from '@metaplex-foundation/mpl-core'
3import { mplCore } from '@metaplex-foundation/mpl-core'
4import { publicKey } from '@metaplex-foundation/umi'
5
6const umi = createUmi('https://api.devnet.solana.com').use(mplCore())
7const assetAddress = publicKey('AssetAddressHere...')
8
9// Permanently destroy/burn an NFT asset
10const result = await burn(umi, {
11 asset: assetAddress,
12}).sendAndConfirm(umi)
13
14console.log('Asset burned successfully')
Burning an Asset that is part of a Collection
Here is how you can use our SDKs to burn a Core asset that is part of a collection. The snippet assumes that you are the owner of the asset.
Burning an Asset that is part of a collection
import { publicKey } from '@metaplex-foundation/umi'
import {
burn,
fetchAsset,
collectionAddress,
fetchCollection,
} from '@metaplex-foundation/mpl-core'
const assetId = publicKey('11111111111111111111111111111111')
const asset = await fetchAsset(umi, assetId)
const collectionId = collectionAddress(asset)
let collection = undefined
if (collectionId) {
collection = await fetchCollection(umi, collectionId)
}
await burn(umi, {
asset,
collection,
}).sendAndConfirm(umi)
Common Errors
Authority mismatch
You're not the owner or Burn Delegate of the Asset. Check ownership:
const asset = await fetchAsset(umi, assetAddress)
console.log(asset.owner) // Must match your signer
Asset is frozen
The Asset has a Freeze Delegate plugin and is currently frozen. The freeze authority must unfreeze it before burning.
Missing collection parameter
For Assets in a Collection, you must pass the collection address. Fetch the Asset first to get the collection:
const asset = await fetchAsset(umi, assetAddress)
const collectionId = collectionAddress(asset)
Notes
- Burning is permanent and irreversible - the Asset cannot be recovered
- Rent is returned to the owner (amount varies based on asset size and plugins)
- The remaining SOL prevents the account address from being reused
- Burn Delegates can burn on behalf of owners (via the Burn Delegate plugin)
- Frozen Assets must be unfrozen before burning
Quick Reference
Burn Parameters
| Parameter | Required | Description |
|---|---|---|
asset | Yes | Asset address or fetched object |
collection | If in collection | Collection address |
authority | No | Defaults to signer (use for delegates) |
Who Can Burn?
| Authority | Can Burn? |
|---|---|
| Asset Owner | Yes |
| Burn Delegate | Yes |
| Transfer Delegate | No |
| Update Authority | No |
Rent Recovery
| Item | Amount |
|---|---|
| Returned to payer | Base + plugin storage rent |
| Remaining in account | ~0.0009 SOL |
FAQ
Can I recover the ~0.0009 SOL left in the account?
No. This small amount is intentionally left to mark the account as "burned" and prevent its address from being reused for a new Asset.
What happens to the Asset's metadata after burning?
The on-chain account is cleared (zeroed out). The off-chain metadata remains accessible via the original URI, but there's no on-chain record linking to it.
Can a Burn Delegate burn without the owner's approval?
Yes. Once an owner assigns a Burn Delegate via the plugin, the delegate can burn the Asset at any time. Owners should only assign trusted addresses as Burn Delegates.
Does burning affect the Collection's count?
Yes. The Collection's currentSize is decremented when an Asset is burned. The numMinted counter remains unchanged (it tracks total ever minted).
Can I burn multiple Assets at once?
Not in a single instruction. You can batch multiple burn instructions in one transaction (up to transaction size limits).
Glossary
| Term | Definition |
|---|---|
| Burn | Permanently destroy an Asset and recover rent |
| Burn Delegate | An account authorized to burn on behalf of the owner |
| Rent | SOL deposited to keep an account alive on Solana |
| Frozen | An Asset state where burns and transfers are blocked |
| Collection | A group account that the Asset may belong to |
