This is a Javascript-based vocabulary generator for conlangs based on Mark Rosenfelder's Gen. Enter your syllable types in the syllable boxes, using any categories you want (e.g. R for liquids). Define the phonemes that make up those categories in the categories box. Hit Generate to create a random wordlist. Click on the small question marks ? for help, or go read through the tutorial I wrote.

Categories:?This is where you define categories of sounds. The format is X=abcde where X is the category (any single character) and abcde is a run of characters that are assigned to the category. Categories are used in the syllable boxes. When a category is chosen, a character is chosen from its run according to a utilization rate that favors the characters at the beginning of the run. The rate can be changed via the Dropoff selector.
Rewrite rules:?These are used to perform global replacements on generated words. Since categories only output one character at a time, you can use this for two-letter phonemes. For instance, you might use T||th to change the generated word Tem into them.

Both sides use Javascript regex expressions. The left side also accepts %X and !%X expressions where X is the label of a category: %X is replaced with [a-z] and !%X is replaced with [^a-z], where a-z is the run of characters in that category.

Predefs use rewrite rules to remove long runs of letters, modify letters based on the letters around them, and more.

Syllables:? Syllables are strings made up of one or more Categories. For example, if the categories C=bd and V=ai exist, a syllable CV might output ba, bi, da, or di. If a character in a syllable isn't a category, it will be outputted directly. (For example, CoV could output boi.)
?If unchecked, more options will appear, and the generator will take them into account when generating words. Leave this checked if your syllables don't have special rules as to when they appear in different parts of a word.
Output type:?This choice determines what will appear in the Output section below. Text output will output a pseudo-text. Wordlist outputs a columnized list of 150 words. Giant List gives you 750 words, presented one per line. All Possible Syllables presents all possible syllables, one per line, ignoring Dropoff and Monosyllables settings.

Dropoff:?This choice determines how fast the utilization rate declines. (See Categories.) Assume you're using S=tspkThfS. Fast makes the t appear much more than s, which appears much more than p, and so on. Molasses has a less steep decline, but t still shows up more than s, and so on. Equiprobable gives all choices an equal chance.

graph is an approximation

Monosyllables:?This choice determines how often single-syllable words are generated, from Rare producing very few, to Always giving nothing but.

?If checked, syllable boundaries will be marked with a dot: ·

NOTE: This renders all rewrite rules useless across syllable boundaries.

?Normally, syllables at the top of a syllable box will be chosen more often than syllables lower down. If checked, this is still true, but upper syllables will not have as much of an edge over lower syllables.
? Clicking Save to Browser will store the current input to your browser's localStorage, if your browser supports it, and create a new Custom Settings Default. If you already have info stored, this will overwrite it!

NOTE: This should not be considered a long-term storage solution, as your browser might delete it if you run out of cache or localStorage space. Use Export Settings to keep an offline backup.
? Clicking Clear from Browser will delete any information stored on your browser by the Save button.
? Clicking Import Settings will open a box where you can paste information formatted by Export Settings. Clicking Import below the box will load your settings. Clicking Cancel will close the box.
? Clicking Export Settings will open a box and fill it with formatted information based on the settings currently active. Copy and save it for your own records, and use Import Settings to reload it at a later date.
Wordlist spacing:
em? When using a Wordlist as an Output type, this determines how much space each word will take up. Modify this if the words you're generating are larger (or much smaller) than the space the Wordlist is giving you. Maximum 1000.
Wordlist size:
words?When you use a Wordlist as an Output Type, it will output this many words. Maximum 1000.
Giant List size:
words?When you use Giant List as an Output Type, it will output this many words. Maximum 5000.
Pseudo-text size:
sentences?When you use Text output as your Output Type, it will output this many sentences. (Sentences are between 1 and 15 words long, strongly favoring the middle of that range. 500 sentences maximum.)
Rewrite separator:
? Defines the plain text that separates the search expression from the replacement expression in Rewrite Rules
?Clicking the Generate button starts the generator, printing output into the Output section below. The Output Type option determines what kind of information gets printed. ? Clicking the Erase Output button erases everything in the Output below. ? Clicking the Clear Input button erases everything in the syllable, category and rewrite boxes, unchecks all checkboxes, and sets dropoff, output type and monosyllables to their initial values. ? Clicking the Extra Characters button puts a bunch of IPA, Latin, Cyrillic, Armenian, Greek and Coptic characters into the Output section. (You can then cut and paste them into any of the boxes above!) Note: some characters may not print, especially if on a mobile device. ?Choosing a selection from the drop-down list and then clicking the Load Predef button will load a set of pre-defined categories, rewrite rules and syllables for you to use. Other checkboxes and options may change, too.

Kartaran and Reemish are fictional language families of my own construction. Other options should be self-explanatory.