
I pasted a class list into a wheel site and it let me spin once. Then the save button wanted an email. The same week I tried a phone app, and the next spin sat there waiting on a video.
The list was twenty names. I didn't need a cloud. I needed a pointer to land on one of them, then to drop that name so the next click couldn't pick them again.
The wheel spinner on Softery does that in the tab. Paste the names, or import the first column of a CSV. Spin. Copy the winner. Remove them if you want a no-repeat round. The names you type never go out as names.
The Save Button Wanted an Email
wheelofnames.com is the page a lot of people already have bookmarked. It works. It also keeps asking you to make an account, and the saved wheels sit behind that login. The first spin is easy. Friday's list is the part they lock.
I ranked this idea eighth out of 1,754, score 9.50, about six hours of work. The card said no ads and no signup. Paste a list or a CSV. Plus a privacy line I could check by opening view source.
I can't write that last line about this site. Softery.io loads Mixpanel and Google Analytics on every page. I won't write "zero third-party scripts" over a layout that already ships both. I built the page for a smaller claim. The names you type never go out as names.
I don't want a second account for a roster I'll open twice a year. And I don't want "keep this list for Friday" sitting behind a signup form. I still open the other wheels when I already have a login there. I built this for the other case, the one where I opened a tab to pick a name and closed it when the form came up.
Rank 8 of 1,754
The classroom pile in that list is long. A typing test, a GPA calculator, flashcards, bingo cards. The wheel sat at the top because people ask for it a lot, and the tax is always the same. A teacher picks a student. A streamer picks a giveaway winner. Same tool, same login wall.
Bing's autocomplete returned 12 suggestions on "wheel spinner", including "wheel spinner name picker" and "wheel spinner custom". People type the thing they want and still land on a page that wants an account to keep the list.
I scored it eighth because the ask is loud and the work is small. About six hours is a canvas and a parser. The card treated "no signup" as the product. That's the part I kept.
I'm not going to tell you the other wheels are useless. They're fine if you already have a login there. A lot of people open one of these, then close the tab when the signup wall comes up.
What 94,731 Ratings Are Buying
The iOS app is called Spin The Wheel, Random Picker. Apple's lookup for id 1467343690 returned 94,731 ratings when I checked it on September 4, 2026, at an average of 4.87. The research file that ranked this idea still said 94,684. I opened the live listing because that note felt old. I'm using the live count.
That's a lot of people who wanted a wheel on their phone. It's also a store listing for an app that plays ads between spins and sells an in-app purchase to stop them. In a classroom you want a projector and a roster. You don't want a phone that pauses for a video every time someone answers.
Put that phone on a doc cam and the class waits on the skip button. That's the product those 94,731 ratings bought.
Hacker News item 47660190 is a Show HN for NameWheel. The title says it:
Free wheel spinner with no ads, no signup, no tracking
No ads and no signup I can match. No tracking I can't, not on a site that already reports page views. I kept the first two and told the truth about the third.
Twelve Autocomplete Suggestions
"wheel spinner" is a short query. 12 suggestions is a small set. The extra words people add still tell you what the first result wasted: name picker, custom. That second word usually means "let me type my own list".
The first page they opened wouldn't take the roster, or wouldn't keep it. So they add a word and try again.
If you land here, you get a box and a canvas. Pointer at noon. Press the button and it lands on one slice.
If you came here from a dinner vote, the default list is already in the box. Pizza, tacos, sushi, burgers, salad, pasta. Six slices so the first click does something. An empty wheel looks broken. A dinner list looks like a joke, which is fine. Paste over them when you have real names.
The Ad Between Spins
The research file called out ads between spins. Once a wheel stops to show a video, the pick is stuck behind an ad that happens to have names around it.
This page has no ad slot. You spin, you read the name, you remove them, you spin again. The gap between those clicks is the time it takes the canvas to ease out, about 4.2 seconds. I didn't tack extra delay on top of that.
The 4.2 seconds is the turn slowing down. That's it. I didn't put a "watch this to spin again" wall in front of the next name, because that's the complaint that got the phone app its ratings, and it's the part a class hates when someone just answered.
The page is free because picking an index costs nothing. I don't need a video to pay for it.
A Yearbook Is Not a Wheel
I put a hard cap at 200 names. A canvas with a few dozen slices still turns. A canvas with a yearbook in it paints labels on top of each other and the tab starts to hitch.
The extra names never get onto the wheel. The page says so next to the count, so you can see the cut. If I trimmed the list quietly, you'd lose the back half of a class and call on the same twenty people all semester.
If the count says 200 and your file had more, the rest never made it. Split the file and run it twice. I didn't put a paywall there. The tool just stops being usable past that many slices.
Newlines Win
One name per line is the usual paste. A single line of commas also splits, because that's how a lot of people type a short list. Once the box has a newline in it, commas inside a name stay put. "Ben, the younger" is one slice.
A CSV uses the first column. If that cell says name, names, option or options, the header is skipped. Quoted commas survive, so "Doe, Jane" is one person. House and grade can sit in the later columns. The wheel never reads them.
I got the comma rule wrong in the first draft. A test pasted a name with a comma after a newline and expected one slice. The first parser split it. I watched the wheel grow extra slices from a list that already had commas in a couple of names. The test went red, so I changed the parser. That's the only reason the current rule exists.
A BOM at the front of an Excel export gets stripped. If you skip that, the first kid shows up with a mark stuck to the front of the name and looks like a different person than the one in the gradebook. Trailing commas on a line get stripped. Blank lines get dropped. None of that is clever. It's the damage a real file does on the way out of a gradebook.
Remove Winner, Then Spin Again
A picker that can land on the same kid twice in a row is a toy. If you're cold-calling a class, you need the other kind. Remove winner drops that slice and rewrites the box. The next spin draws from what's left.
I didn't hide an "already picked" set you can't see. The box is the list. Count the lines if you want. If a name is still in the box, it can still come up. If you deleted it, it can't.
Copy winner puts the name on the clipboard, nothing else. Teachers who keep a mark in a spreadsheet can paste it there without retyping. The analytics event for that click is the word "winner". The name itself never goes out as a name.
Shuffle is the other button. It reorders the box with the same generator. Useful when the visual order of the slices has started to feel like a pattern, even though the pick doesn't care about the drawing order.
The Pointer Sits at Noon
Slices are numbered clockwise from the top. A positive rotation turns the wheel clockwise, so the slice that was to the left of the pointer moves under it. The winner is chosen first. Then the wheel turns until the middle of that slice sits under the pointer, plus several full turns, so a boundary pixel can't flip the name.
I pick the index first on purpose. The turn just aims the wheel at that slice. The pick itself is an index from rejection-sampled bytes, the same method the password generator uses.
A naive remainder on a random byte leans toward the front of the list whenever 256 doesn't divide evenly by the slice count. The leftover values are extra tickets for the first few names. Rejection sampling throws those leftover values away and draws again. For six dinner options the bias is small. For a class of 27 it's the kind of thing a student will notice if you run it every day.
The extra turns are a random integer from 5 to 8, added so the wheel actually spins instead of twitching one slice to the left. They don't change the index. They change how long it takes to look at it.
If you asked the OS to reduce motion, that index is still picked the same way. The first frame just jumps to the end. I'd rather skip the show than pick a different name for people who asked the computer to be still.
What Mixpanel Actually Sees
Softery reports every free tool under its URL slug. This one is wheel-spinner. Opening the page sends Tool Viewed. The first paste or file sends a size bucket, not the text. A size bucket is a range, a short paste or a long one. It is not the roster. A spin sends a count. Copy sends the word "winner". Shuffle and remove winner send a setting name.
Ada doesn't show up in that payload, and neither does Ben. The generated password on the sibling page follows the same rule, and it's the reason the rule exists. I got tired of tools that send the roster along with the click.
After the page has loaded, the spin itself is local. Unplug the cable and the pointer still lands. The analytics calls already happened when the layout loaded. The roster text is not in them.
What I Left Out
I didn't build twenty named wheels in the cloud. I also didn't sync a roster to your other phone, and there's no confetti mode for a projector. I skipped a share link too. A share link is a list sitting in a URL, and a URL gets pasted into chat. That's a different product. Paste the names again on the other machine. It's faster than making an account you'll use twice a year.
The current list lives in this browser, in localStorage, until you paste a new one or clear the site data. A different browser is a different list. Private mode can refuse to store it. The dinner names still load and you can still spin. That's the trade for skipping the account.
"No saved-wheel limit" on the ranking card means there's no login wall in front of keeping a list. It doesn't mean the page will hold a thousand slices. Two hundred is the printed cap.
I also skipped a third-party wheel library. I drew the canvas myself. If the slices look wrong, the bug is mine.
The unit tests cover the parser and the geometry. Nineteen unit tests, plus seven UI tests on the page itself. A six-slice wheel at 90 degrees has to name slice 4. A paste of Ada, Ben, Cara has to say 3 on the wheel. A one-name list has to disable Spin. A CSV with a Name header has to skip that row. Those tests are about what you see, and they failed before the client existed.
How to Check It
Open the network panel. Paste three names. Spin. You should see Mixpanel or Google traffic from the layout, and you shouldn't see Ada in any of those payloads.
| Step | Account wheel | Phone app | This page |
|---|---|---|---|
| Keep the list | Behind a login | On that phone | This browser |
| Next spin | Sometimes a nag | A video, unless you pay | The next spin |
| Names in the payload | Depends | Apple's app | They are not |
| How many names | Their plan | Their purchase | 200, printed |
The default list is six dinner names so you can run this check before you paste a real roster.
If you reduce motion in the OS, the first animation frame jumps to the end. The winner is still the index that was drawn before the first paint of the turn.
Paste the List
If you have a list, paste it. If you have a spreadsheet, import the CSV and ignore every column after the first.
- Open Wheel Spinner.
- Paste the names, one per line, or import a CSV.
- Spin.
- Copy the winner, or remove them and spin again.
- Open the network panel once if you don't believe the names stay put.
The other tools on Softery follow the same habit. The password generator never sees the password. Merge PDF never uploads the pages. This one never sends the roster as text.
Last updated: September 4, 2026 | Reading time: 12 minutes
Written by Evgeniy Poznyak, who has closed one too many signup walls to pick a name.