Skip to content
Party & family Free · Private

Secret Santa Generator

Random gift exchange with no self-picks.

Built and maintained by Paul Clark, Redmoon Software · Last checked

Run a fair Secret Santa draw where no one ever pulls their own name. Add your group, optionally block couples or roommates from matching, and reveal each assignment privately one card at a time — perfect for office parties, families, and friend groups who want the surprise kept intact.

Add. Enter everyone's name, one per line.

0 items

Options

Click Draw Secret Santa to see a result.

Recent results
  • No history yet.

How it works

  1. Add. Enter everyone's name, one per line.
  2. Exclude. List any forbidden pairs in the Options panel to block couples or roommates.
  3. Draw. Click "Draw Secret Santa," then reveal each assignment privately.

About the Secret Santa Generator

Why this is not a shuffle

Drawing names from a hat and assigning gifts are different operations, and the difference is the reason this tool exists. What you need is a derangement: an arrangement where every person gives to exactly one other person, receives from exactly one other person, and nobody draws themselves. A plain shuffle satisfies none of those guarantees — it will hand somebody their own name roughly once in every group.

The tool shuffles the list and checks the result, discarding any shuffle where someone draws themselves or a forbidden pair, and tries again — up to two thousand times — so what it shows you has already passed those checks. Every valid result forms one or more closed loops: follow the chain of who-gives-to-whom and you always come back to where you started.

Forbidden pairs, and when they become impossible

The Forbidden pairs box takes one pair per line, two names separated by a comma. Each pair is treated as mutually excluded — writing Ana, Ben stops Ana drawing Ben and stops Ben drawing Ana, which is almost always what you want for couples and housemates who already buy for each other.

Constraints can make an assignment impossible, and when the tool cannot find a valid one it says so rather than quietly producing something that violates them. Four people with three forbidden pairs between them may simply have no valid arrangement. For groups of up to ten, a failed random search is followed by an exhaustive one, so when the tool says no valid assignment exists, none does. Larger groups rely on the random search alone, so there the message says it could not find one — an extremely tight set of constraints can fail even when an arrangement exists. The fix is the same either way: remove a pair, or add a person.

Names in the forbidden list must match the participant list, but capital letters and spaces around the names are ignored — alex, sam blocks Alex and Sam. A different spelling, though, matches nobody, and the pair you were trying to prevent can come up. Each name in the list must also be unique; the tool refuses to draw if the same name appears twice.

Running it without seeing the results

The obvious problem with an organiser running the draw is that the organiser sees every assignment, which spoils the surprise for exactly one person — them. Each result appears as a card with its own Reveal button, so on a shared screen you can pass the device round and let each person uncover only their own. But the Recent results panel, Copy and Export CSV all contain the whole list, so whoever handles those sees everything: either accept that the organiser knows, or have someone outside the exchange run it.

Setting a Seed makes the draw reproducible, which matters if the list needs regenerating later — someone deletes their message, or a name was misspelled. Same list, same seed, same assignment. Without one, re-running gives an entirely different set and anyone who already knows their recipient now has the wrong one.

Export the CSV before you send anything. It is the difference between messaging fifteen people once and trying to reconstruct who had whom.

Frequently asked questions

Will anyone draw themselves?

No. The tool computes a derangement — a shuffle where no one maps to themselves — so every gifter draws someone else.

How do I prevent couples drawing each other?

Add a line under "Forbidden pairs" like "Alex,Sam". Both directions are excluded automatically, and capital letters and extra spaces don't matter.

How do I share assignments privately?

Each assignment appears as a card with its own Reveal button, so you can pass the screen around and let each person reveal only their own match. Keep the Recent results panel closed: it lists every pairing, as do Copy and Export CSV.

Is the draw private and random?

Yes. It's generated in your browser with the Web Crypto API for an unbiased result (or reproducibly, if you set a Seed), and your names are never sent to a server.

Related randomizers

Further reading

Send feedback

Found a bug, want a feature, or just say hi? Send it our way.