Assign every participant one different gift recipient while enforcing optional two-way exclusions.
The frame below runs the same code as this page, in the reader's own browser. Nothing is sent to us, and nothing is sent to you.
Pick a dark background and the text and panels follow it, so the frame stays readable on a dark page.
Each attempt shuffles the participant list into receiver positions and accepts the permutation only when nobody maps to themselves or an excluded partner. Invalid permutations are retried at most 500 times, which prevents impossible constraints from trapping the browser in an endless search.
Names: ["Ana","Ben","Cleo","Dan"] Exclusions: ["Ana, Ben"] Seed: office-2026
Ana -> Cleo Ben -> Dan Cleo -> Ana Dan -> Ben
Office exchanges map colleagues one to one, family draws exclude partners, and club organisers can rehearse constraints with a seed before making an unseeded private assignment.