ForHosting KIT · Developer Utilities

Seeded random team generator

This seeded random team generator turns a list of names into balanced teams that can be reproduced later.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

Enter the people, choose how many teams you need, and provide any text seed. The same names, team count, and seed always produce the same assignment, which makes the result easy to audit, share, or rerun. Every person is assigned once, team sizes differ by no more than one, and the request is rejected when there are more teams than people.

Prepare the list and choose a useful seed

Start with one entry for every person who should participate. Names are preserved exactly, including capitalization and spaces, so you can use display names, initials, employee labels, or other human-readable identifiers. Each entry must contain non-whitespace text. Repeated entries are allowed because two people can legitimately share a name, although adding an identifier is wise when the final assignment must distinguish them. Next, choose a team count from one up to the number of supplied names. The seed can be any non-empty text, such as an event name, a date chosen by your organization, or a published draw label. A descriptive seed makes the assignment easier to reproduce without keeping extra state. For a fair process, agree on or publish the seed before examining the teams. Changing even one character in the seed can change the shuffle, while using exactly the same input recreates exactly the same result. The tool accepts up to ten thousand names in one request, making it suitable for classrooms, workshops, leagues, and large internal events.

How deterministic balancing works

The generator converts the seed into a stable numeric state and uses that state to drive a deterministic shuffle of a copied name list. It does not use system randomness, the current time, network data, or stored session state. After shuffling, it deals names to teams in sequence: the first shuffled name goes to team one, the next to team two, and so on, returning to team one after the last team. This distribution rule guarantees that the largest and smallest teams differ by at most one person. When the name count does not divide evenly, the earlier numbered teams receive one additional member. Every input position appears exactly once in the output, so repeated display names remain separate entries rather than being silently merged. Determinism means reproducibility, not cryptographic unpredictability: anyone who knows the complete input and seed can calculate the same assignment. If participants might strategically influence a public seed, choose it through an agreed process after the final list is locked, then record both the list and seed alongside the result.

Rerun, compare, and automate assignments

Save the original order of the names, the requested team count, and the seed whenever you need to recreate an assignment. All three are part of the calculation: reordering the input list, correcting a name, adding a late participant, removing someone, changing the number of teams, or editing the seed creates a different shuffle. That sensitivity is useful because it prevents a stale result from appearing valid after the roster changes, but it also means you should treat the complete request as the record of the draw. The response returns the seed, the team count, and numbered teams with their members, which is straightforward to copy into a schedule or consume in an automated workflow. Use the browser runner for an occasional workshop or class, and use the API when an application needs repeatable grouping without maintaining its own randomization code. API requests cost $0.002; browser execution is available on the page. Validation stops impossible or ambiguous requests early, including empty names, a missing seed, a non-integer team count, or a team count greater than the number of people.

Create workshop breakout groups

Publish a session seed and generate balanced groups that facilitators can reproduce later.

Assign classroom project teams

Split a roster evenly while keeping a record of the exact list, seed, and assignment.

Automate recurring event draws

Generate deterministic teams inside an application without storing random generator state.

Will the same seed always create the same teams?

Yes, when the names are in the same order and the team count is unchanged. Any change to those inputs can change the result.

How evenly are people distributed?

Every person is assigned once, and the largest team has at most one more member than the smallest team.

What happens if there are more teams than names?

The request returns an invalid input error because every requested team must receive at least one person.

Can two people have the same name?

Yes. Repeated strings remain separate list entries, though adding an identifier helps people tell them apart.

Is this suitable for a security-sensitive lottery?

No. The algorithm is reproducible and transparent, but it is not designed as a cryptographically secure or secret draw.

What does an API request cost?

Each API request costs $0.002. You can also run the capability in your browser on this page.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/game/team-shuffle-seeded

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/game/team-shuffle-seeded \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"names":["Amina","Bruno","Chen","Daria","Emil","Fatima","Grace"],"team_count":3,"seed":"summer-games-2026"}'
{
  "names": [
    "Amina",
    "Bruno",
    "Chen",
    "Daria",
    "Emil",
    "Fatima",
    "Grace"
  ],
  "team_count": 3,
  "seed": "summer-games-2026"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "game.team_shuffle_seeded",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

max_items10000
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Read the full KIT documentation →