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
Overview

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.

How it is used

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).

Common uses

• 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

Guidelines

• 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

Examples

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

Rule DSL

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

Transforms

.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.