Secret Santa Generator

Draw Secret Santa names instantly with exclusions, so nobody draws themselves or their partner.

Add at least two participants above to draw Secret Santa names.

The draw runs entirely in your browser. Nothing is uploaded, no email addresses are needed and no account is required — but that also means you see every match, so hand out the slips without peeking if you are playing too.

No uploads. Your files stay on your device.

Free forever, no sign-up, no cookies. Buy me a coffee

How it works

Paste your list of names, add any pairs that must not be matched — write a pair as Alice & Bob, one pair per line, with an ampersand, comma or dash between the two names, which is where couples, siblings and flatmates usually go — and the generator produces a derangement — a permutation in which nobody is assigned to themselves. It draws by rejection sampling: names are shuffled with a Fisher–Yates shuffle fed by your browser's cryptographic random number generator, and any shuffle that gives someone their own name or breaks an exclusion is thrown away and redrawn. If your exclusions are tight, a randomised backtracking search takes over and proves whether a valid draw exists at all, so you get either a genuine assignment or a clear "this is impossible" message instead of a silent failure. Every participant gives exactly one gift and receives exactly one gift. Copy the list, download it, or download printable slips to cut out and hand round. Everything happens locally in your browser — no signup, no email, no ads.

Frequently asked questions

How does the draw avoid self-assignment?

The generator produces a derangement — a permutation in which nobody maps to themselves — and re-rolls until every exclusion rule you added is also satisfied.

Can I stop couples drawing each other?

Yes. Add an exclusion pair and the draw will never assign either of them to the other.

Do participants need email addresses?

No. Everything happens in your browser and no message is sent anywhere, so you can print or hand out the results yourself.

Report a bug