Skip to content

Secret Santa

A gift exchange with exclusions, individual reveal links, and less organising.

ToolsLive

Add the group, exclude pairs such as partners, and include the budget, date, or theme. Secret Santa assigns each person someone to buy for and creates individual reveal links to share. If the exclusions leave no valid draw, it asks you to change them.

Each participant opens their own link to reveal who they are buying for. The interface supports English and Spanish. The accompanying article follows the earlier versions and explains how the tool finds a valid draw.

Highlights

  • Exclude pairs from being matched
  • Share individual assignment links
  • Organise in English or Spanish

From names to gifts

  • Set the rules

    Add the group and exclude partners or other pairs. Include the budget, date, and any instructions.

  • Make the draw

    Find an exchange that respects every excluded pair, or explain when the rules leave no possible draw.

  • Share the reveal

    Give each participant their own link so they can find out who to buy for.

Organising the whole exchange

A Secret Santa draw starts with names, but the organiser also has to remember who should not be paired, communicate the budget, and make sure everyone receives the right instructions. The tool puts those decisions into one setup flow, before anybody discovers who they are buying for.

The organiser adds the group, marks excluded pairs such as partners, and writes the date, budget, or theme. After the draw, individual reveal links give each participant a small page with their assignment and the shared instructions. English and Spanish are supported throughout, so the setup and the reveal can use the language that suits the group.

A draw with rules

The matching problem is more involved than shuffling names. Everyone must give to one person and receive from one person, with self-matches and excluded pairs ruled out. The implementation tries randomised assignments and backtracks when a choice leaves somebody with no valid recipient.

Excluding a pair works in both directions. A heavily constrained group can have no possible draw, even when individual exclusions seem reasonable. In that case the tool reports the problem and asks the organiser to loosen the constraints. A valid result respects the entered rules; it does not quietly discard one to finish the job.

Links that are easy to share

The first version carried game data inside URL tokens. Larger groups made those links unwieldy in messaging apps, and the embedded data could be decoded. Moving the game behind a short identifier made sharing simpler and separated the participant's reveal from the full exchange.

The current version uses a Cloudflare Worker and KV for new games, following an earlier AWS implementation. Participant links retrieve the recipient and instructions they need. The reveal is a deliberate button press, with the browser remembering that it has been opened. Building the exchange meant following the task all the way from a constrained draw to the moment a person knows what to do next.

Related writing