DEV Community

atharv shukla
atharv shukla

Posted on

Solana NFTs Without Metaplex: What I Learned Building NFTs with Token Extensions

Solana NFTs Without Metaplex: What I Learned Building NFTs with Token Extensions 🎨

Before this week, I assumed every NFT on Solana required Metaplex. After spending several days building on Devnet, I realized that isn't the whole story.

Using Token-2022 (SPL Token Extensions), I built NFTs with on-chain metadata, grouped them into collections, audited their state directly on-chain, and even updated their metadata liveβ€”all without relying on Metaplex.

This post summarizes the biggest concepts that clicked for me.


🧠 What is a Solana NFT?

Coming from Web2, I initially thought NFTs were just images stored on a blockchain.

That isn't really true.

A Solana NFT is fundamentally just an SPL Token Mint configured with a few important properties:

  • Supply = 1
  • Decimals = 0
  • Mint Authority disabled
  • Metadata attached to the mint
  • Optional collection membership

Think of it like a database record.

Instead of

Users
Products
Orders
Enter fullscreen mode Exit fullscreen mode

you have

Mint
Metadata
Collection
Owner
Enter fullscreen mode Exit fullscreen mode

The mint address acts like the primary key, while metadata and collection information provide the additional context that wallets and marketplaces use to render the NFT.


πŸ› οΈ What I Built

During this NFT arc I progressively built more complex assets.

1. A 1-of-1 NFT

The journey started with the simplest NFT possible.

spl-token create-token --decimals 0
spl-token mint <MINT> 1
spl-token authorize <MINT> mint --disable
Enter fullscreen mode Exit fullscreen mode

After disabling the mint authority, no additional copies could ever be created.


2. On-chain Metadata

Next, I enabled the Token Metadata extension.

Instead of relying on separate metadata accounts, Token-2022 lets metadata live directly on the mint itself.

I added:

  • Name
  • Symbol
  • Metadata URI
  • Image
  • Attributes

which immediately appeared inside Solana Explorer.


3. NFT Collections

Instead of leaving NFTs independent, I grouped them into an on-chain collection.

                Solana Sketchbook
                     β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                         β”‚
     Sketch #1               Sketch #2
Enter fullscreen mode Exit fullscreen mode

The Collection Mint stores the Group Extension, while each NFT stores a Group Member Extension pointing back to its parent collection.

This felt very similar to foreign keys in relational databases.


4. Live Metadata Updates

The most interesting experiment was updating metadata after minting.

spl-token update-metadata <MINT> name "Field Notes"

spl-token update-metadata <MINT> rarity legendary
Enter fullscreen mode Exit fullscreen mode

Refreshing Solana Explorer immediately showed the updated values.

Watching blockchain data behave like editable database rows completely changed how I think about NFTs.


⚑ What Surprised Me

The biggest surprise wasn't creating the NFT.

It was realizing that the NFT itself is just structured on-chain data.

The image isn't stored on-chain.

Instead, the NFT stores a URI pointing to a JSON file.

That JSON then points to the actual image.

NFT

↓

Metadata URI

↓

metadata.json

↓

Image URL
Enter fullscreen mode Exit fullscreen mode

Changing the metadata happens immediately because it's stored on-chain.

Changing the image may take longer because wallets cache the off-chain assets.

That distinction between on-chain state and off-chain resources was probably the biggest lesson from this week.


πŸš€ What's Next?

Now that I understand how NFTs are built with Token Extensions, I'd like to explore more advanced functionality such as:

  • Transfer Hooks
  • Royalty enforcement
  • Programmable NFTs
  • Metaplex Core
  • Dynamic game assets

I'm particularly interested in seeing how these extensions can be combined to build gaming assets, memberships, and digital credentials.


Final Thoughts

This week completely changed my understanding of Solana NFTs.

Instead of thinking of NFTs as "JPEGs on the blockchain," I now think of them as programmable digital assets whose behavior and metadata are stored directly on-chain.

That mental model feels much closer to how software engineers already think about data structures and databases.


This post is part of my #100DaysOfSolana journey.

Top comments (0)