Word generator

Describe your sounds, pick a syllable shape, and get words that follow your rules. Every setting is stored in the page link, so you can bookmark a generator or send it to a friend.

Start from a preset

Settings

One class per line, written C=p/t/k. Class names are single capital letters.

Capitals pull from a class, ( ) is optional, [a/b] picks one. See the syntax guide below.

ti>chi rewrites, !kk rejects. Wrap in slashes for regular expressions.

Applies to / choices without a *weight. Put your most common sounds first.

Output

The same settings and seed always produce the same words. Type anything you like.

Words

Syntax guide

How the rules work

Writing a pattern

A pattern is read left to right. Anything that isn't special is written out as-is, so ka always gives ka.

  • C, V, S: a capital letter means "pick a sound from that class".
  • a/b/c: pick one of these. Works on whole chunks too, CV/VC.
  • (C): optional, used half the time. (C)%20 makes it 20% likely.
  • [a/e/i]: a required group, handy for a choice in the middle of a pattern, as in C[a/e/i]n.
  • a*3/b: weight. a is three times as likely as b.
  • \C: a backslash writes the next character literally, so \C gives a capital C.

The generator repeats your syllable pattern between the min and max syllable counts. For one-off word shapes, set both to 1 and put the whole shape in the pattern.

Sound classes

Each line defines one class. Separate sounds with /, or with spaces if you prefer: V=a e i o u works too. Sounds can be more than one character (ts, ai), and a class can use other classes, so C=P/N pulls from P and N.

Order matters when sound frequency is set to Natural or Steep: the first sound listed is the most common. Use *weight on an option to override that, like C=t/k/p*0.2.

If a capital letter appears in a pattern but has no class, it's written out as a plain letter and the page warns you.

Rewrite and reject rules

Rules run on each finished word, top to bottom, one per line.

  • ti>chi: replace every ti with chi. Leave the right side empty to delete.
  • /^k/>g: wrapping the left side in slashes makes it a regular expression, so ^ and $ mark the start and end of a word. $1 style references work on the right.
  • !kk: throw away any word containing kk, then draw another.
  • !/(.)\1\1/: reject regular expressions work too. This one blocks a letter repeated three times.
  • // note: lines starting with two slashes are ignored.
Sharing and deep links

Every change updates the address bar. Copy the link and anyone who opens it sees your exact settings and the same words. Click any word to copy it.

If you build links by hand, the parameters are c (classes), p (pattern), min, max, n (word count), f (rules), d (even, zipf or steep), seed, and u, sort, cap (each 1 or 0). Anything you leave out falls back to the default preset.

Got a good one?

Share your sound system and favorite words with the club on Discord, or bring it to a Friday workshop.

Join our Discord