Paste a list of names, one per line, and it splits them into teams: by number of teams or by people per team, with sizes that never differ by more than one. Teams can be purely random or balanced by skill: add a number after a name ("An, 8") and the snake-draft or greedy method spreads the strong and the less strong players evenly. You can keep friends together or rivals apart, copy the result as text or CSV, and make it repeatable with a seed. Names never leave this page.
Fair randomness
Without a seed, every shuffle draws from your browser's cryptographic random source (crypto.getRandomValues), with rejection sampling so every possible order is exactly as likely as any other: no name is more likely to land in team 1. This is the same unbiased draw as our random name picker. With Repeatable on, a seed drives a deterministic generator instead: the same names, settings and seed always give the same teams, which is useful when you need to show how the teams were made or redo them on another device. Re-roll draws again (with a new seed when repeatable).
Balanced teams: snake draft or greedy
- Random ignores the numbers: pure chance.
- Snake draft sorts people by their number, strongest first (equal numbers in random order), and hands them out 1, 2, 3, 3, 2, 1, 1, 2, 3… the way captains pick on a playground. The team that picks last in one round picks first in the next, which evens out the advantage of going first.
- Greedy gives each person, strongest first, to the team whose total is lowest so far. It usually ends with the smallest difference between the strongest and weakest team.
With six players weighted 10, 9, 8, 7, 6 and 5 in two teams, both methods give totals of 23 and 22. The tool shows each team's total and the difference between the strongest and weakest team, so you can see how even the result is. Numbers can be anything that adds up sensibly: a skill rating, a grade, a ranking reversed so that higher means stronger.
Keep together, keep apart
Write each group on its own line, with names separated by commas or "+": "An + Bình" keeps two friends together; under Keep apart, "Chi, Dũng" stops two people who should not be in the same team from meeting. Groups that must stay together are placed first as one unit, so they never get split; keep-apart rules are checked for every placement. If the rules cannot all be satisfied (three people kept apart into two teams, for example), the tool tries other random orders and then tells you which pair it could not separate. Names in the rules must match the list (case is ignored).