Spreadsheet import

Straight from the spreadsheet.

CSV, XLSX or a paste from Google Sheets, Excel or Numbers.

Your list

8 entries
Names, one per line*3 for extra chances

Put a star and a number after a name to give it more chances — Alex *3 is three entries on one line.

CSV, XLSX or TXT · up to 10.0 MB

Draw setup

Wheel colours

Spinnza
Custom colours8

Type a hex code or use the well. The wheel repaints as you type, and the colours repeat around it — you never have to pick one per name.

How does Spinnza choose? ›

The winner is picked before the wheel moves, using your browser’s cryptographic random number generator (crypto.getRandomValues) rather than Math.random(). The range is reduced by rejection sampling, so no entry is even slightly more likely than another because of where it sits in the list.

Weights are applied before the draw: an entry with three chances occupies three of the total, and duplicate rows each count separately. The complete list is always used, even when the wheel is too crowded to show every name on a slice.

The animation is presentation. Once a winner is chosen, the wheel is told where to stop — it never decides anything.

8 entries

Showing an example list. Replace it with your own names.

The import actually asks

Upload the file and Spinnza shows you the sheet, the detected columns, sample values from each, and how many rows are filled. You choose which column holds the names and, if you want, which holds a weight.

It will make a sensible first guess — a column called “Instagram Username” beats a column of timestamps — but it is a guess you can overrule, and the preview updates as you change it.

It stays on your device

The file is read in your browser. It is not uploaded, not stored and not sent anywhere, which is worth knowing if the sheet has more in it than the one column you need.

Cells are treated as plain text. Formulas are never evaluated — Spinnza reads the value the spreadsheet already calculated — and macros and embedded objects are never opened at all.

Messy files

Multiple worksheets, merged cells, hidden columns, blank rows, numeric usernames, emoji, accented names, very long names and duplicate rows are all handled. Dates come out as dates rather than five-digit serial numbers.

If a file will not open, you get a plain message and a suggestion to save it as CSV — not a broken page.

Duplicates are a decision, not an error

A name appearing twice in an export is usually not a mistake. Somebody entered twice, or claimed a bonus entry, or filled the form again because they were not sure it went through the first time. So duplicates are kept by default and every row is a separate chance.

Turning on combine does not delete the extra rows — it merges them and adds their chances together, so three rows of “Jamie” become one slice worth three chances rather than one slice worth one. The count under the wheel still says how many people and how many chances, so nobody loses an entry silently.

Matching ignores capitalisation unless you ask it not to, because “jamie” and “Jamie” in the same column are almost always the same person. If your list uses case to tell entries apart — case-sensitive usernames, product codes — turn that off.

The numbers before the spin

The preview reports four things about the sheet: rows found, rows skipped because the name cell was empty, duplicates detected, and whether the list is over the limit. It is written to say “482 rows found, importing 474” rather than to quietly arrive at 474 and let you assume it was always that.

Blank name cells are skipped rather than imported as an empty slice — trailing empty rows are what a spreadsheet does, not an entrant. A blank or unreadable weight becomes one chance, because dropping somebody from a draw over a missing cell is the wrong call to make without asking.

A wheel takes up to 10,000 entries. Past that the import tells you the sheet is over the limit instead of truncating it, because a draw that quietly ignored rows 10,001 onward would be worse than one that did not run.

The parts of spreadsheets that break importers

Excel writes a byte-order mark at the front of a CSV, which turns up in naïve importers as invisible junk glued to the first header. It gets stripped. The delimiter is detected by counting candidates outside quoted sections, so a file full of names like “Smith, Jamie” is not mistaken for two columns. Quotes, escaped quotes and newlines inside quoted cells all parse.

Excel stores a date as a count of days, and its epoch honours a 29 February 1900 that never happened — a compatibility bug inherited from Lotus 1-2-3 and still in the format today. Files saved on older Macs use a different epoch again. Both are handled, which is why dates arrive as dates instead of as five-digit numbers.

Hidden worksheets are shown in the sheet picker and labelled hidden rather than left out, because the list you want is sometimes on the tab somebody tidied away.

Questions

Can I paste cells from Google Sheets?
Yes. Copy a column or a block of cells and paste it into the names box. A multi-column paste opens the same column picker as a file import.
Is my spreadsheet uploaded?
No. Parsing happens in your browser and the contents never reach a server.
What is the file size limit?
10 MB by default, and oversized files are refused before any parsing starts.
Which column does it pick on its own?
It guesses from the headers and the data — a column called “Username” or “Name” beats a column of timestamps, and a column of numbers under a text header looks like a weight. It is only a default; the preview shows sample values from every column so you can overrule it before anything is imported.
Does combining duplicates delete entries?
No. It merges rows with the same name into one entry and adds their chances together, so somebody with three rows keeps three chances. The counts under the wheel show people and total chances separately.

The wheel is free and always will be. A recorded proof spin is $1.99, one time, no subscription — how it works.