I understand how complicated constructed languages can be. I do not want that though. The language would need no grammar or syntax. But I would like to create places/people names and maybe the odd noun for the language.

But here's the kicker... I want to be able to generate these languages and quickly, one per player. Potentially hundreds of them.

It occurs to me that even though I don't know Japanese, I can recognize Japanese-sounding words because Japanese has some system of rules about what their words can sound like. And this is true as well for many other languages (probably all of them). For the Japanese example, they have a restricted number of vowels, and all syllables seem to end with a vowel. Consonants don't seem to cluster like in European languages (but for those, we only get particular clusters).

Has anyone actually created such a system/algorithm before? If not, is this something I could create myself or is this more like some PhD research project level of difficulty?

  • 2
    $\begingroup$ Wouldn't this be better suited for conlang.SE? $\endgroup$
    – L.Dutch
    Commented Mar 9, 2020 at 17:33
  • $\begingroup$ @L.Dutch-ReinstateMonica, I could see it either way. It's definitely a WB-relevant problem, and since the OP is ignoring many of the issues that would ordinarily be present with building a language, conlang.SE may or may not be better. $\endgroup$
    – Matthew
    Commented Mar 9, 2020 at 17:36
  • 4
    $\begingroup$ You have NO IDEA how angry the ghost of J.R.R. Tolkein is with you right now. $\endgroup$ Commented Mar 9, 2020 at 17:45
  • 1
    $\begingroup$ @MorrisTheCat Ghost of JRRTolkien and I are already enemies, nothing has changed. $\endgroup$
    – John O
    Commented Mar 9, 2020 at 17:48
  • 2
    $\begingroup$ Check out Vulgar. I think it will fulfill all of your needs and more. $\endgroup$ Commented Mar 9, 2020 at 20:54

2 Answers 2


Awkwords is the first one that comes to mind. You enter in a bunch of letters or short strings for each category, and then write rules for how the categories can be chained together. The program pulls one string at random for each time it sees a call to a category, so it's an easy way to get thousands of combinations out of just a few inputs.

It definitely misses a lot of the subtlety that languages really end up with, but I think it's a good starting place to get the feel of what words can end up looking like.

  • $\begingroup$ This is definitely what I had in mind. At first I thought it too simple, but reading through the help file you can do all the important things... someone's already written the spec for how to describe/code these. Now I just have to come up with a way to randomly generate the parameters for it, and chuck them into a jsonb column in postgres. $\endgroup$
    – John O
    Commented Mar 9, 2020 at 21:14

Well... check out any fantasy name generator for examples. These probably do not directly suit your purposes, but they might give you some inspiration. You might also want to check out this; it generates maps, but part of its logic includes generating names.

As I understand it, most of these sorts of algorithms are based on having a set of potential phonemes and a set of rules (possibly, probabilities, some of which may be zero) about what phonemes may appear in succession. As noted, there are certainly extant examples of software with already-provided rules. I don't know offhand if anyone has made a general-purpose program of this nature that you can feed your own set of phonemes and rules.

...but the problem you are asking about (IIUC) is how to create these data sets in the first place, and that is a much harder problem, which can be complicated depending on your use case. For instance, are we even talking about human languages, or are you interested in creating "words" that are expressed as color patterns, scents, arm movements, ...?

That being said... what you might try is to take a similar approach to generating rule sets as to generating words. You'll need your own software (or someone else's you can use as part of your own suite, i.e. awkwords probably won't help directly) that takes a rule set. Then, what I would do is create a 'master' set of all possible phonemes and possibly 'seed' rules for combinations and/or what sets of phonemes may be combined, and write an additional layer to generate a language rule set from the master set.

  • $\begingroup$ I need to generate from between 50 and up to 400 different "words" that most people would get the feeling that they "belonged together". And I need multiple sets like this, where they would believe words from different sets don't belong together. Therefor I don't think the fantasy-name-generators will be a good fit for this. This is decidedly for nonhuman languages, which has its own problems, but assume that the aliens all vocalize more or less as humans do. Maybe toss in a few "coughs" and "glottal clicks" as possible phonemes. $\endgroup$
    – John O
    Commented Mar 9, 2020 at 17:47
  • $\begingroup$ @JohnO, how many different languages do you need? If you only need a few, then something like awkwords or some other existing generator should be fine; your task is just to construct a few rule sets. If you need many languages... er, good luck! (One thing I don't love about awkwords is that it is less flexible than a something based on probability matrices would be.) Why do you think fantasy name generators are not a good fit? $\endgroup$
    – Matthew
    Commented Mar 9, 2020 at 17:51
  • $\begingroup$ I'm working on an MMO game. I'll need a few language for every player. Depending on the success of my idea, this means I could need many thousands... or a handful. I don't think there will be NPC languages. I only need a textual representation (thankfully), and I'll probably use the Latin alphabet for transliteration. Though maybe with some IPA thrown in. The biggest use will be for coming up with 8-50 "crops" per player. Others are likely to be person/place/organization names, ala "the Glibnak Liberation Brigade". I'd need a way to encode the rules for the language to store that for reuse. $\endgroup$
    – John O
    Commented Mar 9, 2020 at 17:58
  • 2
    $\begingroup$ So... yeah, you need a lot of languages, not just a lot of words in a few languages. I don't know if anyone has tried to tackle that. (Also, that being the case, I could see more of an argument for conlang.SE, since you're essentially asking about how to start with constructing a language.) $\endgroup$
    – Matthew
    Commented Mar 9, 2020 at 18:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .