Shuffles
A shuffle is a randomized NFT drop. As a creator you load NFTs into a drop wallet, set a price and a schedule, and buyers click Shuffle to be handed an NFT from the pool — paid for and delivered in a single atomic Algorand transaction. This guide covers how to set one up, how phases work, and the one trade-off worth understanding up front: with real art in the pool, buyers can peek at what they'll get before they pay.
How to get there
Shuffles are a creator tool, available to verified collections only.
- Connect and log in with the creator wallet — the wallet that owns the verified collection you want to drop.
- Open /creator (Creator Tools) and choose Go to my collections.
- Pick the collection and create its shuffle. You'll land on the shuffle's Manage page, where everything below happens.
Setting up a drop, step by step
- 1Create the shuffleGive it a name, description, and an optional image URL. This is the public landing card buyers see on the collection's Shuffle tab. It starts hidden and paused — nothing is live until you say so.
- 2Add a phaseA phase is one sale window with one price. Set its name, start date, optional end date, payment, the per-buy and per-wallet limits, and (optionally) an eligibility list. Creating a phase generates its dedicated drop wallet — its address is shown on the phase once created.
- 3Fund the phase walletSend the NFTs you want to sell to the phase's Shuffle wallet address (linked to the explorer on the Manage page). Whatever sits in that wallet — minus the payment asset — is the live pool. You can top it up or pull NFTs back out at any time.
- 4Make it visible & unpauseUse Show to make the shuffle appear publicly and Play to unpause it. A phase only sells while it's within its start/end window and the shuffle is unpaused.
How phases work
Phases are how you run a drop in stages — e.g. an allowlist phase first, then a public phase, or tiered pricing over time. Each phase is independent: its own wallet, its own price, its own window, its own limits and eligibility. Buyers only ever see phases that are currently active.
- Schedule — a start date and an optional end date. Before the start the phase is upcoming (shown on the timeline); after the end it's closed. Overlapping windows are allowed, so multiple phases can be live at once.
- Payment — Algo Payment, Asset Transfer (an ASA / token), or Payment + Asset Transfer (both). You set the amount(s), the ASA id where relevant, and the receiver address that collects the proceeds.
- Assets to sign for limit (1–4) — how many candidate NFTs are handed to the buyer on a single shuffle. Their wallet signs one of them at random, so a higher number means a wider random draw per click.
- Max per wallet (0 = unlimited) — a lifetime cap on how many NFTs one wallet can take from this phase. Setting a cap turns on per-asset reservations so two buyers can't be handed the same NFT, and the count is measured from NFTs actually delivered on-chain — a buyer whose signing failed simply gets re-offered the same asset, never locked out.
- Eligibility — optional. Leave it empty and the phase is open to everyone. Upload a list and it becomes private to those recipients (see below).
Eligibility (allowlists & allocations)
Each phase has a single private eligibility list, managed from Manage Eligibilityon the phase. You upload a CSV in one of two formats (auto-detected from the columns):
- Random assignment (
countcolumn) — each recipient is randomly assigned that many NFTs from the pool. - Specific assets (
asset_idcolumn, one row per asset) — you pick exactly which NFTs each recipient gets.
A recipient is either an explicit address or a holding_asset — whoever holds that 1/1 NFT at buy time is eligible, so the allocation follows the NFT if it changes hands. Uploading either format replaces the whole list; Clear removes it and reopens the phase to the public.
What happens when someone shuffles
- The buyer clicks Shuffle on an active phase.
- downbad reads the NFTs still in the phase wallet, checks eligibility, and selects up to “assets to sign for limit” candidates for that buyer.
- It returns one self-contained atomic group per candidate (payment leg(s), the buyer's opt-in, and the phase wallet's NFT transfer). The buyer's wallet signs one group.
- The group is submitted and settles atomically — pay and receive, or nothing at all.
The phase wallet co-signs only the NFT transfer, which is grouped with the buyer-funded legs and can never be submitted on its own.
Fees
downbad takes its cut from the sale price itself — there's no separate listing or setup fee for running a shuffle.
- ALGO payment phases — the price splits 95% to your receiver address and 5% to downbad, settled inside the same atomic group as the NFT transfer.
- ASA / token payment phases — currently no platform fee; the full token amount goes to your receiver.
- Payment + Asset Transfer phases — the 5% platform fee applies to the ALGO portion only (95% to you); the ASA portion goes to your receiver in full.
Two small network costs sit alongside the price and are not downbad charges:
- Algorand network fees — the standard 0.001 ALGO per transaction in the buy group, a fraction of a cent in total.
- Asset opt-in MBR — 0.1 ALGO the buyer's account reserves to hold the new NFT. It's held by the network, not paid to anyone, and is returned if they ever opt out.
The trade-off: peeking is possible without a placeholder
The single most important thing to understand before running a shuffle: without placeholder metadata, every NFT in the pool is fully visible on-chain, and buyers can peek at what they'll receive before paying.
Why peeking happens on Algorand
On Algorand, NFTs are pre-minted before they're distributed — they exist on-chain, sitting in the shuffle wallet, before anyone buys. This is structurally different from Ethereum, where a drop typically mints at claim time so the artwork isn't known until after you commit. Because Algorand assets are pre-minted:
- Anyone can inspect the shuffle wallet's holdings and see every asset on offer.
- If the real metadata is already revealed, a buyer can preview the specific NFTs in the pool.
- downbad's selection is also deterministic and the buy transactions contain the real asset ids — so a buyer can work out, or simply inspect the returned transaction group to see, exactly which NFT they'd be handed.
The net effect is the same: someone can wait and only buy when they'd receive something rare. This is an accepted property of pre-minted shuffles, not a downbad bug.
The placeholder reveal strategy
The standard fix used by serious Algorand NFT projects is a placeholder reveal: don't put the final art in the pool — drop a mystery box and reveal afterward.
- Mint with placeholders — create every NFT with generic “mystery” artwork and metadata so they all look identical in the wallet.
- Run the shuffle on those placeholders — buyers receive a random one, and there is nothing to peek at because every asset is the same.
- Reveal after transfer — once an NFT has left the shuffle wallet, swap its metadata to the real art (using the ARC19 mutable-metadata standard), or airdrop the real NFTs to placeholder holders once the drop closes.
Best practices
- Use placeholder artwork — it's the industry standard for fair Algorand drops.
- Store the final artwork securely off-chain (e.g. on IPFS) until reveal.
- Do the metadata swap after transfer (via ARC19) for the genuine random experience collectors expect.
- If you skip placeholders, accept the trade-off knowingly: identical-looking items (same art, same rarity) are fine to drop directly, but mixed rarity you want kept secret needs the placeholder pattern.
Managing a live shuffle
- Pause / Play — instantly stops or resumes all buying across every phase without changing the schedule.
- Hide / Show — controls whether the shuffle appears publicly. Hide it to stage a drop before going live.
- Edit — change the shuffle's details, or any phase's settings, at any time (safe even mid-drop, as noted above).
- Delete — remove a phase or the whole shuffle. First pull every NFT and any ALGO back out of the phase wallets, since deleting drops your handle on them.
Recovering a phase wallet (reveal mnemonic)
To withdraw unsold NFTs or the leftover minimum-balance ALGO from a phase wallet, reveal its passphrase: on the phase, click Mnemonic. Because this hands over full control of the wallet, it's gated by a second confirmation — you sign a zero-ALGO transaction from the owner wallet to prove it's really you, then the 25-word passphrase is shown.
Import that passphrase into any Algorand wallet to move the remaining assets out. Store it securely and treat it like any other private key.
See also
Manage your drops from Creator Tools. For setting the royalties that apply to secondary sales of your collection, see royalties for creators.