Seeded Generator
Derive repeatable values from one phrase, then shape them with rules into passwords, names, IDs, and other structured output.
Settings file
Save a local settings file or load one back in when you need it.
Reference
This tool derives repeatable values from a single phrase and a small set of field settings.
Each value is based on phrase + scope + field + rev, producing a stable stream of bytes for a given input.
The rule defines how those bytes are rendered, not the underlying value.
This allows the same seed to produce different outputs depending on the rule — from simple readable values to high-entropy passwords.
Scopes and fields separate contexts (for example, per site or account), while rev allows values to be rotated without changing the phrase.
The settings file is simply the saved version of the field configuration shown on this page.
It captures scopes, fields, rules, and revisions so you can reuse the same setup without rebuilding it each time.
This makes it easier to carry the same structure across devices or maintain separate configurations (for example, personal and work).
• Generate consistent fake identities across systems
• Derive usernames, emails, and passwords from one seed
• Create reproducible test data without storing fixtures
• Map a phrase to stable IDs or tokens
• Version values over time using rev
• Use a long, unique phrase for sensitive values
• Use different scopes and fields to separate contexts
• Increase rev to rotate values when needed
• Keep a backup of your settings file if you rely on it
• Use aliases for scopes if you do not want site or account names stored directly
words(2).title = first and last name
words(2).title.trim = compact username-style version
words(2).title.replace(" ", ".") = dotted username-style version
template("%s.%s",letters(8),numbers(3)) = username-style string
words(6).sentence = security question answer
hex(32) = plain lowercase hex token
letters-numbers-symbols(16) = strong password
template("%s-%s-%s-%s-%s",hex(8),hex(4),hex(4),hex(4),hex(12)) = UUID-style string
blank() = intentionally leave this field empty
between("1970-01-01","1990-12-31") = one valid date inside that exact range
date(1970,1990) = one valid date between those years
hex(16) = lowercase hex digits
ipv4() = one IPv4 address
letters(12) = plain lowercase letters
letters-and-numbers(16) = mixed letters and digits
letters-numbers-symbols(16) = letters, digits, and symbols
numbers(6) = digits only
phone("1") = one phone number with the given country code
range(1,12) = one number inside the inclusive range
speakable(12) = one pronounceable block
template("%s-%s","id",hex(8)) = template-based formatting with %s placeholders
words(3) = three whole spaced words
.lower = lowercase output
.replace("old","new") = replace text after generation
.sentence = capitalize the first letter and add punctuation
.title = title-case each word
.trim = remove spaces from the result
.upper = uppercase output
Use + to join parts, like acct+numbers(3) or "id-"+letters-and-numbers(6).upper.
Add a trailing # comment when you want to keep a note with a rule.
Your phrase is never saved. You can keep the field list in this browser or save it as a settings file instead. If you would rather not expose site names there, use aliases.