Team Generator
Randomly split a list of names into balanced teams — by team count or by players per team.
Team Generator Tool
How to use the team generator
Paste your name list
One person per line. The tool ships with a sample list of 12 names — clear it and paste your own. No length limit; the layout adapts.
Pick a split mode
"Team count" — you specify how many teams, the tool distributes evenly. "Team size" — you specify players per team, the tool calculates the team count and groups in chunks.
Click "Generate teams"
The full list is shuffled with Fisher-Yates + crypto.getRandomValues (unbiased), then sliced. Click again to re-shuffle into a different arrangement.
Copy or share
"Copy all teams" puts a plain-text list on your clipboard ready to paste into Slack, Teams, WhatsApp, or email. Each team labelled, each name indented.
Random team assignment — why it's harder than it looks
Dividing a group of people into teams sounds trivial: shuffle the names, slice into N piles. The mathematics is straightforward but the social mechanics aren't. Office team-building, classroom group projects, sports five-a-side, kindergarten breakout groups, hackathon team formation, family game night — the same algorithm covers all of these, but the right defaults differ. This tool chooses unbiased random assignment as the universal default because it minimises the social cost of being assigned to a less-preferred group: nobody chose you, the algorithm did.
By count vs by size
"Team count" is the right mode when you want a fixed number of groups regardless of attendance — e.g. "always 4 teams for the inter-department challenge". The tool distributes evenly with leftover players going to the first teams (Team 1 gets the extra if the list isn't divisible). "Team size" is right when you want consistent team sizes — e.g. "5-a-side football, however many we have". The last team might be smaller than the others if the list isn't a clean multiple.
Why this uses Fisher-Yates + crypto.getRandomValues
Fisher-Yates is the only correct way to shuffle an array — it's been the standard algorithm since 1938 (originally published by Fisher and Yates for a randomisation table). The common JavaScript shortcut array.sort(() => Math.random() - 0.5) is biased and broken — V8's sort doesn't promise stable comparison semantics for non-deterministic comparators, so you end up with non-uniform results. Combining Fisher-Yates with crypto.getRandomValues means every possible team assignment is genuinely equally likely. For an office of 30 people split into 6 teams of 5, that's ~10^25 possible assignments. Math.random()-based shuffles can only reach a tiny fraction of that.
ASEAN team-formation patterns
How groups form teams varies regionally. Singapore offices tend to randomise to avoid the cliquey "always with the same colleagues" dynamic. Malaysian schools often divide by classroom seniority (P1 vs P2 vs P3), but random within seniority is also common. Indonesian university group projects tend to self-select — the tool's "by count" mode is useful when faculty want to break those patterns. Filipino workplace team-building events often use a "draw lots" tradition (literally drawing slips of paper); a digital tool with copy-to-clipboard replicates that with a public log everyone can see at once. Thai corporate retreats frequently combine random assignment with a "team naming" round — the tool covers the assignment; the naming is on you.
When NOT to use random teams
Random assignment is wrong for skill-balanced sports (the strong team will dominate), for projects that require specific role coverage (front-end + back-end + design), and for situations where social-comfort matters more than equal play time (a 4-year-old who only wants their best friend in the team). For those, a manual draft or skill-balanced sort beats random. For everything else — and there's a lot of "everything else" — random is the right default precisely because it's not negotiable.
For best results, run the generator at the start of the activity and announce the teams immediately. Delayed reveals invite negotiation ("can I swap with…") which defeats the purpose. The copy-to-clipboard output is plain text on purpose — it lands cleanly in any chat channel and stays scrollable as a reference throughout the session.
10 team-formation facts
The Fisher-Yates algorithm was published in 1938 as a way to manually randomise rows in statistical tables. The Knuth shuffle (1969) is the same algorithm — Knuth re-derived it independently.
The schoolyard "captain picks" method maximises perceived skill gaps and is widely cited as a contributor to childhood self-image. Random assignment avoids the last-picked problem entirely.
Belbin's team-role theory (1981) identified 9 archetypes (Plant, Implementer, Coordinator etc.). Random teams of 6+ will usually cover most archetypes; teams of 3 often won't.
The Apollo 11 crew was specifically NOT random — Armstrong, Aldrin, and Collins were assigned by NASA based on flight history and personality compatibility. Average mission planning took 12 months.
FIFA's World Cup group draw uses "pots" — strongest teams in pot 1, weakest in pot 4 — to ensure no group has only top teams. Random within pots; constrained between them.
The 1990 study "Cohesion and Performance in Groups" (Mullen & Copper) found that randomly assigned teams performed within 3% of self-selected teams on most task types.
Hackathon team formation studies show random pairs ship more deployed code than self-selected pairs, because random pairs spend less time on social calibration and more on building.
Singapore's National Service uses a complex assignment algorithm that includes height, fitness, language ability, and skill scores. Pure random would be much simpler but politically untenable.
The Pareto-optimal team size for creative problem-solving is 3-5 according to multiple management studies. Beyond 7 you lose discussion bandwidth; below 3 you lose perspective diversity.
Naval damage-control teams traditionally have 5 — one leader, four specialists. The number is unchanged from the 1942 US Navy doctrine that's still in use today.
Frequently asked questions
window.crypto.getRandomValues() for unbiased random indices. Every possible team assignment is equally likely.Related News
You may be interested in these recent stories from our newsroom.
No related news yet for this tool. Our editorial team publishes new pieces every week.
Browse all news →75 more free tools
Calculators, converters, security tools — no signup.