Local-first · free · no sign-up

Random Team Generator

Paste names, choose Random, Balanced, or Fair Over Time, then generate and adjust teams in one workspace.

Stays on this deviceUntil you choose to share
1 · Roster

Paste names

0 people

One name per line. Add skills, roles, availability, and custom fields in Advanced setup.

Add at least two people to create teams.

2 · Setup

Choose how to split

General setup for any roster. Add skills, roles, or rules only when they help the decision.

Split by
Mode
Output Waiting for roster

Allocation preview

Add at least two people to begin.

Paste names or import a CSV. Your roster stays in this browser unless you create a share link.

0People RandomMode 2 teamsSplit

Method & limits

Understand the result, not just the team list.

Random uses a reproducible seed. Balanced and Fair Over Time search many valid assignments, score the selected objectives, and explain the trade-offs. Scores guide comparison; they do not prove absolute fairness or a global optimum.

LocalRoster stays in this browser ExplainableScores and rule outcomes shown BoundedStrong result, not a fairness guarantee

Optional power

Advanced setup

Roster attributes

Edit skill, roles, availability, captain eligibility, and custom fields.

Participant attributes used for balancing and constraints

Balance objectives

Balanced and Fair modes use the selected fields. Random mode displays these scores without selecting for them.

Rules

Use names and dropdowns—no expressions required.

0

Use Command/Ctrl or Shift to select two or more people.

Saved fairness history

No committed rounds yet.

Rotation mode

Generate multiple rounds

Availability is read from the Advanced roster table. Empty availability means all rounds; enter values such as 1; 2; 4.

CSV import

Map your columns

First imported rows

This browser

Saved projects

Checking browser storage…

Real files

Export result

Explicit public projection

Create an expiring share

Only the fields selected below will be uploaded. Notes and custom attributes are never included.

Before and after

Compare generations

Accessible move

Move participant

Roster change

Add participant

Algorithm and limits

How team generation works

Seeded random mode

The seed initializes a deterministic pseudo-random generator. A Fisher–Yates shuffle produces candidate orders. The same roster IDs, settings, constraints, saved history, and seed produce the same result and replay checksum. This is reproducibility, not a cryptographic lottery claim.

Hard rules first

Keep Together groups are merged into indivisible units. Keep Apart pairs, locked teams, capacities, and hard minimum-per-team rules are validated before scoring. Conflicts are shown instead of silently violating a rule.

Balanced mode

The generator builds multiple valid candidates, scores skill totals and averages, role/category coverage, team sizes, and spread rules, then performs bounded local swaps. It returns the best valid result found within the size-aware search budget.

Fair Over Time

Fair mode also penalizes historical teammate repeats and considers teammate coverage, captain counts, participation, rests, responsibility counts, and repeated placement on unusually strong or weak teams.

Score weights

Balanced defaults to 45% skill, 25% role/category coverage, 20% constraints/spread rules, and 10% team-size equality. Fair defaults to 25% skill, 15% role/category coverage, 15% constraints, 25% pair history, and 20% long-term participation/captain/strength fairness.

Limitations

Complex constrained grouping is combinatorial. This bounded optimizer is designed for practical rosters of up to 500 people, but it cannot guarantee a global optimum or that every feasible edge case will be found. Skill ratings and categories can also reflect organizer bias. Treat scores as transparent decision aids, not proof of perfect social fairness.

Effective July 25, 2026

Terms and Privacy Policy

Local processing

Names, skills, roles, notes, custom attributes, constraints, and history are processed in your browser for ordinary generation. Saved projects use this browser’s IndexedDB, with localStorage as a fallback. Clearing browser data can remove them, so export a project JSON backup when the roster matters.

Shares

No roster is uploaded unless you actively create a share. Before sharing, you choose full names, initials, or anonymous labels and whether to include scores, seed, skill, roles, or positions. Notes and custom attributes are excluded. Shares expire after the selected period and are marked not to be indexed, but anyone with a live link may view it. Do not share sensitive student, employee, medical, or protected information.

Anonymous product events

The site may record allowlisted events such as a generation, export type, selected mode, or coarse roster-size bucket. Event payloads do not include names, roster content, skill values, roles, custom attribute content, notes, or shared team text.

Security and exports

Imported text is rendered as text rather than executable HTML. CSV exports neutralize cells that could be interpreted as spreadsheet formulas. You remain responsible for reviewing downloaded files and recipients.

Use of results

Results are decision aids. The service does not guarantee randomness suitable for regulated drawings, a mathematically optimal allocation, equal outcomes, safety, eligibility, or discrimination-free decisions. Review constraints and manually adjust when human context requires it.

Availability

The service is provided as-is and may change or be unavailable. Keep independent backups of important projects. Do not use the service to violate law, policy, contractual obligations, or the rights of participants.

Clear local data

Use the footer action to delete projects, autosave, and preferences created by this site in the current browser.