# Metadata Structure

TL Metadata is supported by all major marketplaces, such as SuperRare, OpenSea, LooksRare, and Nifty Gateway. The metadata follows widely accepted standards, with a few additional fields.

## Metadata Structure

```json
{
    "name": "string",
    "description": "string",
    "external_url": "string",
    "attributes": [
        {
            "trait_type": "string",
            "value": "string"
        },
        ...
    ],
    "tags": [
        "string",
        "string",
        ...
    ],
    "image": "string",
    "image_sha256": "string",
    "animation_url": "string",
    "animation_sha256": "string",
    "media": {
        "dimensions": "<number>x<number>",
        "size": "<number>",
        "mimeType": "string"
    }
}
```

### Details

<details>

<summary>name (required)</summary>

The title of the NFT

</details>

<details>

<summary>description (required)</summary>

The description that goes along with the NFT. You can use Markdown on OpenSea and SuperRare, although markdown links are not supported on SuperRare (regular links are).

A note on line breaks in Markdown: You need two spaces in front of the escape characters. For example: `\n`

</details>

<details>

<summary>external_url (optional)</summary>

A url string that would show up under the item on OpenSea and can be used to direct people to your website or other content you want them to see.

</details>

<details>

<summary>attributes (optional)</summary>

A list of key-value pair objects. The `trait_type` is always the key and `value` is the value. You can read more about these [here](https://docs.opensea.io/docs/metadata-standards#attributes). Note, boosts or anything like that are not supported outside of OpenSea.

</details>

<details>

<summary>tags (optional)</summary>

These are essentially hashtags on SuperRare. OpenSea does not yet support although they may be looking into this based on some beta features available in collection settings. We shall see.

</details>

<details>

<summary>image (required)</summary>

The uri of the image. Supported file types are `jpeg`, `png`, and `gif`.

</details>

<details>

<summary>image_sha256 (optional)</summary>

The sha256 hash of the image. Useful for assuring that the downloaded file is correct.

</details>

<details>

<summary>animation_url (only required for videos, 3d, and html)</summary>

The uri of the animation. Supported file types are `mp4`, `mp3`, `glb`, `gltf`, `html`

</details>

<details>

<summary>animation_sha256 (optional)</summary>

The sha256 hash of the animation. Useful for assuring that the downloaded file is correct.

</details>

<details>

<summary>media (optional)</summary>

An object containing some details about the main asset for faster indexing.

* `uri` - the link to the main asset (either `image` or `animation_url`)
* `size` - the size of the main asset in bytes shown as a string
* `dimensions` - the dimensions of the main asset if available, otherwise the dimensions of the thumbnail image ex: `100x100`
* `mimeType` - the mime type of the main asset

</details>
