GenerateRandomSearch

Gift Exchange Draw Generator

A gift draw done by pulling names from a hat has two failure modes: somebody draws themselves, and a couple draw each other and quietly buy their own presents. This does the draw properly — a derangement that honours whatever exclusions you set, optionally arranged as a single chain through everyone — and then re-checks every rule on the finished result rather than trusting how it was made.

What this generator does

Shuffles until it finds a draw where nobody has themselves and no excluded pair is matched. With the single-chain option it builds one cycle through everybody instead, which rules out mutual pairs by construction.

How to use this tool

  1. Enter everyone's name, one per line.
  2. Add any pairs who should not draw each other.
  3. Leave the single-chain option on to avoid mutual pairs.
  4. Draw, and copy the result — or draw again if you were watching.

Understanding the controls

Names
One per line or separated by commas, between 3 and 40 people. They never leave your browser.
Exclusions
One pair per line, separated by a comma. Useful for partners and housemates who would rather not draw each other.
Single chain
On by default. It means the draw forms one loop through everybody, so no two people are buying only for each other.
Seed
Reproduces the same draw. Fine for trying the tool out and a poor idea for a real draw, since anyone with the seed can work out the whole thing.

Common use cases

  • Running a Secret Santa where partners should not draw each other
  • Arranging an office gift exchange without anyone drawing themselves
  • Setting up a book or plant swap with the same rules
  • Making a draw that forms one chain rather than a set of pairs
  • Producing the actual draw once the feasibility checker says the rules work

How this generator works

A plain shuffle gives a random pairing; the tool keeps shuffling until it finds one where nobody has themselves and no exclusion is broken. The single-chain option instead shuffles the names into an order and has each person buy for the next, wrapping at the end — one cycle through everybody, which cannot contain a mutual pair. Before display the finished draw is re-checked: everyone gives once and receives once, nobody has themselves, every exclusion is honoured, and a single chain is confirmed to visit all the names before returning to the start.

Randomness and fairness

Uses your browser's cryptographic random source by default. A seed switches to a reproducible sequence, which is deterministic and not cryptographically secure — do not use a seed for a draw that is meant to stay secret.

For how randomness is produced across the whole site, see how Generate Random works.

Limitations and good to know

  • With many exclusions on a small group there may be no valid draw at all, in which case the tool says so rather than quietly dropping a rule.
  • Nobody has to run the draw without looking: the secret santa generator draws the same way and reveals one person's name at a time, so each person sees only their own. What is still not done here is sending the results out — for that you need a service that emails each participant separately.
  • Exclusions are symmetric: naming a pair stops the draw in both directions.
  • Wish lists, budgets and reminders are outside what a draw does.

Privacy and your data

Names and exclusions stay in your browser. Nothing is uploaded, no draw is stored, and no name is ever included in analytics — only the number of people.