Extending NFT metadata with custom properties while maintaining NEP 171 compliance

I’m working on a project where I need to include additional custom properties in my NFT metadata on the NEAR blockchain. My concern is whether adding these extra fields will break NEP 171 compatibility or cause any issues with standard wallets and marketplaces.

What’s the proper approach for extending metadata beyond the standard fields? Should I be placing my custom data within the extra field as a JSON object, or is there a better practice? I want to make sure my tokens remain fully compatible with the ecosystem while still having the flexibility to store project-specific information.

Any guidance on the correct implementation would be really helpful.

i’ve been at it for a bit and honestly, just use the extra field for your custom data. wallets are fine as long as the main neP-171 stuff is covered. no issues on paras or mintbase, trust me!

I’ve been wondering about this too! Still pretty new to NEAR development, but I’ve noticed projects handle custom metadata all over the place.

Have you checked how the bigger NFT projects do it? Paras, Mintbase collections - do they use extra fields or just dump properties straight into the metadata object?

What kind of project-specific data are you working with? Stuff marketplaces might display later, or just internal tracking? That’d probably change where you put it.

One thing that’s bugging me - do different wallets parse metadata the same way? Tested your setup with Sender vs NEAR Wallet to see if they handle custom fields differently?

Sorry for the question dump, but this feels like one of those things where the “right” way totally depends on what you’re actually trying to do with those properties!

I faced a similar scenario six months ago concerning custom gaming NFTs. The best approach is to utilize the extra field, as it provides the necessary flexibility without compromising NEP 171 compliance. You can add additional metadata while ensuring that the core fields such as title, description, and media remain intact. My own testing revealed that major marketplaces simply disregard the content within extra while accurately displaying the standard fields. I managed to format my data as follows: "extra": "{\"game_stats\": {\"level\": 5}, \"rarity\": \"epic\"}". A crucial tip is to ensure your JSON is correctly escaped; malformed JSON can lead to issues with some indexers. Also, keep your data minimal to optimize on-chain storage costs. I tested this across various platforms like Paras and Mintbase, and encountered no breaking issues.