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 constructs a valid derangement directly rather than shuffling and hoping. That means the result is always usable on the first attempt, and it means the assignment 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 they do the tool says so rather than quietly producing something that violates them. Four people with three forbidden pairs between them may simply have no valid arrangement. The error is a real answer: remove a pair, or add a person.

Names in the forbidden list must match the participant list exactly. A trailing space or a different spelling means the constraint silently matches nobody and the pair you were trying to prevent can come up.

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. There is no way around that with a tool that prints the whole list, so plan for it: 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.

How do I share assignments privately?

Reveal the results one at a time and keep your screen turned away from others, so each person only sees their own match.

Is the draw private and random?

Yes. It's generated in your browser with the Web Crypto API for an unbiased result, 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.