Gift exchanges fail in predictable ways. The two most common are the same: somebody ends up drawing themselves, and somebody ends up drawing the person they already bought a present for last year.
Both are solvable, and the second only becomes solvable if you tell the tool in advance.
What the Assignment Does
The Secret Santa generator pairs everyone with exactly one other person. The matching is random, with two constraints enforced automatically:

Nobody draws themselves. This is a mathematical property — a permutation with no fixed points is called a derangement, and there is more than one way to build one, which is what the tool does.
Your exclusions are respected. Before generating you can mark pairs that must not happen: people who live together, a manager and their direct report, two people who would find it awkward. The generator retries until it produces an assignment that satisfies all of them.
Everything else is chance. That is the point.
Setting It Up
List everyone, one per line. Use full names — “Alex Chen” rather than “Alex”, because the tool cannot distinguish two Alexes and a duplicate is not a pairing anyone wants.
Add exclusions. This is the step people skip and it is the one that determines whether the outcome is usable. Common ones: partners and spouses, family members, the two people who always end up buying each other identical gifts, a manager paired with someone they assess.
Set a budget if you are running one. The budget is shown on the results and on the copied messages — it does not affect the matching, which is worth knowing if you were expecting it to.
Generate. When the tool reports it cannot satisfy every exclusion, that is a real signal rather than an error to retry. It usually means the constraints have boxed someone in — check whether someone has excluded everyone else, which makes any valid matching impossible.
Telling People
Copy slip produces a short message for one person, with the recipient and budget. Copy all produces the full list.
This is the awkward part of the whole exercise: someone has to distribute the results, and they can see every pairing. There is no per-person private link in the tool.
That is fine if everyone is known to each other and the fun is in the secrecy afterwards. It is a problem if the point is that a manager does not know who drew whom, in which case use a private message to each person, or run the draw without disclosing who operated it.
Say the assignments are final. This is the single most important thing to state up front, because the moment someone dislikes their pairing, the instinct to re-run it is overwhelming. Re-running turns a fair procedure into a search for a preferred outcome, and everybody can see it happen.
Practices That Make It Work
Do the exclusions first. A ten-minute conversation about who cannot be paired saves an argument in December.
Announce the rules before generating. Finality, budget, deadline for buying, and the date of the exchange.
Give a real deadline. People buy last-minute presents badly. Two weeks is the usual answer, and a stated date is what makes the exchange happen on the day rather than sliding.
Keep it a secret afterwards. The whole thing works because nobody knows. If the pairing is announced publicly on the day, the anticipation is gone and nobody is stressed about it.
When Random Is the Wrong Choice
When relationships carry weight. A family gift exchange among people who do not all get along is not helped by randomness. It removes your control over a pairing that mattered.
When you want to reward or thank someone specific. A draw cannot be nudged, and if you find yourself wanting to nudge it, you want a manual assignment.
For small groups you can pair well by hand. With four people, everyone can see every possible pairing, including the one you want to avoid. The tool saves the same three seconds it would take you to write it down.
When exclusions are impossible to satisfy. A group of three where two people exclude each other has no valid answer. The tool will tell you; the answer is to reconsider the constraint, not to keep retrying.
A Note on the Randomness
The matching uses the browser’s cryptographic random source rather than Math.random(), which is deterministic and can in principle be reconstructed to anticipate results. Where constraints apply, the generator shuffles and retries until it finds a valid arrangement — up to a bounded number of attempts, after which it reports failure rather than returning something that violates your exclusions.
The fairness page covers the mechanism.
That retry behaviour is worth knowing about: the matching is not a single uniform draw from all valid arrangements, because retrying favours arrangements that are easy to satisfy. For a gift exchange this is irrelevant — nobody can distinguish between arrangements. It would matter for a draw with a prize at stake, where the fair approach is a single draw from the valid set.
Running One
Write down the exclusions, generate, and immediately copy the slips into individual messages. Then say the word “final” out loud before anyone replies.
Ready? Open the Secret Santa generator and paste your list.