Home› Sharing & Collaboration› Secret Santa Generator

Secret Santa Generator

Draw the names, keep couples apart, and hand every player a private link that reveals only their own match. No sign-ups, no email addresses, no spoilers for the organiser.

Organiser

Set up the draw

Two people is the minimum. Use nicknames or initials if two players share a first name.
Nobody on a line can draw anyone else on that line — perfect for couples, siblings, or a whole household. Put three or more names on a line to keep a bigger group apart.
Free text — it rides along on every private link.
Secret Santa draw
—
Add names above to get started.
Participants
0
Exclusion rules
None
Budget
—
Exchange date
—

Private reveal links

Send each person their own link and nothing else. Opening it shows one name — theirs.

The organiser link carries the entire draw, so keep that one to yourself — it is for moving between your own devices, not for the group chat.

How to run your Secret Santa

1. Type the guest list

One name per line. Nicknames work better than formal names here — every participant has to recognise themselves in a single line of text with no other context.

2. Add the rules that matter

Most groups have at least one pair that should not be matched: partners who already buy for each other, siblings in the same house, the two people who swapped last year. Put each pair on its own exclusion line and the draw works around them.

3. Draw, then hand out the links

Hit Draw names. Every participant gets a private link containing only their own match. Copy them one at a time, or grab the whole block and paste it into the group chat — each person opens the line with their name on it and sees nothing else.

4. Keep the budget and the date on the card

Whatever you type in the budget and date boxes travels with every link, so the reveal card answers the two questions people always ask straight after "who did I get?".

Secret Santa FAQs

How do the private reveal links work?

Each person gets their own link, and that one assignment is encoded inside the link itself. Opening it shows a single name — the person they are buying for — and nothing else about the draw. The links are built in your browser, so no email addresses are collected and nothing about the assignment is sent to a server.

Can I stop couples from drawing each other?

Yes. Put one exclusion per line, such as "Alice, Ben". Nobody named on a line can draw anyone else named on that same line, so couples, siblings, or people who already swap gifts stay apart. A line can hold more than two names if a whole household should be kept separate.

What happens if the exclusions make a draw impossible?

The generator shuffles up to 2,000 times, then switches to an exhaustive search. If no valid arrangement exists at all — for example two people who exclude each other are the only participants — it says so plainly instead of spinning forever, and points at the rule that has to give.

Does anyone draw their own name?

Never. The draw is a derangement: every participant gives one gift, receives one gift, and no one is ever matched with themselves. That is checked before any link is generated.

Can the organiser take part in the draw?

Yes. Assignments stay hidden on the organiser's screen unless the spoiler switch is flipped, so you can join your own exchange. Be honest with yourself though: the whole draw lives in the organiser's browser, so anyone determined to peek can. For a completely blind draw, ask someone outside the exchange to run it.

How random is the draw?

Names are shuffled with a Fisher-Yates shuffle driven by crypto.getRandomValues, the browser's cryptographic random number generator, falling back to Math.random on very old browsers. Re-drawing produces a completely fresh set of matches.

Where is my draw stored?

In this browser, so it is still here when you come back. Nothing is uploaded unless you press the organiser link button, which saves the draw behind an unguessable key so you can reopen it on another device — anonymous links last 30 days, or 2 years when you are signed in.