Folio v0.9 — CEX + On-chain Consolidation is liveSee what's new →

Solana NFT & Compressed cNFT Tracking: Why a Wallet Read Isn't Enough (2026)

Portfolio·

Solana NFT & Compressed cNFT Tracking: Why a Wallet Read Isn't Enough (2026)

A Solana compressed NFT is not in a normal account — its data lives in a Concurrent Merkle Tree, with only a root on-chain, retrievable only via an indexer. Why cNFTs (Metaplex Bubblegum) need a different discovery path than regular Metaplex NFTs, and what that changes for portfolio completeness.
Author avatar Wag3s TeamEditorial team specializing in Web3 finance, crypto tax, and DAO operations. Based in Zurich, Switzerland.

Reviewed by Wag3s Editorial Team — verified against the Solana state-compression model, the Metaplex Bubblegum cNFT standard, and the indexer-retrieval requirement · Last reviewed May 2026

Solana NFT & Compressed cNFT Tracking: Why a Wallet Read Isn't Enough

The fastest way to under-report a Solana NFT portfolio is to read the wallet's accounts and stop. Compressed NFTs are not in those accounts — they live in a Merkle tree, reachable only through an indexer. This guide is the cNFT model and the discovery split it forces.

TL;DR

  • A cNFT uses state compression: data hashed into a Concurrent Merkle Tree, only the root on-chain, updates in the ledger.
  • The Metaplex Bubblegum program powers cNFTs (mint/transfer/update via Bubblegum).
  • A cNFT is not in a normal Solana account → a plain account scan misses it.
  • Discovery needs an indexer (e.g. Metaplex Read API implementers) — not a token-account read.
  • Two discovery paths: direct account reads (uncompressed Metaplex NFTs) + indexer queries (cNFTs).
  • Tax is jurisdiction-specific — track mechanics, confirm tax separately.

What compression actually does

A compressed NFT uses Solana state compression: the NFT data is hashed into a Concurrent Merkle Tree, and only the tree's root is stored on-chain (in a single account), with updates recorded in the Solana ledger. This makes minting drastically cheaper than an uncompressed Metaplex NFT. The Metaplex Bubblegum program is the smart contract powering cNFTs — mint, transfer, and update instructions go through Bubblegum. The ownership concept is unchanged; the storage and retrieval are not.

Why a wallet read misses cNFTs

This is the crux. A cNFT is not stored in a traditional Solana account. Its metadata lives off the normal account model — in the ledger, verifiable against the Merkle root. So a plain account scan will not surface it. Enumerating a wallet's cNFTs requires an indexing service (such as those implementing the Metaplex Read API). A tracker that only reads accounts — the correct method for SPL token accountsmisses every compressed NFT. That is a silent completeness failure, not a visible error.

Two discovery paths, one portfolio

NFT typeDiscovery
Uncompressed Metaplex NFTDirect on-chain account read
Compressed NFT (cNFT)Indexer query against the Merkle tree

A complete Solana NFT portfolio must cover both. Treating all Solana NFTs as one discovery model leaves a gap — and because cNFTs are often minted at scale, the gap can be large. This is the Solana-NFT analogue of the aggregation completeness problem.

Compression doesn't make it less real

A cNFT is still an asset held by a wallet, verifiable against the on-chain Merkle root. The practical difference is discovery and proof (indexer + Merkle proof), not whether it counts. It should be tracked and valued like any other NFT (see NFT portfolio valuation) — the discovery method is the only structural change.

Tax is jurisdiction-specific

Whether a cNFT disposal is taxable, and how, is jurisdiction-specific and must not be assumed — the same as any NFT (see NFT cost basis and disposal). The compression/indexer mechanics are the tracking layer; the tax characterisation is separate and adviser-confirmed.

Practical guidance

  1. Use two discovery paths — account reads for uncompressed, indexer for cNFTs.
  2. Require an indexer (Metaplex Read API class) — a wallet scan alone is incomplete.
  3. Reconcile cNFTs against the Merkle root for proof of holding.
  4. Value cNFTs like any NFT — compression changes discovery, not the asset.
  5. Confirm tax treatment of cNFT disposals per jurisdiction.
  6. Treat missing-cNFT coverage as a completeness failure, not a minor gap.

How vendor tools handle Solana NFTs

Koinly and Zerion support Solana NFTs. Confirm the tool uses an indexer for cNFTs (not account-scan only), covers both uncompressed and compressed discovery paths, and can prove holdings against the Merkle root — account-only discovery silently drops compressed NFTs.

How Wag3s helps

Wag3s Folio discovers both uncompressed Metaplex NFTs (account reads) and compressed cNFTs (indexer against the Merkle tree), reconciles cNFTs to the on-chain root, values them like any NFT, and surfaces the data for the jurisdiction-specific tax characterisation. See the Folio product page.


Further reading

Sources

  • Solana state compression — NFT data hashed into a Concurrent Merkle Tree; only the root stored on-chain; updates in the ledger
  • Metaplex Bubblegum program powers compressed NFTs; cNFTs are not in a traditional Solana account and require an indexer (Metaplex Read API class) to retrieve
  • Two discovery paths: direct account reads (uncompressed Metaplex NFTs) vs indexer queries (compressed NFTs)
Editorial disclaimer
This article is informational and does not constitute tax or accounting advice. Solana NFT mechanics evolve and tax is jurisdiction-specific. Confirm with the relevant documentation and a qualified adviser.