Projects like jpg store or cnft tools collect information from blockchain about minted NFTs (collectables to be exact) and present that information for users to filter, buy, sell and similar.

Most of projects use cip25 which defines a standard way how to represent NFT metadata. With this standard, services like jpg.store and cnft.tools can find NFTs on blockchain (via 721 label) and render NFT metadata as described in cip25 (there are required and optional fields like description or name that can be expected in metadata).

Collectables like The Ape Society or SpaceBudz usually have set of traits and sites like jpg.store or cnft.tools render them, filter them, or they calculate rarity score or rank as shown:

The Ape Society on jpg.store

What I noticed on pool.pm is that there is no unique format or specification how trait data should look. For example this nft defines traits as body of attribues field:

        "attributes": {
          "Creature": "Jambo",
          "Skin": "Silver",
          "Special": "None",
          "Type 1": "Beast",
          "Type 2": "Normal"

and jpg.store correctly renders traits:

enter image description here

Note that in the example above jpg.store didn't take other fields like:

        "Twitter": "https://twitter.com/summoners_guild",
        "Website": "https://summonersguild.io",

and use them as traits.

So far I would think there is a rule: All fields within attributes will be used as traits.

But then these two examples don't use any attributes field as a set of traits but instead it looks like they collect every field within metadata and their traits are still rendered correctly :

enter image description here

enter image description here

As there is no specification on how trait data should be represented in NFT metadata (at least not within cip25) I wonder how sites like the ones mentioned above (jpg.store, cnft.tools, cnftjungle.io) decide what is a trait and what isn't? It seems they have reached some sort of consensus because they render NFT traits correctly but the rules are not obvious to me.

1 Answer 1


There is no standard and they have to check manually how each collection has set up the traits.

In practice, the different sites most likely have some code to check for common patterns. E.g. is there an array of "traits" or "attributes"? Or they exclude common non-trait values like "Twitter" or "Website" automatically.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.