Gift exchange matcher

Draw a recipient for everyone, with room for the pairings you need to avoid.

2–60 distinct names, up to 60 characters each. Use a distinguishing initial when people share a name.

Settings and five recent runs stay in this browser.

Latest result

Ready when you are

Draw a recipient for everyone, with room for the pairings you need to avoid.

Clear recent runs?

This clears the current result and recent runs on this device. Undo can restore them while this page is open.

How it works

  1. Enter distinct participant names. In Settings, add any giver | recipient pairs that must not be matched.
  2. Match participants. Choose a giver and reveal their recipient; hide it before passing the device.
  3. The organizer can show, copy or export all assignments. Tell participants their matches yourself; RandJoy does not send messages.

A valid assignment, with clear limits

Every person gives once and receives once, with no self-match. A randomized matching search respects directed exclusions and reports when no complete assignment exists. It does not sample all possible valid assignments uniformly. Local reveal only hides the display: anyone with access to this browser can reveal the full list. This page does not provide private links or secure delivery.

Your inputs stay with you

Your inputs and generated results stay in this browser. Settings and five recent runs use local storage; clearing browser data removes them. Export a copy to keep it. Hosting may record standard page-request logs, but generated rows and participant names are not sent to the server.

What if the exclusions make a draw impossible?

The tool leaves the previous result in place and asks you to relax an exclusion or change the participant list. For example, with two people, blocking either person from giving to the other leaves no valid match. Exported organizer lists contain every assignment.

Privacy settings

Choose whether this browser allows optional Google Analytics. We remember your preference for up to 180 days. You can change it here at any time.

Optional analytics is not enabled on this site. No Google Analytics tag is loaded.