> For the complete documentation index, see [llms.txt](https://tokenfi.gitbook.io/whitepaper/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tokenfi.gitbook.io/whitepaper/token-launcher-and-quicklaunch-bot-guide/uploading-to-ipfs/uploading-erc721-nft-images-to-ipfs.md).

# Uploading ERC721 NFT Images to IPFS

If you choose to deploy your NFT collection via an IPFS URL, you can follow this guide to ensure you are doing it right!\
\
This guide goes into detail, specifically on how to upload your ERC721 NFT Collection Images to IPFS.\
\
**Step 1:** Create an account on <https://nft.storage/>\
**Step 2:** Download the NFTUP Desktop Application: <https://nft.storage/docs/how-to/nftup/>\
**Step 3:** Prepare your NFT images for upload.

<figure><img src="/files/UFXJvJKmt8hCuU5zl0SN" alt=""><figcaption><p>NFT Images Directory</p></figcaption></figure>

Before uploading your NFT Collection Images, **it is important that the names follow a proper format!**\
\
In this case the NFT Images should start from 0.png up to as many as you would like in ascending order. \
\
For example: 0.png, 1.png, 2.png, 3.png, 4.png and so on.

It is also important that you use a .png format before uploading these images. If your images are currently .jpg, you can use the tool below to convert it to a proper.png format.

{% embed url="<https://jpg2png.com/>" %}

***If you don't use the .png format there is a risk your images will not appear properly!***

**Step 4:** Uploading your images

<figure><img src="/files/jxtDAPgOA3z6fDs8RBf8" alt=""><figcaption></figcaption></figure>

Drag and drop all your images at once for upload.

You might be asked to enter an API key, if you are you can create it with the link below.

API Key Creation Page: <https://nft.storage/manage/>\
\
**Step 5:** Save the IPFS URL

<figure><img src="/files/UAmW0FnJDbJRNtykrmEb" alt=""><figcaption><p>Upload Success Screen</p></figcaption></figure>

Once your images are uploaded you will see the success screen, copy the IPFS URL and save it somewhere.

**Valid IPFS URL Example:** *ipfs\://bafybeiamrt5wez3tfxlqnn3wtqiqwxa5uktubiuidm3huohgihsgekyrdq*

A valid IPFS URL starts with `ipfs://`

**DO NOT CLOSE NFTUP JUST YET AS YOU WILL NEED IT LATER ON.**

**Step 6:** Generating your NFT Metadata files.\
**IMPORTANT NOTE: For each unique NFT, you will need to generate a UNIQUE file**\
&#x20;\
Go to the following URL: <https://json-generator.com/>

Then paste in the following code onto the left panel:

```json
{
    "name": "COLLECTION NAME",
    "description": "COLLECTION DESCRIPTION",
    "image": "ipfs://bafybeihvaunlfbdyh5i4w2vsq4hw4mumjhf77mcss3bs5birac2tvwptdq/0.png",
    "external_url": "YOUR WEBSITE URL",
    "attributes": [  
      {
        "trait_type": "Base", 
        "value": "Starfish"
      }, 
      {
        "trait_type": "Eyes", 
        "value": "Big"
      }, 
      {
        "trait_type": "Mouth", 
        "value": "Surprised"
      }, 
      {
        "trait_type": "Level", 
        "value": 5
      }, 
      {
        "trait_type": "Stamina", 
        "value": 1.4
      }, 
      {
        "trait_type": "Personality", 
        "value": "Sad"
      }
    ]
}
```

Modify your `name`, `description`, `external_url`, and `attributes`accordingly.\
\
For the `image` property you can paste in your appended IPFS URL that you had made from Step 5 WITH the proper image number such as \`{IPFS\_URL}/0.png\`

You can also refer to the Opensea Documentation to see what properperties can go with your NFT metadata.

{% embed url="<https://docs.opensea.io/docs/metadata-standards>" %}

**Step 7:** Click on the blue Generate button on the middle of the screen.\
**Step 8:** Download the .json file and save it as `0`,  `1`, `2`whatever the current NFT ID is and save it in the same directory.

<figure><img src="/files/Rta8JFXJiUsWVjyizyrQ" alt=""><figcaption></figcaption></figure>

**Step 9:** Repeat Step 5 - 8 for each INDIVIDUAL NFT.

**Step 10:** Return to NFT UP and upload ALL the generated JSON files that you completed in Step &#x39;**.**

<figure><img src="/files/jxtDAPgOA3z6fDs8RBf8" alt=""><figcaption></figcaption></figure>

**IMPORTANT:** Drag and drop all your JSON Files at once for upload.

Once uploaded, you should see a Gateway URL link, you can open that link to make sure your data is uploaded properly.\
\
The uploaded data should follow a similar structure such as this: <https://bafybeicqorxbz5rq23oklfzxz532lxp7k5d5wygnni7gejpescqg67hgna.ipfs.nftstorage.link/>

**Step 11:** Save the IPFS URL

<figure><img src="/files/UAmW0FnJDbJRNtykrmEb" alt=""><figcaption><p>Upload Success Screen</p></figcaption></figure>

Once your images are uploaded you will see the success screen, copy the IPFS URL and save it somewhere.

**Valid IPFS URL Example:** *ipfs\://bafybeiamrt5wez3tfxlqnn3wtqiqwxa5uktubiuidm3huohgihsgekyrdq*

A valid IPFS URL starts with `ipfs://`

Submit the IPFS URL to the QuickLaunch Bot `NFT IPFS URL` field.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://tokenfi.gitbook.io/whitepaper/token-launcher-and-quicklaunch-bot-guide/uploading-to-ipfs/uploading-erc721-nft-images-to-ipfs.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
