Gift Exchange Feasibility Checker
Secret Santa rules get agreed in a group chat and tested on the night, which is the wrong order. Three people who can only draw one person between them is a problem that no amount of redrawing solves, and a hat cannot tell you that — it just fails at the end, in front of everyone. This checks first.
What this generator does
Answers whether a gift exchange with your rules can be drawn at all, without drawing it. Where it can, it reports how constrained things are — the fewest options anybody has, and how much of the theoretical freedom your rules leave — and warns when somebody's pairing is forced rather than drawn. Where it cannot, it names the specific group of people who between them have too few possible recipients, which is the difference between a fixable problem and a shrug.
How to use this tool
- Paste your participants, one per line, with an optional household after a comma.
- Add any exclusions — pairs who must not draw each other.
- Set how many previous years to avoid, if you have last year's results.
- Press Check — it says whether a valid draw exists, how tight the rules are, and who is blocking it if not.
Understanding the controls
- Participants
- One per line. Add a comma and a household name to group people who should not draw each other — 'Ana, Reid' and 'Ben, Reid' will never be paired together.
- Exclusions
- One pair per line, as two names separated by a comma. By default an exclusion works both ways, which is almost always what people mean; a one-way exclusion is available where it genuinely matters.
- Previous years
- Paste last year's pairings and choose how many years to avoid repeating. Each year you avoid removes one option from every participant, which is why a small group runs out of room after two or three.
Worked examples
- Comfortable
- Ten people, two households, no exclusions — every person has at least seven options.
- Tight but possible
- 'It will work, but Ana has only one option, so that pairing is fixed rather than drawn.'
- Impossible, and why
- 'Ana, Ben and Chi can only draw from Dev between them, so somebody must go without.'
- Years running out
- Four people avoiding two previous years leaves nobody with a legal option.
Common use cases
- Checking a set of exclusions before announcing the draw
- Working out which rule to drop when a group has over-constrained itself
- Seeing whether a household rule leaves enough room in a small family
- Confirming a no-repeat rule is still possible after several years
- Settling the annual argument about whether the rules are too fussy
How this generator works
Every rule is turned into a list of who each person is allowed to draw, and the question becomes whether a perfect matching exists between givers and receivers. That has an exact answer rather than a probabilistic one. Hall's theorem says a matching fails precisely when some set of givers collectively has fewer allowed recipients than there are people in the set, and that set can be found from a maximum matching by walking alternating paths from everybody who could not be matched. It is that set the checker reports, because 'these four can only draw from these three' is a sentence somebody can act on where 'no valid draw exists' is not.
Randomness and fairness
Nothing is drawn and nothing is random. The answer is a structural fact about your rules, so the same rules always give the same verdict — which is what makes it worth checking before you draw rather than after.
For how randomness is produced across the whole site, see how Generate Random works.
Assumptions this tool makes
- Everybody gives exactly one gift and receives exactly one, and nobody draws themselves.
- A household means nobody in it draws anybody else in it, in either direction.
Limitations and good to know
- It checks feasibility, not fairness. A draw can be possible and still feel lopsided — this says whether the rules work, not whether they are reasonable.
- It works on the rules you enter. A rule everybody assumes but nobody wrote down is invisible to it, and those are the ones that cause arguments.
- The blocking group it names is one valid explanation, not necessarily the only one. Fixing it may reveal a second constraint underneath.
- Names are matched exactly, so 'Ana' and 'ana' are two people. Check your list before reading an impossible result as real.
Common mistakes
- Adding exclusions one at a time until it breaks
- Add them all and check once. Constraints interact, and a set that fails is often fixable by removing a different exclusion from the one added last.
- Assuming a failure means somebody is stranded
- Usually nobody is. The common case is a group who each have options individually but share too few between them, which is invisible unless you look at the group as a whole.
- Avoiding too many previous years in a small group
- Each year avoided removes an option from everybody. With eight people, avoiding three years leaves four options each and gets tight fast — reduce the years before removing an exclusion somebody cares about.
Practical tips
- Run this before you announce the rules, not after somebody complains. Changing a rule in advance is administration; changing it after the draw is a row.
- If the freedom figure is low, add a person rather than removing a rule. One more participant loosens everybody at once.
- When it says a pairing is forced, tell the group. A draw that was never random is better admitted than discovered.
Troubleshooting
- It says impossible but everybody has options
- That is the group case, and it is the whole reason this exists. Look at the named people together: their combined list of possible recipients is smaller than the group, so however you assign them somebody is left out.
- Somebody appears twice
- Two identical names cannot be told apart when the results are handed out, so the checker refuses. Add a surname or an initial to distinguish them.
Privacy and your data
Participant names, households and exclusions are processed entirely in your browser. Nothing is uploaded, nothing is stored unless you ask for it, and nothing is written into the page address. Analytics records only that the checker ran and how many participants there were — never a name, a household or an exclusion.
Frequently asked questions
- Why not just try the draw and see?
- Because a failed draw does not tell you why. Redrawing an impossible set of rules fails every time and looks like bad luck, and people conclude the tool is broken rather than that the rules are. This gives the reason and names the people involved.
- What does the freedom figure mean?
- The share of all theoretically possible pairings that your rules still allow. A hundred per cent means no rules beyond 'nobody draws themselves'; a low figure means the draw has little room to vary, which is worth knowing before you claim it was random.
- Does this store my list?
- Not unless you ask it to. Everything runs in your browser, nothing is uploaded, and the list is not written into the page address. Any saving is opt-in, stays on your device, and can be cleared.
Related generators
- Secret Santa GeneratorDraw fair Secret Santa pairings with exclusions, so nobody draws themselves or an excluded partner.
- Christmas Gift Idea GeneratorA category of gift to consider, not a specific product — useful when you're stuck for where to start.
- Stocking Filler Idea GeneratorSmall, affordable ideas for the last few stocking gaps that always seem hardest to fill.