How to provide metadata for ERC721

Hi @madeindreams,

I have moved this question to a new topic. I recommend creating a new topic per question as it makes it easier for community members to answer, (and for future readers to find answers).

With the EIP-721 optional metadata extension, each tokenID can have a tokenURI which points to a JSON file with name, description and image for the given token ID.

Some example metadata which is just JSON:

For testing purposes you could do what I did and use my-json-server.typicode.com to point to a single file in a GitHub repository to use for your token metadata. You could then move to your own server for further testing.

My data file is here:

You can view my NFT on OpenSea:

Using the preset ERC721PresetMinterPauserAutoId we get lower cost minting as we only need to store a single baseURI and then when we look up the tokenURI for each token we concatenate the baseURI and the tokenID (as a string) together.

In your example you would need your baseURI to be https://mydomain.com/meta.php?nftid= and then the tokenURI for tokenID would be https://mydomain.com/meta.php?nftid=0 and this should return the JSON metadata for tokenID 0.


Instead of centralized metadata (that you could change at any time) you could use IPFS.

There would be increased minting costs as you would need to store the IPFS hash for each tokenID but it would be more decentralized.

If I recall correctly OpenSea supports providing an IPFS hash for metadata.

3 Likes