Compressed NFTs (cNFTs) represent a groundbreaking advancement in blockchain efficiency, particularly within the Solana ecosystem. By leveraging state compression, cNFTs drastically reduce onchain storage requirements and minting costs—making large-scale NFT projects not only feasible but highly affordable.
Unlike traditional NFTs that store metadata and ownership data directly in blockchain accounts, cNFTs store only a cryptographic hash of the data onchain. The actual data is preserved offchain through indexing mechanisms, enabling verification without bloating the ledger.
This article dives deep into how compressed NFTs work, their underlying technology, and practical steps to create, manage, and interact with them using modern developer tools.
How Compressed NFTs Work
At the heart of cNFTs lies State Compression, a technique that minimizes onchain footprint by storing NFT data offchain while retaining verifiability via cryptographic hashing.
When a cNFT is minted:
- Its metadata is hashed.
- That hash becomes a "leaf" in a concurrent Merkle tree.
- The tree computes a final root hash, which is stored onchain.
- Anyone can verify the authenticity of the original data by reconstructing the hash path and comparing it to the root.
This process ensures data integrity without requiring every node to store full NFT metadata—slashing costs and increasing scalability.
The Role of Concurrent Merkle Trees
A Merkle tree organizes data into a hierarchical structure where each leaf node contains a hash of its content, and each parent node contains a hash of its children. This culminates in a single root hash that cryptographically represents all data in the tree.
However, standard Merkle trees face limitations under high concurrency—when multiple transactions attempt to modify leaves in the same block, all but one fail due to state changes invalidating prior proofs.
Enter the concurrent Merkle tree: an enhanced version that supports parallel updates by maintaining a secure changelog. This allows dozens or even thousands of mints, transfers, or burns to occur simultaneously within a single slot.
Three key parameters define a concurrent Merkle tree:
- Max Depth – Determines the maximum number of NFTs the tree can hold (
2^maxDepth). - Max Buffer Size – Controls how many concurrent operations can be processed per slot.
- Canopy Depth – Specifies how many proof nodes are cached onchain to reduce transaction size during verification.
Higher values increase functionality but also raise the cost of initializing the tree. For example, supporting 1 million cNFTs requires a max depth of 20, while a buffer size of 2,048 enables massive throughput during launches.
Why cNFTs Are Game-Changing for Solana
Solana’s low transaction fees already make it attractive for NFT projects—but traditional NFT minting at scale remains prohibitively expensive.
Consider this:
- Minting 1 million traditional NFTs using the Token Metadata Program costs around 24,000 SOL.
- With cNFTs, the same volume can cost 10 SOL or less—a reduction of over 2,400x.
This dramatic cost efficiency opens doors for use cases previously deemed impractical:
- Mass tokenized assets
- In-game item distribution
- Dynamic NFT collections with millions of variants
- Onchain credentials and soulbound tokens
Developers can now focus on innovation rather than budget constraints.
Building Blocks: SPL State Compression & Noop Programs
The SPL State Compression Program standardizes state compression across Solana. It provides core instructions for:
- Initializing Merkle trees
- Adding, updating, or removing leaves
- Verifying data integrity
To make compressed data indexable, the program works alongside the Noop (No Operation) Program. When data is hashed and added to the tree, it's emitted as a log event via the Noop program. These logs are captured by indexers and stored offchain—creating a reliable, queryable database linked to onchain proofs.
This hybrid model—onchain verification, offchain accessibility—ensures performance without sacrificing decentralization.
Indexing cNFT Data for Fast Access
Since cNFT data isn’t stored in traditional accounts, you can’t fetch it via standard RPC calls. Instead, you rely on indexers that monitor Noop program logs and build searchable databases.
Popular RPC providers like Helius support the Digital Asset Standard (DAS) API, which enables:
- Fetching individual cNFTs by asset ID
- Querying all NFTs owned by a wallet
- Searching by creator, collection, or metadata traits
- Retrieving Merkle proofs for transfers
Without indexing, retrieving old cNFT data would require replaying the entire chain—a slow and impractical process. Indexers solve this by caching data in real time.
👉 Unlock instant access to compressed NFT data with powerful indexing APIs.
Creating a cNFT Collection: Step-by-Step
While cNFTs involve complex underlying mechanics, tools like Metaplex Bubblegum simplify development through abstractions.
Here’s how to launch your own cNFT collection:
1. Prepare Your Metadata
Just like traditional NFTs, cNFTs require metadata structured in JSON format:
{
"name": "My Compressed NFT #1",
"symbol": "CNFT",
"image": "https://example.com/image.png",
"attributes": [
{ "trait_type": "Background", "value": "Blue" }
]
}Host these files on decentralized storage (e.g., IPFS) and keep references ready.
2. Create a Collection NFT
To group your cNFTs under a verified brand, first mint a Collection NFT using the Token Metadata Program. This acts as a parent token that authenticates membership.
3. Initialize a Merkle Tree Account
Use the @metaplex-foundation/mpl-bubblegum SDK to create a concurrent Merkle tree:
await createTree(umi, {
merkleTree: generateSigner(umi),
maxDepth: 20,
maxBufferSize: 64,
});Choose parameters based on expected scale and traffic:
maxDepth = 20→ Supports up to 1,048,576 cNFTsmaxBufferSize = 64→ Allows 64 concurrent operations per slot
4. Mint cNFTs Using Bubblegum
With the tree set up, mint cNFTs into it:
await mintToCollectionV1(umi, {
leafOwner: someWallet.publicKey,
metadata,
collection,
merkleTree,
});Each mint appends a new leaf to the tree and updates the root hash—costing just fractions of a cent.
Interacting With cNFTs
cNFTs aren’t SPL tokens, so standard token commands won’t work. Use specialized methods instead.
Fetching a cNFT
To retrieve a specific cNFT:
- Derive its asset ID using the Merkle tree address and leaf index.
- Call
getAsset()via DAS API.
const asset = await umi.rpc.getAsset({ id: assetId });
console.log(asset.content.jsonUri);Querying Multiple cNFTs
Use searchAssets() to find:
- All cNFTs owned by a wallet
- Items from a specific creator
- Assets matching certain attributes
Transferring a cNFT
Transfers require proof of ownership:
- Fetch the asset data and Merkle proof from the indexer.
- Provide both to the Bubblegum program.
- The program verifies the data matches the onchain root before executing.
This ensures security while preserving compression benefits.
Frequently Asked Questions (FAQ)
What is a compressed NFT (cNFT)?
A compressed NFT uses state compression to store metadata offchain while keeping a verifiable hash onchain via a Merkle tree. This reduces storage costs by over 99% compared to traditional NFTs.
How much does it cost to mint cNFTs?
Minting one million cNFTs can cost as little as 10 SOL, versus ~24,000 SOL for traditional NFTs—making large collections economically viable.
Can I transfer or sell cNFTs on marketplaces?
Yes! Major platforms like Tensor and Magic Eden support cNFTs. As long as the marketplace uses DAS API-compatible indexers, trading works seamlessly.
Do I need special wallets to hold cNFTs?
No. Standard Solana wallets (Phantom, Backpack, etc.) can display and manage cNFTs if they integrate with DAS API providers.
Are cNFTs less secure than regular NFTs?
No. Security is maintained through cryptographic hashing and proof verification. Data integrity is preserved even though metadata lives offchain.
Can I burn or update a cNFT?
Yes. The Bubblegum program supports advanced actions like burning, delegating authority, and verifying ownership—similar to traditional NFT operations.
Final Thoughts
Compressed NFTs are redefining what’s possible on Solana. By collapsing storage overhead and slashing costs, they empower developers to build ambitious projects—from billion-token ecosystems to dynamic digital ownership layers.
While tooling is still evolving, frameworks like Metaplex Umi and Bubblegum abstract away complexity, letting you focus on creativity and user experience.
As adoption grows, expect broader wallet support, richer metadata standards, and deeper integration across DeFi and gaming.
👉 Start building scalable NFT experiences today—explore tools and SDKs for compressed NFT development.
Whether you're launching an art collection or designing an in-game economy, cNFTs offer a future-proof foundation built for mass adoption.