Seeded Generator
Derive repeatable values from one phrase, then shape them with rules into passwords, names, IDs, and other structured output.
Settings file
Save an encrypted local settings file or load one back in when you need it.
Reference
The phrase is first hardened with Argon2id using scope + field + rev plus the optional extra salt as the derivation salt.
That produces a stable base key for that specific input, which is then expanded with HMAC into as many bytes as the rule needs.
The rule then renders those bytes into the final shape you want, such as a password, username, name, token, or other structured value.
phrase
-> Argon2id(phrase, salt = scope + "|" + field + "|" + rev + "|" + extraSalt)
-> 32-byte base key
-> HMAC counter expansion for more bytes
-> rule renderer
-> final output string
Settings files store the current field list and full derivation metadata so the same structure can be reused across devices or reimplemented elsewhere.
• 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
uuid() = v4-shaped UUID string formatting
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
uuid() = deterministic v4-shaped UUID formatting
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.