Spin the Wheel of Names – Free Random Name Picker Tool
Simply enter a list of names and spin the wheel to pick a random name.
Transform your raffles, drawings, and selections with our professional-grade wheel of names. Trusted by educators, marketers, and event organizers worldwide.
Enterprise Level Features For All Use Cases
🎯 Smart Name Selection
- Animated spinning name wheel with customizable duration (1-15 seconds)
- Multi-winner selection (pick multiple winners at once)
- Weighted entries: assign different weights to adjust win probability (Pro plan)
- Teams Mode: organize names into teams and spin to pick a winning team
- Countdown Timer: auto-spin after 3-60 second countdown (perfect for live events)
- Prevent duplicate winners (automatically removes each winner from the wheel)
- Winner export (download as CSV/PDF, copy to clipboard)
- Keyboard shortcuts (Spacebar to spin, Shift+C for countdown timer, Enter to confirm, Esc to close)
- CSV file upload for bulk imports (can handle millions of names per wheel of names)
- Manual entry with duplicate detection and removal
- Sort names alphabetically with one click
- Data import for automated entry management
🎨 Complete Customization
- 1,018 Google Fonts for wheel text (Pro plan)
- 40 pre-designed color themes (Vibrant, Pastels, Rainbow, Neon, Ocean, Sunset, and more)
- Custom color picker for individual segments
- Custom text & background colors (Pro plan)
- Background images & color overlays for branded experiences (Pro plan)
- Center button customization: text, background color & text color (Pro plan)
- Needle customization: 4 styles (Classic, Modern, Arrow, Pointer) with custom colors (Pro plan)
- Wheel title & description fields for context
- Adjustable spin speed and easing animations
- 7 professional sound effects with volume control
🏆 Winner Management
- Automatic winner tracking and history
- Dedicated winners page with shareable links
- Winner Certificate: downloadable PDF proof of fair selection (Pro plan)
- Export winners to CSV for record keeping
- Remove winners from the pool after selection
- Bulk winner actions (clear all, reset, export)
💼 Professional Features
- Save unlimited wheels to your account dashboard
- Full-screen presentation mode (Live Mode) to spin the wheel for audience engagement
- Embed wheels on your website with a simple code snippet
- Customizable winner display fields for detailed winner information
- Real-time sync across devices for seamless management
- Share wheels and collaborate with team members
🎉 Visual Effects
- Confetti celebration animation for winners
- Customizable applause and cheering sounds
- Professional display options for presentations
- Volume control for all audio effects
📊 Advanced Capabilities
- Real-time sync across devices
- Automatic save with browser storage backup
- Public sharing for winners page
- Mobile-responsive design for all devices
- Offline capability with local storage
🔌 API Integration
- RESTful API for programmatic access (Pro plan)
- Create, update, and delete wheels via API
- Trigger spins and retrieve winner data programmatically
- Real-time webhook notifications (coming soon)
- Comprehensive API documentation with code examples
- Support for JavaScript, Python, PHP, Ruby, Go, and cURL
- Rate limiting: 1000 requests/hour (Pro), 10000/hour (Business), 50000/hour (Scale)
- API key management with security controls
- OAuth 2.0 authentication support
- Ideal for automation, custom integrations, and third-party apps
🤖 Wheel Picker Discord Bot
- Spin wheels directly in your Discord server
- /spin members - Pick from server members (filter by role)
- /spin custom - Spin with your own comma-separated entries
- /spin reactions - Pick from users who reacted to a message
- /spin voice - Pick from members in a voice channel
- Animated GIF wheel spins displayed in Discord
- 5 color themes: Uplup, Vibrant, Pastel, Sunset, Ocean
- Self-hosted and open source on GitHub
- Optional Uplup API integration for saved wheels
- Perfect for community raffles and game nights
Total Usage
(past 24h)
(past 24h)
(past 24h)
Join hundreds of thousands making random selections fair and fun! 🎡
🎉 Free to use, no ads, generous limits - upgrade as you grow!
Scale as You Grow
From 100 names (Free) to 1 million names (Pro $29/mo)
CSV Upload
Import names from CSV files instantly
Custom Backgrounds
Upload your own background images
Save Unlimited Wheels
Create and save as many wheels as you need
Share Results
Share winner pages with anyone
Full History
Access complete spin history forever
API Access
Programmatic control with REST API (Pro+)
API Keys
Secure authentication for your integrations
Wheel Picker Discord Bot
Spin wheels directly in your Discord server
Simple Pricing
Free
- 100 names per wheel
- 3 saved wheels
- Multi-winner selection (up to 10)
- 2 teams (team mode)
- Countdown Timer (auto-spin)
- Prevent duplicate winners
- Winner export (CSV/PDF)
- Embed wheel on your website
- Wheel Picker Discord bot integration
- No ads, no credit card
Pro
- 1 million names per wheel
- Unlimited saved wheels
- Unlimited spins & winners
- Multi-winner selection (up to 50)
- Weighted entries (adjust win probability)
- Result certificates (proof of fair selection)
- Unlimited teams (team mode)
- Countdown Timer (auto-spin)
- CSV upload (up to 50MB)
- Custom backgrounds & fonts
- Embed wheel on your website
- Full REST API access
Need forms or quizzes? View all plans
Trusted by 10,000+ Leading Companies
Join industry leaders who use Uplup to engage millions of users worldwide
Perfect for Every Occasion
Education
Business
Events
Gaming & Streaming
Social Media Drawings
Holiday & Family
Charity Raffles
Sports & Teams
Restaurants & Retail
Decision Making
Real Estate & Auctions
Virtually Anything!
API for Developers
23 REST API endpoints to create wheels, manage entries, record spins, track winners, customize appearance, and embed wheels programmatically
Quick Start
Code examples in JavaScript, Python, PHP, cURL, Ruby, and Go. Bearer token auth.
Full Control
Create, spin, clone, archive, embed. Manage entries, settings, and appearance.
Analytics & Security
Spin stats, winner history, audit logs. Encrypted keys with scoped permissions.
Discord Bot Integration
Spin wheels directly in your Discord server with animated GIFs
Animated Spins
Watch the wheel spin in real-time with animated GIFs right in Discord.
Server Members
Spin with server members, roles, voice channel users, or reactions.
Quick Drawings
Run reaction-based drawings with transparent winner selection.
Self-hosted bot with optional Uplup API integration for saved wheels
Frequently Asked Questions
Everything you need to know about our Random Name Picker tool
Getting Started
(4 questions)What is a Random Name Picker?
Is the Random Name Picker really free?
How do I import names quickly?
Can I save my wheels for later?
Features & Customization
(10 questions)What customization options are available?
How does the Winners Page work?
Can I track selection history and analytics?
How does data import work?
How does CSV upload work?
What is Weighted Entries and how does it work?
What is Teams Mode?
How does the Countdown Timer feature work?
Can I embed the wheel on my website?
What is the Winner Certificate feature?
Winner Selection Process
(Technical Documentation)The Random Name Picker wheel uses a fully client-side, transparent, and auditable winner selection process. This documentation details exactly how winners are selected to ensure complete fairness and transparency.
Table of Contents
1. Core Principles
All Names Included
Every single name in your list has an equal chance of being selected, regardless of how many names are displayed on the wheel.
Client-Side Selection
Winner selection happens entirely in your browser using cryptographically secure random number generation.
Verifiable Process
The selection algorithm is open, auditable, and can be independently verified.
2. Technical Implementation
The winner selection uses the Web Crypto API's crypto.getRandomValues()function, which provides cryptographically strong random values suitable for cryptographic operations.
Random Number Generation
// Cryptographically secure random selection
function selectWinner(allNames) {
// Generate random value using Web Crypto API
const array = new Uint32Array(1);
crypto.getRandomValues(array);
// Convert to index in the full list
const randomValue = array[0] / (0xffffffff + 1);
const winnerIndex = Math.floor(randomValue * allNames.length);
return allNames[winnerIndex];
}3. The 250 Name Display Limit
For performance reasons, the wheel displays a maximum of 250 segments. However, this is purely visual and does not affect the selection process.
How Large Lists Work
// Example with 10,000 names
const allNames = [...]; // Full list of 10,000 names
const displayNames = allNames.slice(0, 250); // Only 250 shown on wheel
// Winner selection uses ALL names
const winner = selectFromFullList(allNames); // Selects from all 10,000
// After selection, update display
const winnerSegment = displayNames.includes(winner)
? displayNames.indexOf(winner)
: addWinnerToDisplay(winner);Visual Representation
- • If the winner is in the first 250 names: The wheel spins to that segment
- • If the winner is beyond 250: The winner is temporarily added to the wheel for visual display
- • The segment shows the actual winner's name, maintaining complete transparency
4. Step-by-Step Selection Process
Load Complete List
All names are loaded into memory, regardless of quantity.
// Load all names from database or input
const allNames = await loadAllNames(); // Could be 10, 100, or 100,000+ names
console.log(`Total names loaded: ${allNames.length}`);Determine Spin Duration
Duration is intelligently scaled based on user preference and list size.
// Duration scales with both preference and list size
const durationSettings = {
short: { baseMin: 2, baseMax: 4, scaleMin: 0.5, scaleMax: 0.75, cap: 7 },
normal: { baseMin: 3, baseMax: 8, scaleMin: 0.5, scaleMax: 1, cap: 12 },
long: { baseMin: 15, baseMax: 20, scaleMin: 1, scaleMax: 2.5, cap: 30 }
};
// Scale based on number of names (capped at 4000+)
const scaleFactor = Math.min(names.length / 1000, 4);
const minDuration = (setting.baseMin + scaleFactor * setting.scaleMin) * 1000;
const maxDuration = Math.min(setting.baseMax + scaleFactor * setting.scaleMax, setting.cap) * 1000;
// Examples for 5000 names:
// Short: 3.5-7 seconds | Normal: 5-12 seconds | Long: 20-30 secondsGenerate Random Values
Multiple cryptographically secure random values are generated for duration and winner selection.
// Use Web Crypto API for all randomness
const array = new Uint32Array(2);
crypto.getRandomValues(array);
// First value: Determine exact spin duration within range
const randomDurationMs = minDuration + ((array[0] / 0xFFFFFFFF) * (maxDuration - minDuration));
// Second value: Will be used for winner selection
const randomValue = array[1] / (0xffffffff + 1); // Value between 0 and 1Select Winner
The random number determines which name from the full list wins.
// Select winner from complete list
const winnerIndex = Math.floor(randomValue * allNames.length);
const winner = allNames[winnerIndex];
console.log(`Winner selected: ${winner} (index ${winnerIndex} of ${allNames.length})`);Display Result
The wheel spins for the determined duration and lands on the selected winner.
// Spin wheel for calculated duration
spinWheel(randomDurationMs);
// Update wheel display to show winner
if (displayedNames.includes(winner)) {
// Winner is visible on wheel - spin to it
spinToSegment(displayedNames.indexOf(winner));
} else {
// Winner not visible - add temporarily for display
const tempWheel = [...displayedNames.slice(0, 249), winner];
spinToSegment(249); // Spin to the winner's position
}5. CSV Mode Selection
For large CSV uploads, the system uses an optimized client-side index-based selection that can handle unlimited names efficiently.
How CSV Selection Works
// CSV files are stored in database with row indices
// Client selects winner by random index, then fetches just that name
class CSVWinnerSelector {
async selectWinner(csvBatchId, totalCount) {
// 1. Generate random index (0 to totalCount-1)
const randomIndex = Math.floor(Math.random() * totalCount);
// 2. Check if index is excluded (removed winner)
if (this.excludedIndices.has(randomIndex)) {
return this.selectWinner(csvBatchId, totalCount); // Retry
}
// 3. Fetch only that specific name from database
const response = await fetch('/api/get_csv_name_by_index', {
params: { csv_batch_id: csvBatchId, row_index: randomIndex }
});
// 4. Return the winner
return { name: response.data.name, index: randomIndex };
}
}CSV Mode Features
- • Unlimited Scale: Works with 10, 100K, or 1M+ names
- • Memory Efficient: Only loads one name at a time
- • Fair Selection: Every CSV row has equal probability
- • Client-Side: No server involvement in winner selection
- • Exclusion Tracking: Removed names are tracked locally and skipped
Handling Removed Names
When you remove a winner in CSV mode, the system tracks it client-side to ensure fair subsequent selections:
// Exclusion tracking for removed names
class ExclusionTracker {
constructor() {
this.excludedIndices = new Set(); // Removed row indices
this.excludedNames = new Set(); // Removed name strings
}
removeWinner(name, csvIndex) {
this.excludedIndices.add(csvIndex); // Skip this index
this.excludedNames.add(name); // Skip this name value
this.saveToLocalStorage(); // Persist for session
}
isExcluded(index, name) {
return this.excludedIndices.has(index) ||
this.excludedNames.has(name);
}
}6. Verification & Auditing
Console Logging
When developer tools are open, the selection process logs detailed information:
// Sample console output for verification
"🎰 Spin Mode: NORMAL | Names: 10,000"
"⏱️ Duration range: 5.0s - 12.0s"
"=== WINNER SELECTION STARTING ==="
"Total names in full list: 10000"
"Names displayed on wheel: 250"
"Spin duration: 8.743s (randomly selected)"
"Random value generated: 0.7234567"
"Winner index: 7234 of 10000"
"Winner selected: John Smith"
"Winner in displayed names: false"
"=== SELECTION COMPLETE ==="Verification Steps
- Open browser Developer Tools (F12)
- Go to Console tab
- Spin the wheel
- Review the detailed selection logs
- Verify the winner was selected from the complete list
7. Security Considerations
Cryptographic Security
- • Uses
crypto.getRandomValues()- the same randomness used for encryption - • Provides 32 bits of entropy per selection (4.2 billion possible values)
- • Uniform distribution ensures equal probability for all names
- • Cannot be predicted or manipulated
Why Not Math.random()?
Math.random() is not cryptographically secure and could theoretically be predicted. We use the Web Crypto API to ensure true randomness suitable for raffles, drawings, and any scenario requiring verifiable fairness.
8. Fairness Guarantees
Equal Probability
Every name has exactly equal probability of being selected:
// For a list of N names:
Probability per name = 1/N
// Examples:
100 names: Each has 1% chance
1,000 names: Each has 0.1% chance
10,000 names: Each has 0.01% chanceNo Bias Factors
- • Position in list doesn't matter
- • Length of name doesn't matter
- • Whether name is displayed on wheel doesn't matter
- • Previous selections don't influence future ones (unless name is removed)
Transparency Features
- • Complete algorithm is documented here
- • Console logs provide full visibility
- • Winner history is preserved and exportable
- • Results can be independently verified
Summary
The Random Name Picker ensures complete fairness by selecting from ALL names in your list using cryptographically secure randomness. The 250-segment wheel limit is purely visual and does not affect the selection process. Every name has an exactly equal chance of being selected, regardless of list size or display limitations.
This transparent, auditable process ensures your raffles, drawings, and selections are provably fair and can withstand any scrutiny.
API & Integration
(8 questions)What is the Random Name Picker API?
What can I do with the API?
How do I get started with the API?
What are the API rate limits?
Is the API secure?
Can I use the API on the Free plan?
What programming languages are supported?
Can you show me an example of using the API?
// Create and spin a wheel
const response = await fetch(`${API_BASE_URL}/api/wheel/wheels`, {
method: 'POST',
headers: {
'Authorization': 'Basic ' + btoa('YOUR_API_KEY:YOUR_API_SECRET'),
'Content-Type': 'application/json'
},
body: JSON.stringify({
wheel_name: 'Raffle',
entries: ['Alice', 'Bob', 'Charlie']
})
});
const { data } = await response.json();
const wheel_id = data.wheel_id;
// Spin the wheel
const spinResponse = await fetch(`${API_BASE_URL}/api/wheel/wheels/${wheel_id}/spin`, {
method: 'POST',
headers: {
'Authorization': 'Basic ' + btoa('YOUR_API_KEY:YOUR_API_SECRET'),
'Content-Type': 'application/json'
}
});
const spinData = await spinResponse.json();
console.log('Winner:', spinData.data.winner);We provide examples in JavaScript, Python, PHP, Ruby, Go, and cURL. Visit our API documentation for complete code samples and endpoint details.
Discord Bot
(8 questions)What is the Uplup Discord Bot?
How do I add the Discord bot to my server?
npm install and npm start. The README has step-by-step instructions.What commands does the Discord bot support?
Does the Discord bot work without Uplup API keys?
How do I run a Discord drawing with the bot?
/spin reactions message_id:YOUR_MESSAGE_ID, 4) The bot generates an animated wheel with all reactors and picks a winner! You can filter by specific emoji using the emoji option.Can I customize the wheel colors in Discord?
color option with 5 themes: Uplup (purple/pink - default), Vibrant (bold, bright colors), Pastel (soft, light colors), Sunset (warm oranges and pinks), Ocean (cool blues and teals). The animated GIF wheel spin uses your chosen theme.What are the Discord bot limits?
Is the Discord bot free?
Technical & Security
(5 questions)Is the selection truly random and fair?
Is my data secure and private?
Does it work on all devices?
Can multiple people use the same wheel?
What happens if I lose internet connection?
Use Cases & Best Practices
(5 questions)How do educators use this tool?
What about social media drawings?
Can I use this for business events?
How do I prevent duplicate entries?
What's the best way to announce winners?
Usage Limits
(3 questions)Is the wheel of names picker actually free?
What are the paid plan options?
Will I ever be charged for using the tool?
Still have questions?
Our support team is here to help you get the most out of your Random Name Picker