Projects › Family › Secret Santa generator
Free Secret Santa generator, and how to make your own
Add everyone's names, keep couples apart, and press Draw. Each person gets their own private link to send by WhatsApp or text, so even the organiser doesn't know who got whom. No email, no sign-up, and nothing is sent anywhere. Then make your own with a free AI assistant.
Who's taking part?
3 to 50 people. You can paste a list too, one name per line or separated by commas.
Keep apart optional
For couples, or anyone who shouldn't draw each other.
Details optional
Names drawn
Send each person their own link. It only shows them who they're buying for, and the list below doesn't show you.
Pass one phone round. Each person taps their name, checks nobody is looking, then hides it again.
Names save in this browser only. The match is scrambled into each link so nobody sees it by accident. It isn't real security, just enough to stop peeking.
A name draw that works the way your group does
You'll describe the name picker to a free AI assistant, paste what it writes into a file, and open it in your browser. Then add your own rules and put it online so the links work for everyone.
- A list of names you can add to and remove from
- A fair random draw where nobody gets themselves
- Rules to keep couples or housemates from drawing each other
- A pass-the-phone mode for when you're all in the same room
- A private link for each person, with the budget, date and a message
- Names saved on your own device, with no emails or accounts
Good for: families sharing out Christmas presents, office and team gift swaps, groups of friends, and anyone who doesn't want to hand everyone's email address to a website.
What you need
Build it in six steps
Ask for the name picker
Copy this prompt into your AI assistant:
Copy this promptI don't know how to code. Please make me a Secret Santa name picker that runs in a web browser. Requirements: - ONE single HTML file (HTML, CSS and JavaScript together), no external libraries, no internet needed. I will save it and double-click it. - A box to type names, with an Add button (pressing Enter adds too). Show the names as a list with a small × to remove each one. Allow 3 to 50 people and don't allow the same name twice. - A big "Draw names" button that gives everyone one person to buy for. Nobody can get themselves, and everyone is bought for by exactly one person. Shuffle properly so it's random every time. - After the draw, don't show the results. Show a button for each name instead. When someone taps their name, ask "Are you Sam? Make sure nobody else is looking", then show who they're buying for, with a "Hide it and pass the phone on" button. Grey out names that have already looked. - Save the list of names in localStorage so it's still there next time. - A clean, festive design: deep red or dark green background, a cream card in the middle, and big buttons that are easy to tap on a phone. Please give me the complete file in one code block, then tell me in simple steps how to save and open it.
Copy the code, paste it into your text editor, and save it as secret-santa.html. Double-click it, add a few names and try a draw.
Keep couples apart
Copy this promptThat works, thank you. Please add a "Keep apart" section so I can stop certain people drawing each other, like couples or people who live together. - Two dropdowns of the names and a "Keep apart" button. Show each rule as "Sam and Alex won't draw each other", with a × to remove it. - When drawing, nobody gets themselves or anyone they're kept apart from. Keep trying, or backtrack, until it finds a valid draw, rather than giving up after one go. - If the rules make a draw impossible, don't freeze or loop forever. Show a clear message saying why, for example "Nobody is left for Sam to buy for. Try removing one of Sam's rules." - Save the rules with the names. Send me the complete updated file.
Always ask for the complete file. Replace everything in secret-santa.html, save, and refresh the tab (F5 or Cmd+R).Add the budget, date and a message
Copy this promptPlease add an optional "Details" section with a spending limit (free text, e.g. £20), the date we swap presents (a date picker), and a short message from the organiser (up to 140 characters). Show these on each person's card under the name they drew, for example "Spend up to £20" and "Swap presents on Friday 19 December". Leave out any that are blank. Save them with the names. Send me the complete updated file.
Give everyone a private link
This is the clever bit. Each person's result goes inside their own link, so you can send it by WhatsApp or text and nothing needs storing on a server.
Copy this promptNow I'd like to send each person their own private link instead of passing one phone round. Keep the pass-the-phone option as a second tab. - After the draw, list every name with a "Copy link" button and a "Share" button (use navigator.share where the phone supports it, otherwise hide Share). Add a "Copy all links as a list" button that copies each name with their link, one per line. - Put each person's result in the link itself, after a # sign: their name, who they're buying for, the budget, the date and the message, as JSON turned into base64. Make it work with accents and emoji in names. The list on screen must show only the givers' names, so I don't see who got whom. - Build the links from the page's own address (location.origin + location.pathname) so they still work when I put the page online. - When the page is opened with one of these links, hide everything else and show only that person's card: "Hi Sam, you're buying a present for..." and a big "Tap to reveal" button, then the name, budget, date and message. Add a small "Make your own Secret Santa" link that opens the page normally. Send me the complete updated file.
About the link: base64 isn't a lock. It just turns the name into a jumble of letters so nobody sees it by accident. That's plenty for Secret Santa.Make it festive and phone friendly
Copy this promptPlease give it a little more Christmas feel without making it busy: - A title at the top I can change: "[e.g. The Patel Family Secret Santa]" - A short unwrap or flip animation when the name is revealed, switched off if the phone is set to reduce motion - Make sure everything fits a phone screen without scrolling sideways, and the buttons are big enough to tap Send me the complete updated file.
Put it online so the links work
A link to a file on your own computer won't open on anyone else's phone. Put the page online for free first (see free hosting, about 10 minutes). Then open one link on your own phone to check it before you send the rest.
Copy this promptI'm putting this page online and sending the links by WhatsApp. Please set the page title to "Secret Santa" and add preview tags (og:title "Your Secret Santa" and og:description "Open this somewhere private!") so the link preview looks friendly and doesn't give anything away. Send me the complete updated file.
Quick fixes
The links don't open on other people's phones
The page is still a file on your computer. Put it online first (step 6), then draw again and send the new links.
It says the draw is impossible
Small groups run out of options quickly. With three people, keeping one couple apart leaves both of them only the third person to buy for. Remove a rule or add another person.
I want to be sure nobody can draw themselves
Ask the AI to test its own work:
Please add a hidden test: if the page address ends with ?test, run the draw 1,000 times with my current names and rules, and show how many draws gave someone themselves or someone they're kept apart from. It should be zero. Send me the complete file.
Names with accents or emoji come out as gibberish
Tell the AI: "Please turn the text into UTF-8 with TextEncoder before base64, and decode it the same way with TextDecoder." Ask for the complete file.
I closed the page and lost the links
Draw again and send everyone their new link. Ask them to ignore the old one. To avoid this, ask the AI to save the latest draw in localStorage too.
Twist it into something else
A fair, private draw is handy all year round. Change the first prompt to make:
An office gift swap with a wish list
everyone adds three gift ideas before the draw, and they show on their Secret Santa's card
A family draw across households
put people into households, and nobody draws someone they live with
A White Elephant order picker
shuffle who goes first in a Yankee swap, with a tick for each turn taken
A team picker for sports
split the names into fair random teams, with captains picked at random
A chore rota draw
draw who does which job each week, so nobody gets the same job twice in a row
A book club swap
everyone brings a book, and the draw says whose book you take home
No emails, no adverts, your rules
Most Secret Santa websites ask for everyone's email address before they'll draw a single name. Yours keeps the names on your own device and works the way your group does: the couple who swap presents anyway, the cousin who only comes every other year, the office that wants a wish list. It's also a neat little puzzle for the AI to solve, and you'll use it again every December.