BULLET
Articles

How to generate a PFP collection

Jul 18, 20266 min read

The Bullet generator turns a folder of trait PNGs into a finished generative collection — composited, deduplicated, with rarity and rules honored — and hands it straight to the launch wizard. If you launch on Bullet, generation and IPFS pinning are free.

File requirements

The generator is strict about inputs on purpose: every mid-run failure in tools like this traces back to a stray JPEG or a mis-sized layer. Meet these three rules and generation just works.

  • PNGs only. Every trait must be a PNG — JPEGs, WEBPs, and GIFs are rejected at upload with the reason shown next to the file. Transparency is expected on most layers so lower layers show through, but opaque PNGs are accepted too (backgrounds export that way); they're marked “opaque” in the trait grid as a reminder that they cover everything beneath them.
  • Identical dimensions. The first trait you upload sets the canvas (say 2000×2000); every subsequent file must match it exactly. Layers are stacked 1:1, never scaled.
  • One trait per file, one folder per layer. Name things the way you want them to appear: a file called Laser Eyes.png inside a folder called Eyes becomes the trait “Laser Eyes” on the layer “Eyes”.
NOTE
No per-file size limit — upload your exports as they are. Collections can be 100 to 10,000 tokens — the same bounds as every Bullet launch.

Who can use it

Connect your wallet, sign in once, and link your X account. The generator requires a small follower minimum (50 by default) — it keeps free compute and storage from being farmed while staying a non-event for any real artist.

The workflow

TRAITSUpload your parent folder in one go. Subfolders become layers, filenames become trait names. Re-upload after a re-export and matching names update the artwork in place — weights and rules keep their settings. Rejected files are listed with reasons, never silently dropped.
STACKINGDrag layers to set the pile: top of the list paints in front, bottom is your background. What you see in the stack is exactly how every token composites.
RARITYEvery trait gets a weight slider. Weights are relative within a layer, and the live percentage shows the effective chance including the layer's empty-slot weight — with projected counts once you set a supply.
RULESThree rule types cover almost every real collection: always pairs with (traits that must appear together), only mixes with (a trait restricted to certain partners), and never mixes with (hard exclusions). Plus hand-drawn 1/1s injected at random token positions.
PREVIEWInstant, free, in your browser: random combos stacked on a canvas from your current weights. Shuffle as much as you like — nothing is generated server-side until you commit.
GENERATEPick a supply and run preflight: it verifies your layers, weights, and rules can actually produce that many unique tokens before anything starts. Then the batch runs server-side with a live progress bar. Don't like the roll? Regenerate — every run is a fresh shuffle, and the old output is replaced.
OUTPUTBrowse every token of the finished set — the full grid with per-layer trait filters, so you can spot-check exactly the combinations you're worried about before pinning anything.

Pinning, launching, and exporting

Editing never closes. When you like a generation, pin it — that publishes an immutable snapshot to IPFS. You can keep tweaking and regenerating afterwards; pinned sets are never touched by a re-roll, and you can pin a newer generation whenever you want.

  • Pin to IPFS — free. The full set (images + metadata) streams to IPFS and you get copyable ipfs:// URIs. The CIDs are computed before the upload and verified byte for byte after it.
  • Launch on Bullet — free. One click sends a pinned set into the launch wizard (from Studio) with the metadata URI and supply pre-filled. The contract's base URI points at the pinned snapshot, so nothing you edit afterwards can affect a live collection.
  • Export. Want the raw files to launch elsewhere? Download a zip of every image and metadata file — free while the generator is in its early-access period.
NOTE
Generated files are stored privately until you pin or export. Nothing touches IPFS until you decide it should.

Tips from collections that went sideways

  • Run preflight early. If your rules only permit a few thousand unique combos, better to learn that before you promise a 10k supply.
  • Watch the effective rarity, not the slider. Rules shift real frequencies — a “1% trait” that only mixes with one body type will land more or less often than the slider implies. The preflight warnings call this out.
  • Use empty-slot weights instead of blank PNGs. Every layer has a built-in “none” option with its own weight — no need to upload transparent placeholder files.

Ready? Open Generate from Studio and upload your first layer folder.