Logo

MonoCalc

/

Secret Santa Generator

Random
One name per line (or comma-separated). Add an optional wishlist note with "Name: notes", e.g. Alice: loves board games

5 participants loaded.

One pair per line, e.g. Alice - Bob. These two will never be matched with each other (useful for couples or siblings).
Split participants into independent sub-exchanges of about this size. Leave at 0 for one shared exchange.
Same seed + same participants → same result

About This Tool

Secret Santa Generator – Fair, Random Gift Exchange Pairings

Organizing a Secret Santa or White Elephant exchange usually means someone scribbling names on paper slips, shaking a hat, and hoping nobody peeks. It also means manually re-drawing whenever a couple accidentally gets matched with each other. The Secret Santa Generator automates the whole process: paste your participant list, set any exclusion rules, and get a provably fair set of gift-giving assignments in seconds — no paper, no re-draws, no favoritism.

How the Derangement Algorithm Works

A valid Secret Santa assignment is mathematically known as a derangement — a shuffle of a group where nobody ends up matched to themselves. The generator runs a Fisher–Yates shuffleon your participant list using randomness sourced from the browser's crypto.getRandomValues() API, then checks the result for self-matches and any excluded pairs. If the shuffle fails either check, it reshuffles and tries again — up to 1,000 attempts — until it finds an arrangement that satisfies every rule.

Handling Exclusion Rules

Couples, siblings, or roommates who already exchange gifts directly usually shouldn't be paired together in an office or family Secret Santa. Add each pair on its own line (for example Alice - Bob) and the generator treats every exclusion as a hard constraint — it will never produce a result where an excluded pair is matched, no matter how many reshuffles it takes.

When exclusions make a match impossible
If your exclusion rules are too strict relative to the group size — for example, excluding most of a five-person group from each other — no valid derangement may exist. The generator warns you after 1,000 failed attempts so you can relax a rule instead of waiting indefinitely.

Wishlists, Budgets, and Groups

Append a wishlist note to any participant using the Name: notes format, e.g. Alice: loves board games, and it automatically appears next to that person's assignment so their Secret Santa knows what to buy. Set an optional Budget Limit and currency to display a spending guideline alongside the results, and use Group Size to randomly split a large office or family into several smaller sub-exchanges that each run independently.

Organizer View vs. Individual Reveal

Organizer View lists every giver-to-recipient assignment at once — ideal if one trusted person is running the exchange privately. Individual Revealinstead hides every match behind its own click-to-open card, so the whole group can gather around one screen (or a shared printout) and each person opens only their own card without spoiling anyone else's surprise.

Exporting Your Results

Once a valid exchange is generated, use Copy to place the full list on your clipboard, or Download to save it as a .txt or .csv file for emailing to participants or importing into a spreadsheet. Click Reshuffle at any time to draw a brand-new arrangement from the same participant list and rules.

Accuracy and privacy
All parsing, shuffling, and validation run entirely in your browser — participant names, wishlists, and budgets are never uploaded to a server. The tool supports up to 500 participants, split however many sub-groups you need.

Whether you're organizing an office holiday party, a family exchange with a few couples to keep apart, or a recurring friend-group gift swap, the Secret Santa Generator turns a manual, error-prone process into one that's fast, fair, and easy to trust.

Frequently Asked Questions

Is the Secret Santa Generator free?

Yes, Secret Santa Generator is totally free :)

Can I use the Secret Santa Generator offline?

Yes, you can install the webapp as PWA.

Is it safe to use Secret Santa Generator?

Yes, any data related to Secret Santa Generator only stored in your browser (if storage required). You can simply clear browser cache to clear all the stored data. We do not store any data on server.

How does the Secret Santa Generator work?

Enter your participants, then click Generate. The tool computes a random derangement — a shuffle of the group where every giver is assigned a different recipient, nobody is ever assigned to gift themselves, and any exclusion pairs you set (like couples or siblings) are never matched together.

Can I stop two specific people from being matched?

Yes. Add exclusion pairs (one per line, e.g. "Alice - Bob") for anyone who shouldn't gift each other, such as spouses or siblings who already exchange gifts directly. The generator retries automatically until it finds a valid arrangement that respects every exclusion.

What if my exclusion rules make a valid match impossible?

The generator retries up to 1,000 times before giving up. If no valid assignment can be found — usually because there are too many exclusions relative to the group size — it shows a warning so you can remove or relax a rule and try again.

What's the difference between Organizer View and Individual Reveal?

Organizer View shows the full giver-to-recipient list at once, useful if one person is running the exchange privately. Individual Reveal hides every match behind a click-to-open card per participant, so you can share your screen or a printout without spoiling anyone else's assignment.

Can I split a large group into smaller exchanges?

Yes. Set a group size greater than zero and the tool will randomly split your participants into sub-groups of roughly that size, then run an independent Secret Santa exchange within each sub-group.

Is my participant list stored anywhere?

No. Everything — parsing, randomization, and results — runs entirely in your browser using the Web Crypto API. Names, wishlists, and budgets are never sent to a server.