Drop a list,
pick balanced teams.
Paste names, choose how many teams (or how big each one), get a fair shuffle in milliseconds. Custom team labels, copy each team, share the URL.
Team labels
Used in order. If you provide fewer labels than teams, the rest fall back to "Team N".
About this generator
Picking teams shouldn't be controversial. The whole point is that nobody chose — the math chose. But the half-dozen team-picker tools floating around online get this wrong in subtle, annoying ways. Some are weighted toward the order you typed names in. Some forget that 11 people across 4 teams isn't 2.75 each and just truncate. A few use Math.random, which on certain browsers has historically been biased enough to matter for small lists. This one fixes all three.
The picking strategy is simple and right. We Fisher-Yates shuffle the entire name list using crypto.getRandomValues with rejection sampling, then deal the shuffled list round-robin into N teams. Round-robin is what makes the remainder distribution honest: with 11 people and 4 teams, the first three teams get three players each and the fourth gets two — every team is at most one person off from any other. No truncation, no random imbalance.
Two modes cover almost every real situation. By team count is what you want when you've decided you have four squads, no matter how many people show up. By team size is what you want when you have fixed roster slots — five-on-five basketball, eight per breakout room, three per study group. The tool figures out the team count from the list size and packs the remainder into one slightly smaller team.
What this isn't: a skill-balancer. There's no "pair stronger players with weaker" logic, no historical weighting, no avoid-this-grouping rule. That's intentional — it's a different problem with a different shape, and the solutions to it look much more like spreadsheet work than "click button, get teams." If you need that, label your names with skill tiers before pasting and use the labels to seed manual draft order. If you just need any list rearranged into one big random order rather than split, the List Randomizer is the right tool. If you want to spin a wheel for a single winner, head to the Wheel Spinner.
What people use it for
Everywhere a random fair split beats picking captains.
PE class teams
Twenty kids, four teams, no more "captains pick" drama. Project the page, hit Pick, hand out colored pinnies. Total time: 12 seconds.
Pickup sports
Dodgeball, ultimate, 5v5 basketball. Use "by team size" mode and let the math decide. The runt team is fine — everybody plays.
Study groups
Course of 24, professor wants groups of four. Six teams in one click, plus shareable URL so the TAs can email out the assignment.
Hackathon team forming
Forty solo signups, ten projects. Paste, pick, done. Then everyone yells "wait can I switch with Greg?" That's normal. The tool got you to ten teams in seconds; the social part is on you.
Conference breakouts
200 attendees, 25 discussion tables. Put the names in (or just numbers 1–200), get balanced groups, project on the screen.
Tabletop scenarios
D&D one-shot with eight new players, two DMs, two parties of four. Or a Werewolf night where you need balanced villages. Done in one click.
How it works
The shuffle
We use Fisher-Yates — the standard, mathematically-correct shuffle algorithm. Walking from the end of the array to the start, we swap each element with a uniformly-chosen earlier element (or itself). The random index for each step comes from crypto.getRandomValues with rejection sampling: we discard 32-bit draws above floor(2³² / N) × N so the modulo into [0, N) is unbiased. The result is a uniform random permutation; every possible ordering is exactly equally likely.
The dealing
After shuffle, we deal round-robin into N teams: first card to team 1, second to team 2, ..., (N+1)th back to team 1. With 11 names and 4 teams, teams get sizes 3, 3, 3, 2 — never 4, 3, 2, 2, never 3, 3, 2, 3. The remainder is spread evenly by construction.
State & sharing
Names, mode (count vs size), the count or size value, and any custom team labels live in the URL query string. Reload to redraw — the shuffle is stochastic, so the same configuration produces a different split each time. Recent splits are kept in localStorage on this device only, capped at ten.
Common questions
How does it split the list?
Fisher-Yates shuffle the full name list using crypto.getRandomValues with rejection sampling, then deal the shuffled names round-robin into teams. Every name has an equal probability of landing on any team, and no team gets more than one extra person.
What if my name count doesn't divide evenly?
Round-robin handles it. With 11 people across 4 teams, three teams get three players and one team gets two. The remainder spreads evenly — no team is more than one person off from any other.
Can I pick by team size instead of team count?
Yes. Toggle to By team size and we'll create as many teams of that size as the list supports, plus one slightly smaller team for any remainder. Useful for fixed-roster sports like dodgeball or volleyball.
Can I name the teams?
Yes. Add labels in the settings panel — one per line, like Red / Blue / Green. We use them in order. If you provide fewer labels than teams, the rest get fallback names like "Team 4".
Can I share the result?
The URL captures your name list and settings. The shuffle itself is regenerated each time — that's a feature, since results are different each visit. To freeze a specific split, copy each team manually using the per-team copy button.
Is it really random, or weighted?
Strictly uniform. There's no skill, history, or weighting — the shuffle is a cryptographically secure permutation of your list. If you want skill-balanced teams, pre-sort the names by tier and use the labels to seed a manual draft. This tool is intentionally simple.
What's the maximum list size?
The textarea will happily take a few thousand names; the shuffle is O(n) and runs instantly even on a phone. Past about 200, the rendered teams get long — copy each one with the per-team button rather than scrolling.
Related generators
Same neighborhood — different question.