Pick a random name from a list with a reproducible seed
With the seed team-lunch-2026, the 4 names Avery, Blake, Casey and Devon always come out in the same order. Paste your list and a seed to pick one name or shuffle everyone, and anyone can repeat the draw later to check it. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Names
- Avery, Blake, Casey, Devon
- Seed
- team-lunch-2026
- Calculation mode
- Shuffle
- Quantity
- 4
- Order
- Avery, Blake, Casey, Devon
This seeded random name picker turns any non-empty list into a reproducible draw order. Supply the same names and seed to receive the same result every time, whether you need one selection or the complete shuffled order. Numbered picks move through that order without repeating an entry until every position has been used. It is useful for games, classroom turns, team activities, giveaways, review assignments, and any fair-looking draw that must be checked or repeated later. All selection logic is deterministic and uses no network service, system clock, or hidden randomness.
Prepare names and choose a meaningful seed
Start with one or more names and a non-empty seed. Each name must be text containing at least one visible character; surrounding spaces are removed before the draw. Spelling and capitalization otherwise remain unchanged.
The seed can describe the event, round, date, or published draw identifier, such as a meeting name combined with a week number. A meaningful seed is easier for participants to record and reuse than an arbitrary value. The exact seed matters: changing one character creates a different deterministic sequence.
Input order also matters because the shuffle begins from the list you submit. For a result that other people can reproduce, share the names in their original order, the exact seed, and the requested mode. Duplicate labels are permitted because two distinct people may share a name, but identical labels cannot be distinguished in the response.
Add a surname initial, team, number, or another qualifier when every entry must be visibly unique. An empty list is always rejected instead of producing a misleading blank selection. The capability also rejects blank names and a blank seed, giving integrations a clear input error to correct before a draw is published.
Pick once or walk through a repeat-free sequence
Use pick mode when you need one name. The default draw number is 1, which selects the first entry in the seeded order. To make another selection without repeating an earlier entry, keep the names and seed unchanged and increment the draw number to 2, then 3, and so forth.
The response reports the selected name, the draw number, how many entries remain, and whether that draw exhausted the list. This makes a stateless integration practical: store only the seed and next draw number rather than storing or mutating a pool of names. A draw number beyond the list length returns an error stating that the list is exhausted.
Use shuffle mode when you want the complete order at once, perhaps to print a speaking schedule or assign every participant a turn. Shuffle mode returns the seed, count, and full ordered list. Both modes use the same permutation, so a pick at draw number 2 always matches the second item returned by shuffle mode for identical input.
Do not change the input order between calls, because even the same membership in a different starting order intentionally defines a different draw.
Reproduce, audit, and integrate the result
Determinism is useful whenever a selection must appear random while remaining explainable. Record the original ordered list, seed, and draw number alongside the result. Anyone can then submit those values again and verify the selection without trusting saved application state.
This is especially helpful for classroom rotations, recurring team duties, tabletop games, community events, and transparent low-stakes giveaways. The algorithm performs a seeded Fisher-Yates shuffle entirely in memory. It never calls a random service, reads the current time, accesses storage, or uses a model, so identical inputs have identical outputs across runs.
Deterministic does not mean cryptographically unpredictable: a participant who knows the list and seed can calculate later positions. Do not use this capability where secrecy, regulated lottery rules, adversarial prize allocation, or cryptographic randomness is required. In an application, validate that the participant roster is final before publishing the seed, retain the next draw number transactionally, and decide explicitly whether a new round resets with a new seed or continues the existing sequence.
What you can do with it
Rotate classroom participation
Draw students in a repeat-free order that a teacher can reproduce for the same lesson and roster.
Assign team turns
Create a stable speaking or duty sequence without maintaining a mutable pool of remaining names.
Run a transparent game draw
Publish a seed and ordered entrant list so players can independently verify each numbered selection.
FAQ
Does the same seed always select the same name?
Yes, provided the names, their order, the mode, and the draw number are also unchanged.
Are duplicate names allowed?
Yes. Each list position is used once, but identical labels look the same, so add qualifiers when entries must be distinguishable.
Is this suitable for a regulated lottery?
No. The sequence is reproducible and predictable to anyone who knows the input; use an approved secure drawing process where regulations or adversaries apply.
How do I pick a second name without repeating the first?
Keep the names and seed unchanged and move the draw number from 1 to 2, then 3, and so on. Each draw follows the same seeded order, so no name repeats until the whole list has been used.
Can I get the full order at once?
Yes. Choose the shuffle option to receive the complete order in one go, for example to print a speaking schedule or give every participant a turn. The same names, seed and list order always give the same sequence.
Related tools
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/game/name-picker-seeded \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"names":["Avery","Blake","Casey","Devon"],"seed":"team-lunch-2026"}'const res = await fetch("https://api.kit.forhosting.com/game/name-picker-seeded", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"names": [
"Avery",
"Blake",
"Casey",
"Devon"
],
"seed": "team-lunch-2026"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/game/name-picker-seeded",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"names": [
"Avery",
"Blake",
"Casey",
"Devon"
],
"seed": "team-lunch-2026"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/game/name-picker-seeded", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"names":["Avery","Blake","Casey","Devon"],"seed":"team-lunch-2026"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"names":["Avery","Blake","Casey","Devon"],"seed":"team-lunch-2026"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/game/name-picker-seeded", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"names": [
"Avery",
"Blake",
"Casey",
"Devon"
],
"seed": "team-lunch-2026"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.name_picker_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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Reproduce, audit, and integrate the result
For ordinary automation, call the API for $0.002 per request; interactive browser use can run the same pure selection logic locally.
Technical questions
What happens when the list is empty?
The request returns an invalid_input error because there is no valid name to select.
How do I pick again without repeats?
Keep the names and seed identical, then increase draw_number by one for each subsequent pick.
What does the API request cost?
Each API request costs $0.002. The browser version can execute the same deterministic logic locally.