GenGo Guide Change Log GitHub


GenGo is generator that makes words from different groups of characters. It is most often used for constructed languages and worldbuilding. It's good for anything from creating a lexicon for your conlang to names for your fictional population.


Characters are the letters or symbols that make up your words.


The basic syntax for a character group is...

X: sh å Д β タ 語 음,

Character groups can be written on the same line or across several lines, as long as they are seperated by a comma.


You can assign weight to a character to make it more likely to be picked using an asterisk followed by a number.

In this example...

C: p t k m n s w*5 l j

...the letter 'w' is 5 times more likely to be picked than the rest of the characters individually.

Since characters have a default weight of 1, you can use a decimal to make characters less likely to be picked...

C: p t k m n s w*.25 l j

Giving a character a weight of 0 still gives it a chance of being picked. If you don't want a character to be picked at all, you can comment it out.


Sometimes you might want to remove characters from a group without actually deleting them from the text field. To do this, you can use a slash to "comment" them out.

For example, this...

C: p t k m n s /w l j

Gets interpreted as this...

C: p t k m n s l j

To comment out a group entirely, just put the slash before the name of the group...

/C: p t k m n s w l j

Commenting out also works in rewrites, patterns, and filters.


Patterns are the syllable structure of your words. If the pattern contains the name of a character group, the character will be replaced by one of the characters in its group at random. Multiple patterns can be used but need to be seperated by commas.

For example, if you had the pattern 'CVC' and these character groups...

C: p t k,
V: a i

...each character in the pattern would be replaced with a random character within its group...

...and the final outputted word would be 'kat'.

If a pattern contains a character that isn't the name of a group, the character itself is added to the word. For example, if you had the same characters from the above example, but instead had the pattern 'CVs'...

...'s' in the pattern isn't the name of a group so it is just added to the word 'kas'.

Parentheses ( )

Any part of a pattern within parantheses has a chance to be filtered out.

The pattern 'CV(C)' can output...

Brackets [ ]

Any part of a pattern within brackets picks from one of the choices seperated by spaces.

The pattern 'CV[C s]' can output...

Brackets and parentheses can both be nested any amount of times...


Sometimes there are certain combinations of characters that you don't want in your words. That's where rewrites come in.


Rewrites are written very similarly to character groups...

mn: m n,

For example, if you had the word 'samna' and the cluster rewrite from above...


If you want the cluster to just be removed from the word, don't enter anything for the replacement characters. Make sure to still seperate it with a comma if there are multiple rewrites...

nm: ,
mn: m n

(Not yet implemented) Rewrites and filters also accept group names. If we had the pattern 'CVVC' and this rewrite...


(Not yet implemented) If you wanted a character that is also a name of a character group, you can put it in double quotes...

VV: "V"

You can also use character weights in rewrites.

Filters & Options

Filters - If a word contains any of the characters or clusters, the whole word will be removed from the final word list.

Words - Total number of words to be generated.

Syllable min and max - The minimum and maximum number of patterns allowed in a word

Duplicates - Removes any duplicates in the final word list. The more complicated your words can be, the less likely duplicates are to be generated

List - Displays each word on a new line instead of a paragraph

IPA - Stands for 'International Phonetic Alphabet', which you can learn more about here