Weighted Raffle Draw
Give each entrant a number of tickets and draw winners with odds proportional to the tickets they hold.
0 entrants · 0 tickets total · a line without a number counts as 1 ticket
Options
Processed on your device — nothing is sent anywhere.
How it works
- Enter one entrant per line in the format “name, tickets” — for example “Alice, 5”. A line without a number counts as one ticket.
- Check the live odds table to confirm each entrant’s tickets and win probability, then set how many winners to draw and whether one person can win more than once.
- Click Draw — winners are picked with cryptographic randomness, and you can copy the full results including the odds table.
Frequently asked questions
- How does a weighted raffle draw work?
- Every ticket is one equally likely slot in the draw, so an entrant’s chance of winning is their tickets divided by the total. Someone holding 10 of 100 tickets has exactly a 10% chance on a single draw. The tool picks a random ticket with the Web Crypto API and awards the win to whoever owns it.
- What is the difference between drawing with and without replacement?
- Without replacement, an entrant is removed from the pool after winning, so each prize goes to a different person — the usual setup for first, second and third prizes. With replacement, every draw uses the full pool again, so one entrant can win several prizes if their tickets come up more than once.
- Is the draw actually fair and random?
- Yes. The winner is selected with crypto.getRandomValues, the same cryptographically secure generator browsers use for encryption keys, with rejection sampling to remove modulo bias. Every ticket has an exactly equal probability, so the odds shown in the table are the true odds for a single draw.
- Can I use this for a giveaway where people earn extra entries?
- That is the main use case. Count each person’s earned entries — shares, referrals, purchases — and enter them as their ticket count, so someone with 5 entries is exactly 5 times more likely to win than someone with 1. For transparency, run the draw live or screen-record it and share the copied results.
- Is my entrant list uploaded or stored anywhere?
- No. Parsing, odds calculation and the draw itself all run as JavaScript in your browser — no entrant names or ticket counts are sent to any server, logged or stored. Closing the tab discards everything, which matters when the list contains customer or student names.
About this tool
This raffle ticket generator runs a weighted prize draw where entrants with more tickets have a proportionally higher chance of winning. Enter one line per entrant in the form “name, tickets”, and the tool immediately shows the total ticket count and a live odds table with each person’s exact win probability. Set how many winners you need, choose whether one entrant may win multiple prizes, and draw — the winners appear on screen and the full results can be copied with one click.
Everything happens locally in your browser. The draw treats every ticket as one slot: if 250 tickets are in play and Maya holds 25 of them, her chance on a single draw is exactly 10%. The winning ticket is chosen with crypto.getRandomValues from the Web Crypto API — a cryptographically secure generator — using rejection sampling so no ticket is favored by rounding artifacts. Because nothing is uploaded, entrant lists containing real names or emails never leave your device.
Typical uses include social media giveaways with bonus entries for shares or referrals, fundraiser raffles where people buy different numbers of tickets, loyalty draws weighted by purchases, classroom rewards weighted by participation points, and team prize draws at events. Drawing without replacement suits tiered prizes, since each winner is removed before the next draw; drawing with replacement suits a stack of identical prizes where holding many tickets should keep paying off.
A few practical tips. Decide the entry rules before collecting names so ticket counts are beyond dispute, and paste the final tally straight from your spreadsheet — the “name, tickets” format matches a two-column CSV export. Duplicate names are merged automatically with their tickets summed, so per-entry lists still produce correct odds. For public draws, announce the total ticket count from the table first, then draw live; the copied results give every participant the same numbers you saw.