Random & Generators

Secret Santa Generator

Enter everyone's names, add couples or anyone who should not draw each other, and get a fair draw in which nobody gets themselves. Share a private reveal link with each person or print cut-out slips.

Free, runs in your browserUpdated October 2026No sign-up, nothing stored

"Alex & Sam" means neither draws the other. "Alex > Sam" means only Alex cannot draw Sam.

Download slips
Draw complete
–

Participants–
Possible valid draws–

Links carry the pairing inside the link itself, lightly scrambled, so nothing is stored online. Anyone who opens a link sees only that person's match. No emails are sent.

Secret Santa generator diagram: names and exclusions become a fair draw with no self-matches
How the Secret Santa Generator works: Fair Secret Santa draws with exclusions, private reveal links and printable slips.

How to Use the Secret Santa Generator

How to use the Secret Santa generator: enter names and exclusions, draw, then share private links
Numbered steps on the Secret Santa Generator. Follow them in order.
  1. Type every participant's name on its own line.
  2. Add couples or pairs who should not draw each other.
  3. Press Draw names for a fair draw.
  4. Copy each person's private link or print slips to share matches.

Type every participant's name on its own line. Add exclusions for people who should not draw each other, such as couples or roommates who already exchange gifts, one pair per line. Fill in the event name, budget and date, then press Draw names. The draw guarantees that nobody gets their own name and that every exclusion is respected.

Next, send each person their match. Press Copy link next to a name and paste it into a private message to that person. When they open it, they see a greeting and tap to reveal who they are buying for, with the budget and date. Use Preview to check what they will see. Prefer paper? Press Print slips for cut-out slips, or Download slips for a text file. If you are taking part yourself, leave the organizer box unticked so the pairs stay a surprise.

How the Fair Draw Works

The generator treats the draw as a matching problem. Each giver has a list of allowed receivers: everyone except themselves and anyone excluded. It shuffles the names with your browser's cryptographic random source and keeps the shuffle only if every giver landed on an allowed receiver, repeating until one fits. That makes every valid draw equally likely. If the exclusions are very tight, it switches to a step-by-step search, so it always finds a valid draw when one exists and never gets stuck the way pulling names from a hat can.

valid draw = every giver → a different receiver, giver ≠ receiver, no excluded pair

Worked example: with 6 people and no exclusions there are 265 valid draws, the number of ways to shuffle 6 names so none lands on its owner. Adding the couple "Alex & Sam" removes the draws where either picks the other, leaving 168. Ticking No swaps, so no two people simply buy for each other, leaves 96. The tool counts these for you under Possible valid draws.

PeopleValid draws, no exclusions
32
49
544
6265
814,833
101,334,961

Writing Exclusions

  • Two-way: "Alex & Sam", "Alex + Sam", "Alex, Sam" or "Alex and Sam" means neither draws the other.
  • One-way: "Alex > Sam" means Alex cannot draw Sam, but Sam may still draw Alex.
  • Names must match the list, ignoring capital letters. If two people share a first name, add a last initial to both.
  • Too many exclusions can make a draw impossible. With three people where one person is excluded from both others, no valid draw exists, and the tool tells you.

Privacy and Limits

Everything runs in your browser. There is no account, nothing is stored on a server, and no emails or texts are sent. Each reveal link carries that one pairing inside the link itself, lightly scrambled so it is not readable at a glance. It is not encryption, so share links one to one rather than in a group chat. If you lose the links, simply draw again and resend them.

Tips for a Smooth Gift Exchange

  • Agree on a clear budget and put it in the event details so every link shows it.
  • Ask everyone for a short wish list or a few likes to make shopping easier.
  • Set the exchange date early, especially for remote teams who need to ship gifts.
  • For a remote office, collect addresses separately and share them only with each giver.

Running a Remote or Office Exchange

For teams spread across locations, send each link through a private chat or direct message, never in a shared channel. Ask people to reply with a thumbs up once they have opened their link, so you know everyone has a match without seeing it. If someone drops out after the draw, run a new draw rather than patching the old one, because a single change can leave another person without a match.

Frequently asked questions

How does a Secret Santa generator work?

You enter everyone's names, and the generator assigns each person someone else to buy a gift for. No one gets themselves, and everyone gives and receives exactly one gift.

Can I stop couples from drawing each other?

Yes. Add an exclusion line such as "Alex & Sam" and neither will draw the other. Use "Alex > Sam" to block one direction only, which is handy when one person already buys for the other.

How do people find out who they got?

Copy each person's private link and send it to them directly. When they open it, they tap to reveal their match along with the budget and date. You can also print cut-out slips.

Can the organizer take part without knowing the pairs?

Yes. Leave Show who has whom unticked, send the links without previewing them, and the organizer only learns their own match from their own link.

Is my Secret Santa list stored anywhere?

No. The draw runs entirely in your browser and nothing is saved or emailed. Each link carries just one pairing, lightly scrambled, so share links privately.

Why does it say no valid draw exists?

Your exclusions leave someone with no possible receiver, or leave two people competing for the same one. Remove an exclusion, untick No swaps, or add more participants.