Algorand NFT generator

Questions/bugs/feedback: runvnc on Discord Server Also check #announcements for updates.


Note: there are additional instructions at the top of the Images/Code tab, and a tutorial video in the upper right hand corner of the page.

1. Create or import a wallet.

2. The Images/Code, Generate and Pin/Mint tabs will appear.

3. If you created a new wallet, go to the Pin & Mint tab and click [Toggle Mnemonic]. Then import the mnemonic into another wallet system like My Algo Wallet or Pera Wallet.

4. Enter collection name, unit name, description etc. on the Setup tab.

5. On the Images/Code tab, add your traits. Then click the folder icon next to the trait names to upload your variant images.

6. If you need a specific (random) distribution, enter numbers into the occurrence % column

7. When you press the Generate button this page will create random combinations of the images according to your Occurrence % (approximately, its random).

8. Go to the Pin & Mint tab, enter your password, and press the button. It will create the ARC69 metadata, Pin on Pinata and mint the NFTs.

9. If you have questions, please talk to runvnc on the Discord server.

Questions/bugs/feedback: runvnc on Discord Server Also check #announcements for updates.


Note that you will not be able to mint through the front end while the API is enabled.


Authorized smart contract(s):

API Token:


NOTE: Wallet key is stored in your browser using the encrypted-local-storage module by Rand Labs. Transactions are signed in the browser and your private key is never transmitted.

As a legal disclaimer, it is recommended that you

  1. Do not store any more ALGOs or ASAs in the wallet than are necessary, or at any time that you are not minting, and
  2. Immediately after creating a wallet, immediately back up and import the mnemonic phrase (which you can toggle on the Pin & Mint tab) into another wallet system. After minting and importing the address into another system, use the [Delete Wallet] button.

    Import the wallet into another system BEFORE deleting from this web page, because if there is any typo or other problem recovering the account with the mnemonic, you will lose access to all ALGOs and NFTs minted with this address.

  3. NOTE: images are stored in a directory named after this wallet address. You will need to re-upload images.

Other wallets in this collection (separate with space or enter):

Note: use this button so you won't have to reupload images and so the generator won't have to run the image combine commands again.

Collection Name:

Unit Name:

Supply per NFT:

Note: please be careful with all of the fields. Unfortunately we are not going to be able to change them after minting. I advise you to use TESTNET first, and then also do another small test on MAINNET if possible so you can look on NFT Explorer etc.

External URL:


Clawback address (leave blank unless you are sure!):

UI Settings

Show offset drag area

Help -- READ ME !!! (WARNING: do not reupload after minting started)

Note: in the new version, data rows start in the collapsed state when you refresh the page.

Note: uploaded images are now converted to WEBP. Do not reupload after you have started minting, this will cause duplicates if they change or were used (e.g. as PNG) prior to the new version.

1. Click on Add Trait and type in a trait name. Typing spaces in variant names not allowed, but underscores are converted to spaces in the output.

2. Click the folder icon to the right of the trait name to select and upload variant images.

3. Specify the approximate Occurrence % or blank/0 for an equal chance. Note: make sure your total % adds up to exactly 100%, or less than 100% and leave one or more rows as 0 which will divide the remainder evenly.

4. You can ignore the Data column, Definition Order, and code editor unless you are a programmer doing procedural generation.

5. To offset images, drag the square in the preview area to the right of the table. Pay attention to the orange dots position. Note: to use this feature you will need to close the Help section first. You can also use the x and y input boxes in the data table.

Note: the preview area now only shows the last few variant images that you have clicked rather than the entire stack.

6. To scale images, use the w and h input boxes in the table.

7. To collapse/expand trait rows (hide/show variants) click the [-] symbol.

Warning: images automatically resized to max 2048 pixels.

Help with Procedural Generation/Code (for Programmers)
Click the [->] icon to the right of Definition Order to enter p5.js code in LiveScript for generating images.

Here is a video showing some ways to use code generation.

Note: to generate graphics using code, the trait must still have at least one variant defined with an image attached (it can be a transparent image).


Avoid conflicting variants

# traitdef tab of Glasses trait if char.Eyes.n.includes(\Laser) and kind.n != 'None' then return \retry

Random image color

# traitdef tab kind.n = colors[round (random! * colors.length)] # predraw tab tint kind.n


# draw tab textSize 64 fill \white text kind.n, 400, 120

Procedural shapes

# draw tab x = round (random! * 600)+300 y = round (random! * 400)+200 translate x, y for i from 0 to 10 fill \magenta ellipse 0, 30, 20, 80 rotate PI/5

The following variables/functions are pre-defined:

kind # this is the variant that has been randomly preselected # it contains the offset (.x, .y), (width/height .w, .h) data (.d) and name (.n) of the trait variant # .w and .h are only available in predraw and draw defs # has all of the data from the table in the UI. The keys are the trait names # under each trait key is another object indexed by variant names # containing 'kind' (as described above) char # this is the randomly preselected "character" or collection of trait variants, indexed by # the trait names rel (x,y) # Adds x and y to the kind.x and kind.y
Note that you can generate and mint in multiple batches if you need more than 500.
Maximum NFTs to generate (500 at a time max):  Images are minted as .webp files      Lossless (best for pixel art)
Lossless mode images can be 5-10 times larger and take 5-10 times as long to generate. This is not ideal for mint-on-demand. Do some tests, and don't use it unless you are doing pixel art or sure you need it. If you do use lossless mode, consider a somewhat smaller image. Warning: you cannot change the lossless setting OR variant images after you start minting. Duplicate prevention uses the content hashes of the image files (IPFS CIDs).
(Optional, this should normally be handled automatically) Start generating at #            Items generated at end of page.
  Sound effects
Warning: always double check the numbering has updated fully after minting before generating again. This now only updates when you switch to this tab rather than every time you press the Generate button. Please note that generation can take some time to start up because the sysbox container has to be started, then images loaded. Especially for large images, they can take time to load. But once you have generated a fair number and most of the images have been loaded, generation should generally be around less than 1 second per image. You can decrease the warm-up time by using smaller images which will load faster.
Image display size:


Already minted NFTs:
Minted in this wallet:
Recently Generated NFTs:
Total ASA holding requirement (Algorand):
Total pinning & minting fees:
Total transaction fees:
Balance required:
Current balance:
Note: the balance required should be correct before you press the "pin & mint" button, but during the minting process it will sometimes not be 100% accurate until transactions are confirmed by the network and show up in the query result to add to the total.

Note: Record and verify the mnemonic phrase! You will not be able to access the account in another wallet without it!
Enter your password here to retrieve your key and authorize transactions.
  Media will be pinned to IPFS using the Pinata API, signed using the account above, and sent to the Algorand TESTNET. NFTs. Can take some time.

If button is disabled, make sure the balance is adequate and you have entered your password above.

Warning: always double-check the generated numbering and other details carefully first.



Already Minted