explaingit

hashlips/hashlips_art_engine

7,218JavaScriptAudience · generalComplexity · 2/5Setup · easy

TLDR

A JavaScript tool that generates large collections of unique artwork by layering PNG files, assigning rarity weights to each asset, and outputting matching JSON metadata files, runs locally with Node.js, no online account needed.

Mindmap

mindmap
  root((hashlips))
    How it works
      Layer folders
      PNG stacking
      Rarity weights
    Output
      Image collection
      JSON metadata
    Configuration
      Blend modes
      Image size
      Shuffle order
    Audience
      NFT creators
      Generative artists
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Generate a 10,000-image NFT collection by combining layered PNG assets with weighted rarity rules.

USE CASE 2

Produce JSON metadata files for each image that list its traits for display on NFT marketplaces.

USE CASE 3

Create generative avatar collections for non-NFT uses like profile pictures or merchandise designs.

Tech stack

JavaScriptNode.js

Getting it running

Difficulty · easy Time to first run · 30min

In plain English

HashLips Art Engine is a JavaScript tool for generating large collections of unique artwork automatically. It was built for the NFT space, where creators need to produce hundreds or thousands of images that each look distinct but share a common visual style. The project is accompanied by tutorials on the HashLips YouTube channel. The core idea is layering. You organize your artwork into folders, where each folder represents one visual element, such as a background, a body, a face, or an accessory. Each folder contains multiple versions of that element as PNG files. The engine picks one image from each folder and stacks them on top of each other to produce a finished piece. By combining layers from different folders, it generates many unique combinations from a relatively small set of source images. You control rarity by including a number in each filename. An asset named something like Common Background at 70 and Rare Background at 5 will appear much more often in the final collection than the rare one. The engine reads these weights and distributes the selections accordingly, so some traits end up being genuinely uncommon across the full collection. Additional options let you control blending modes between layers, set per-layer transparency, specify the output image size, and decide whether to shuffle the order in which images are saved. Each generated image gets a matching metadata file in JSON format that lists its traits, which is the standard format NFT platforms use to display attributes like rarity scores and trait breakdowns. When you run the build command, the engine writes all the images to one folder and all the metadata files to another. It also tracks which combinations it has already used so it does not produce duplicates. The project is self-contained and runs locally with Node.js, meaning you do not need any online service or account to generate a collection.

Copy-paste prompts

Prompt 1
Using HashLips Art Engine, how do I organize my layer folders and name my PNG files to control rarity so that rare traits appear in only 5% of the generated collection?
Prompt 2
Show me how to configure HashLips Art Engine to output WebP images instead of PNG and shuffle the final output order.
Prompt 3
My HashLips collection is generating duplicate combinations. How does the engine track and prevent duplicates, and what do I do if I run out of unique combinations?
Open on GitHub → Explain another repo

← hashlips on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.