What the Team Generator does
The Team Generator takes a list of people and splits it into a chosen number of teams. You paste the names (one per line), pick how many teams you want, and the tool returns balanced groups with everyone assigned at random.
Paste in 20 names, pick 4 teams, and you get four lists of 5 names each — no two runs will produce the same split, because the order is shuffled fresh every time. There's no signup, nothing to install, and the list never leaves your browser.
It exists because the alternatives are worse. Counting off "one, two, three, four, one, two, three, four" in a PE class works for 12 kids but falls apart when you have 38. Picking captains and letting them draft is fast but creates the awkward last-picked moment that every kid remembers for life. A spreadsheet with =RAND() works but takes longer to set up than the activity it's organizing. The Team Generator is the version that just works in fifteen seconds.
When you'll use it
Random team assignment is the workhorse of group activities. A few common moments:
- PE and sports classes — splitting 30 students into 6 teams for relay races, dodgeball, or scrimmage matches without the captain-pick ritual
- Project teams at work — assigning a department to 4 working groups for a planning offsite or training day
- Hackathons — randomly pairing strangers into teams of 3-5 when the goal is mixing, not skill-matching
- Classroom group work — breaking 24 students into 6 groups of 4 for a discussion or lab activity
- Birthday parties and family gatherings — making teams for trivia, charades, or a backyard tournament
- Sports drafts among friends — picking sides for pickup basketball, soccer, or volleyball when nobody wants to be the captain
- Conference workshops — assigning attendees to breakout rooms when you want mixed company, not self-selected cliques
The common thread: you want the assignment to be fair, you want it to be fast, and you don't want anyone to feel hand-picked or skipped over. Randomness solves all three problems in one move.
How to use the Team Generator
The whole flow takes about thirty seconds:
- Paste your list of names into the text area, one name per line. Spaces and special characters are fine — "María José" and "O'Brien" both work as a single entry.
- Set the number of teams you want. The minimum is 2; the practical maximum is however many people are on your list (you can't split 10 people into 15 teams).
- Click Generate. The teams appear below, numbered Team 1 through Team N.
- Hit Generate again to reshuffle if you don't like the first split. Each click gives a fresh random arrangement.
- Copy the result, or paste it into Slack, Google Docs, or a chat to share with the group.
If your list doesn't divide evenly — say, 22 people into 4 teams — the tool spreads the remainder across the first teams, so you'd get teams of 6, 6, 5, 5 rather than 5, 5, 5, 7. The difference is at most one person between any two teams, which is what most contexts mean by "evenly split."
The shuffle is genuinely random. The Team Generator uses Fisher-Yates shuffle backed by the browser's crypto.getRandomValues when available, falling back to Math.random. Every permutation of your list is equally likely. This isn't the same as the "sort by random" trick some tools use, which is biased — Fisher-Yates is the standard, and it's what professional shuffling libraries use.
The math behind the shuffle
Splitting a list into teams is a two-step problem: shuffle the list into a random order, then chunk the shuffled list into groups. The Team Generator does both, but the shuffle is where most homemade attempts go wrong.
The naive approach — generating a random number for each name and sorting by that number — produces a biased shuffle. Some orderings are slightly more likely than others, because the random numbers can tie or cluster. For a class of 30, the bias is small enough that nobody notices. For a list of 200 hackathon attendees, the bias is detectable.
The correct algorithm is the Fisher-Yates shuffle, published by Ronald Fisher and Frank Yates in 1938 and adapted for computers by Richard Durstenfeld in 1964. It works like this:
- Start at the last position in the list.
- Pick a random position from the start up to (and including) the current position.
- Swap the name at the current position with the name at the random position.
- Move one position to the left. Repeat until you reach the start of the list.
This produces an unbiased shuffle in linear time. Every one of the n! possible orderings is equally likely, and the algorithm runs in O(n) — instant for any list short enough to type by hand.
After the shuffle, chunking is simple. Divide the list length by the team count to get the base team size. Distribute the remainder across the first few teams so the largest team has at most one more person than the smallest.
Worked example: 20 people, 4 teams.
- Start with the list in input order: Alice, Bob, Carol, ... Tom.
- Fisher-Yates shuffles to: Frank, Tom, Alice, Liam, Priya, Bob, Sara, Carol, Yuki, Henri, Mei, Diana, Omar, Eve, Noah, Grace, Ivan, Patrick, Jin, Kate.
- Chunk into 4 teams of 5: Team 1 = first 5, Team 2 = next 5, Team 3 = next 5, Team 4 = last 5.
- Result: Team 1 has Frank, Tom, Alice, Liam, Priya. Team 2 has Bob, Sara, Carol, Yuki, Henri. And so on.
If the list had 22 people instead of 20, the first two teams would get 6 people each (5 + 1 extra) and the last two would get 5 — total 22, no one left out, gap of one.
Common team sizes for common scenarios
Different activities have different ideal group sizes. Use this table as a starting point when you're sizing your teams:
| Activity | Team size | Total players for full match |
|---|---|---|
| Tennis or pickleball doubles (2v2) | 2 | 4 |
| 3-on-3 basketball / half-court | 3 | 6 |
| Beach volleyball | 2 | 4 |
| Indoor volleyball | 6 | 12 |
| 5-a-side soccer / futsal | 5 | 10 |
| 7-a-side soccer | 7 | 14 |
| 11-a-side soccer (full pitch) | 11 | 22 |
| Ultimate frisbee | 7 | 14 |
| Full-court basketball (5v5) | 5 | 10 |
| Trivia night team | 4-6 | varies |
| Classroom discussion group | 3-5 | varies |
| Hackathon project team | 3-5 | varies |
| Escape room group | 4-8 | varies |
A few rules of thumb worth knowing. Groups smaller than 3 tend to be too sparse for discussion; groups larger than 7 tend to fragment into side conversations. The sweet spot for most learning and brainstorming activities is 4-5 people. For physical games, the rules of the sport set the size for you.
What the Team Generator does not do
This is worth being explicit about. The Team Generator splits people randomly. It does not:
- Balance for skill. If you want even teams of pickup basketball players where the strongest player on each team is roughly equal, that's a different problem (it's NP-hard in the general case). Most coaches solve it by hand or with a captain-draft.
- Avoid specific pairings. If you don't want two siblings on the same team, or two coworkers who already collaborate too much, the tool won't know. Edit the result manually if a particular pairing is awkward.
- Account for attendance. If the list has 32 names but only 28 show up, the absent four leave gaps. Remove no-shows from the input list before generating, not after.
- Save your lists. Nothing is stored. Refresh the page and your input is gone. If you split the same group every week, keep the master list somewhere else (a Google Doc, a Notes file) and paste it in each time.
For all of these, the workaround is the same: generate teams, then make manual adjustments. Random is a starting point; you're allowed to nudge it.
Related randomization tools
The Team Generator is part of a small family of randomizers that all share the same idea — fast, in-browser, no signup:
- List Randomizer — when you want to shuffle a list without splitting it into groups. Useful for picking a presentation order, a draft order, or just a random sort.
- Random Name Picker — picks one name from a list. Use it for raffle draws, calling on students, or deciding who buys the next round.
- Random Name Generator — invents fictional names instead of selecting from a list. Useful for character names, placeholder data, or screen names.
Frequently asked questions
Is the result truly random or just shuffled-looking?
It's truly random in the sense that matters: Fisher-Yates shuffle produces every possible ordering with equal probability. The randomness comes from the browser's cryptographic random number generator (crypto.getRandomValues) when available, which is the same source used for generating secure keys. For practical purposes — picking teams, deciding orders, fair draws — this is as random as it gets.
What happens if my list doesn't divide evenly?
The remainder is spread across the first few teams. Twenty-two people split into four teams becomes 6, 6, 5, 5 — not 5, 5, 5, 7. The largest team is always at most one person bigger than the smallest team, which matches what most people mean by "as evenly as possible."
Can I exclude specific pairings or keep certain people together?
Not in the generator itself. The tool is deliberately simple: random in, random out. If you need to keep two people together (siblings, partners) or apart (two managers who shouldn't be in the same group), the easiest fix is to generate the teams and then swap one or two people manually. For complex constraint problems — "everyone must work with someone new" across multiple weeks — a spreadsheet with conditional logic is the better tool.
Is my list saved anywhere?
No. Everything runs in your browser. Your list of names doesn't reach any Microapp server. Close the tab and the data is gone. This is safe to use for confidential lists, internal teams, or anything you'd rather not have logged.
What's the maximum number of names I can paste in?
Practically, there isn't one. The tool has been tested with thousands of names and still runs instantly because Fisher-Yates is O(n) — linear in the list length. If your input is a 500-person conference list, the shuffle takes a few milliseconds. The limit is your browser's memory, which is usually well above anything you'd type or paste manually.
Why do I keep getting similar splits?
You shouldn't, but if the list is small, the perceived "similarity" is sometimes a pattern your brain is finding in noise. For a list of 10 people in 2 teams, there are only 252 possible distinct splits — so two consecutive generations can occasionally repeat a similar grouping by chance. Generate again and the next result will be different. For lists larger than 15 or so, identical splits are statistically rare enough to ignore.
Does the order within each team matter?
That's up to you. The Team Generator shows names in the order Fisher-Yates produced, which is random. If you need a captain or a presentation order within a team, you can read the first name as captain, or run the names through the List Randomizer separately. Most uses don't care about within-team order.
Can I balance teams by skill, age, or experience?
No — and that's deliberate. Balanced-by-skill team selection is a different problem with no standard answer (different sports use different methods, and most rely on a coach's judgment). The Team Generator does random, fast, and fair. If you need skill balancing, the typical approach is: rank players into tiers, then split each tier randomly across teams. You can do that here by running the generator separately for each tier and combining the results.