AnyTool
Your files never leave your device. All processing happens locally in your browser.

How do I randomly split a list of people into fair, balanced teams online?

Open AnyTool Team Splitter, paste your people one per line, then choose to split by the number of teams (make 4 teams) or by team size (teams of 3) and click Generate Teams (or press the spacebar). Everyone is shuffled first with your browser’s crypto-secure randomness — an unbiased Fisher–Yates shuffle — then dealt out round-robin, so team sizes are as even as the numbers allow and any remainder is spread one-per-team rather than dumped on one. Name teams as numbered, a themed pack (colours, animals, Greek letters, planets) or your own list, reshuffle for a different fair split, copy the whole result or any one team, and save named rosters. Nothing is uploaded.

  • Crypto-fair shuffle (Web Crypto, no modulo bias) — never Math.random
  • Split by number of teams OR by team size (people per team)
  • Balanced sizes: remainder spread one-per-team, sizes differ by at most one
  • Team names numbered, themed (colours / animals / Greek / planets) or custom
  • Reshuffle, copy-all / per-team copy, save named lists · 100% in your browser

What is

Team Splitter (Random Group / Team Generator)

A team splitter is a tool that divides a list of people into random teams or groups — for sports, classrooms, workshops, game nights or group projects. You fix either the number of teams or the team size, and a fair splitter shuffles everyone uniformly and distributes them so each team gets an equal count, with any leftover people spread one-per-team across the smallest teams so sizes differ by at most one. The assignment is purely random and does not balance by skill, gender or rating unless the tool explicitly offers that.

Generators

Related terms

Random group generatorFisher–Yates shuffleRound-robin distributionBalanced team sizesCrypto-secure random

Frequently Asked Questions

Yes. AnyTool shuffles everyone with crypto-secure randomness (Web Crypto) using rejection sampling, so each person is equally likely to land on any team — never Math.random.

AnyTool Team Splitter shuffles your whole list once with the browser’s Web Crypto API (crypto.getRandomValues) using rejection sampling in a Fisher–Yates shuffle, so every person has exactly equal odds of landing on any team and there is no modulo bias — it never uses the predictable Math.random many team generators rely on. After the fair shuffle the people are dealt out round-robin, which keeps team sizes balanced. Reshuffle any time for a different, equally fair split.

Both. Pick “number of teams” to make a fixed number of teams, or “team size” to make teams of N people; the splitter computes the rest and keeps sizes balanced.

You decide what to fix. Choose “number of teams” and the tool makes exactly that many teams (for example four teams from a class); choose “team size” and it makes teams of the size you set (for example teams of three), creating ceil(total ÷ size) teams. Either way it distributes people round-robin so each team gets the same count and any remainder is spread one person per team across the smallest teams — so 25 people in 4 teams becomes three teams of 6 and one of 7, never a lopsided split.

Yes. Sizes differ by at most one and you can name teams numbered (Team 1…N), from a themed pack (colours, animals, Greek letters, planets) or with your own list.

Round-robin distribution guarantees balanced sizes: every team gets floor(total ÷ teams) people and the leftover is handed out one-per-team, so no team is more than one person larger than another. Team names can be plain numbered (Team 1 to Team N), drawn from a themed pack — colours, animals, Greek letters or planets — or taken from your own list of names, one per line. You can reshuffle for a fresh fair split, copy the entire result or any single team to the clipboard, and save named rosters to reload later.

No. Your names, saved lists and the resulting teams stay in your browser — nothing is uploaded, logged or stored on a server, and no sign-up is needed.

AnyTool Team Splitter runs entirely in your browser. Your list, the generated teams and any named rosters you save are kept locally — saved lists live only in this browser’s localStorage and everything else is gone when you close the tab. There is no account, no tracking and no upload, and the page works offline once cached. Copy-all and per-team copy produce clean formatted text you can paste anywhere.

Detailed Explanation

Methodology

How the Splitter Builds Fair, Balanced Teams

AnyTool Team Splitter parses your people one per line (blank lines dropped, whitespace trimmed) into a pool, then shuffles the whole pool once with a Fisher–Yates shuffle powered by the Web Crypto API (crypto.getRandomValues via rejection sampling) — so every person is exactly equally likely to land on any team and there is no modulo bias. Math.random is never used. After the fair shuffle the people are dealt out round-robin: the splitter walks the shuffled list and drops each person onto the next team in turn, wrapping around. That distribution mathematically guarantees balanced sizes — each team receives floor(total ÷ teams) people and the first (total mod teams) teams receive one extra, so any remainder is spread one-per-team across the smallest teams and no team is ever more than one person larger than another. You fix either the number of teams or the team size; when you fix the size, the number of teams is computed as ceil(total ÷ size).

  • People shuffled by crypto.getRandomValues (CSPRNG), not Math.random
  • Rejection-sampled Fisher–Yates shuffle removes modulo bias
  • Round-robin distribution keeps team sizes within one of each other
  • Remainder is spread one-per-team, never dumped on a single team
  • All randomness runs client-side — no server round-trip
Use Cases

By Teams or Size, Named Teams, Copy and Saved Lists

People are typed or pasted one per line into an editable list with a live count. A mode toggle lets you split by the number of teams (make a fixed number of teams) or by team size (make teams of N people), with a stepper for the value and a live preview of how many teams and how many people per team you will get. Team names come from three sources: plain numbered (Team 1 to Team N), a themed pack — colours, animals, Greek letters or planets — or your own custom list of names one per line. The Generate button becomes Reshuffle once teams exist, re-randomizing the split with a fresh crypto-fair pass. The whole result copies to the clipboard as clean formatted text, and each team has its own copy button; the source list can also be shuffled in place. Rosters can be saved under a name to the browser’s localStorage and reloaded later, and the spacebar triggers a split.

  • Split by number of teams or by team size (people per team)
  • Team names: numbered, themed (colours / animals / Greek / planets) or custom
  • Live preview of team count and per-team size before you split
  • Copy-all and per-team copy as clean formatted text; reshuffle for a new split
  • Save named rosters to localStorage; spacebar splits
Privacy & Security

Privacy, Balanced Sizes and Honest Limits

Because everything runs in the browser, no name, saved list or generated team is sent to a server, logged or stored remotely — saved lists live only in this browser’s localStorage, everything else is discarded when the tab closes, and the page works offline once cached. Honestly, the split is purely random and balanced by count only: it does not balance by skill, gender, age or any rating, so if you need skill-balanced sides you can sort within each team afterwards. Sizes are balanced as evenly as the numbers allow — they differ by at most one person — and reshuffling produces a different, equally fair split rather than a “better” one. Each split is independent of the last; there is no memory of who was on which team before unless you keep the result yourself.

  • No uploads, logging or remote storage — names stay in the browser
  • Saved lists are kept only in localStorage; works offline after first load
  • Balanced by count only — not by skill, gender or rating
  • Team sizes differ by at most one person
  • Reshuffle gives a different, equally fair split (not a better one)
Team splitter: in-browser (AnyTool) vs typical online team generators
CapabilityAnyToolTypical online team generators
RandomnessWeb Crypto CSPRNG, rejection sampling (no bias)Often Math.random
ProcessingRuns in your browserSometimes server-side
Split modeBy number of teams OR by team sizeOften number of teams only
Balanced sizesRemainder spread one-per-team (differ by ≤1)Sometimes lopsided
Team namesNumbered, themed packs, or customOften numbered only
Copy / exportCopy-all and per-team formatted textVaries
Saved listsNamed rosters in localStorageOften cloud-only or account-gated
PrivacyNever uploaded, not stored remotely, works offlineMay transmit or log names
Cost / signupFree, no signupOften ad-heavy or gated

AnyTool shuffles everyone locally with crypto-secure randomness and uploads nothing — round-robin distribution keeps every team’s size within one of the others.