# Convention for declaring traits of an NFT's

## Abstract

The goal is to establish a standard for how traits are declared inside a non-fungible NFT’s metadata, for example as specified in ( [ARC-3](https://dev.algorand.co/arc-standards/arc-0003)), ( [ARC-69](https://dev.algorand.co/arc-standards/arc-0069)) or ( [ARC-72](https://dev.algorand.co/arc-standards/arc-0072)).

## Specification

The key words “ **MUST**”, “ **MUST NOT**”, “ **REQUIRED**”, “ **SHALL**”, “ **SHALL NOT**”, “ **SHOULD**”, “ **SHOULD NOT**”, “ **RECOMMENDED**”, “ **MAY**”, and “ **OPTIONAL**” in this document are to be interpreted as described in [RFC-2119](https://www.ietf.org/rfc/rfc2119.txt).

> Comments like this are non-normative.

If the property `traits` is provided anywhere in the metadata, it **MUST** adhere to the schema below. If the NFT is a part of a larger collection and that collection has traits, all the available traits for the collection **MUST** be listed as a property of the `traits` object. If the NFT does not have a particular trait, it’s value **MUST** be “none”.

The JSON schema for `traits` is as follows:

```
{

"title": "Traits for Non-Fungible Token",

"type": "object",

"properties": {

"traits": {

"type": "object",

"description": "Traits (attributes) that can be used to calculate things like rarity. Values may be strings or numbers"

}

}

}
```

#### Examples

##### Example of an NFT that has traits

```
{

"name": "NFT With Traits",

"description": "NFT with traits",

"image": "https://s3.amazonaws.com/your-bucket/images/two.png",

"image_integrity": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",

"properties": {

"creator": "Tim Smith",

"created_at": "January 2, 2022",

"traits": {

"background": "red",

"shirt_color": "blue",

"glasses": "none",

"tattoos": 4,

}

}

}
```

##### Example of an NFT that has no traits

```
{

"name": "NFT Without Traits",

"description": "NFT without traits",

"image": "https://s3.amazonaws.com/your-bucket/images/one.png",

"image_integrity": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",

"properties": {

"creator": "John Smith",

"created_at": "January 1, 2022",

}

}
```

## Rationale

A standard for traits is needed so programs know what to expect in order to calculate things like rarity.

## Backwards Compatibility

If the metadata does not have the field `traits`, each value of `properties` should be considered a trait.

## Security Considerations

None.

## Copyright

Copyright and related rights waived via [CCO](https://creativecommons.org/publicdomain/zero/1.0/).
