Check out our Trello board for upcoming changes!


20 October 2020

  • Removed Generate this seed's language button. The seed number method is notoriously unreliable for regenerating the correct language, and despite warnings not to rely on it, many users did mistakenly rely on it. This will encourage users to save a settings file. This button was only there for legacy reasons and is not really needed anymore.
  • Fixed: language file not saving properly when changes are made to the language without regenerating the language before saving
  • Fixed: some issues with "exceptions to" sound change rules
  • Fixed: Turn Off Smart Translator becoming unselected after generating new language
  • Added null symbol to IPA buttons
  • Minor scrolling and performance improvements in Chrome and Edge


14 October 2020

  • Added more random polysemy
  • Fixes to mobile layout
  • Fixed for Chrome 86: cancelling Save This Language still downloading a settings file
  • Format improvement to downloadable HTML file


4 October 2020

  • Changed settings file extension to .vulgar
  • Loading a language changes the browser's tab title to the language name
  • Added ability to custom multiply noun gender proportions. EG: Feminine*10 makes Feminine 10 times more likely than other listed genders
  • In response to some users getting the formatting wrong, = Random can now be written in all caps as = RANDOM
  • Added more random polysemy
  • Fixed: gender proportions not dropping off naturally when you don't add a multiplier to them
  • Fixed: unable to have custom genders that contain extended Latin characters in the abbreviation
  • Fixed: format issues in the grammar tables when an example-word is not given
  • Fixed: lateral affricates not showing in consonant chart


27 September 2020

  • Hovering over Affix buttons in Derived Words sections display what the affix tag actually is
  • Removed "undefined" from the default example sentence in cases where not all the words were generated. Often users edit the Grammar Editor and do not create a pronoun table. This means "you" and "your" are "undefined", which is often erroneously interpreted as being a bug. It's easier to hide the issue and let the user discover there is not word for "you" when they try to translate something themselves.
  • Added missing sound change options [+ATR], [+RTR], [+palatalized], etc.
  • Fixed: [+long] not working as a sound change
  • Fixed: Your Phonemes not appearing after loading a language
  • Fixed: entering keyboard 'g' not translating to IPA 'g' in Your Phonemes
  • Fixed: Arrange phonemes in alphabetical order now sorts IPA symbols better
  • Dropped support for Tumblr theme. This is still available for older versions of the program


23 September 2020

  • Translator: hovering over affixes in gloss displays an expansion of what the abbreviation means
  • Added ability to apply "example-word =" to a single cell, eg: "example-word F.SG = cat", instead of just one whole row/column
  • Remove diphthong and tie bar diacritics now only removes diphthong symbols
  • Added more random polysemy
  • Added prenasalised symbols ᵑ and ᵐ to alt keys
  • Fixed: Smart translator not loaded after generating second language
  • Fixed: prenasalised stops not appearing in consonant chart
  • Fixed: ʔ͡h not appearing in consonant chart
  • Fixed: adding null symbol Ø to illegal combinations causes hanging issues


19 September 2020

This version was skipped, due to bugs with the Grammar Editor.


11 September 2020

  • Grammar editor: added ability to insert regular blank tables (that don't necessarily have to have anything to do with grammar) using Markdown format. See guide
  • SUFFIX and PREFIX tables: when custom defining the affixes, if you forget to add the '-' it will be filled in automatically
  • Derivational affixes: TO.CREATE has been renamed a little more generally to NOUN.TO.VERB; LIKELY.TO have been renamed to TENDING.TO -- this will not affect previously generated languages
  • Fixed: Vowel Probabilities disables when Advanced Word Structure is selected (since it doesn't apply in this case!)
  • Fixed: issues with Insert Grammar Table not capitalizing "1st", "2nd" and "3rd" properly
  • Fixed: spelling rules that don't actually apply a change, like "e > e", don't show up in spelling table


30 August 2020

There have been a lot of format changes to Vulgar in the past few months. Yet again, we have some small changes to Phonological Rule Notation (PRN). Vulgar will convert your old settings to the new version (although there may be some edge cases where things go wrong).

What's the change? Previously, PRN used round brackets to mean an "optional" pattern, eg: o(C) > u meant "o (and an optional C after it) change to u". Now, PRN aligns with how RegEx does optional patterns -- by adding a question mark after the pattern, eg: o(C)? > u.

Why the change? PRN converts to RegEx behind the scenes. In RegEx, round brackets are simply a way of grouping a pattern. Once grouped, there are various different things that can be done to the grouped pattern, beyond just making it optional. By aligning closer to RegEx, we can leverage some of its other features in PRN (such as backreferencing).

Furthermore, Vulgar has been using both PRN and pure RegEx in different areas of the program. This is kind of confusing! PRN is more familiar to conlangers, so in version 1 of Vulgar PRN was the only option that we gave to users. But we soon discovered that PRN had problems: It's never been properly standardized by anyone; it's just a convention that linguists use in literature, and is rarely actually tested in computer programs. This has lead to some small inconsistencies in how it's written. But it also lacked a few standardized ways to do things that RegEx has already has already solved for us. So we quickly allowed users to leverage the power of RegEx in spelling rules and affix rules. Despite this, PRN was what your used in the Sound Changes field, because the way it does "in the environment of" changes is much easier for beginners to wrap their heads around.

Moving forward, we are going to start encouraging this new (ever so slightly modified) version of PRN as the default way of doing everything: Sound Changes, Spelling Rules and in Affix Rules. Because it can now be used in more than just phonological rules, we are opting to call it more generically "Sound Change Notation". The important thing to remember is that SCN still always coverts to RegEx behind the scenes, so you can always use RegEx if that's what you're used to! In the Sound Change field, you no longer need write "re " to signify a proper Regex rule.

Other changes

  • Derived words: you can now make derived words that act as root words that don't go into the dictionary, by using the part-of-speech 'r'. These can be used an intermediary words in other derived words. Eg: you might want to compound some words and then apply a sound changes after the compounding has already happened. This requires two steps, because if it was done in one rule, the sound changing affix would affect only one of the words.
  • What was previously labelled Apply changes is now labelled Apply as permanent changes


26 August 2020

  • Fixed: sound changes not working inside grammar tables
  • Fixed: automatic spelling rules sometimes doubling a diacritics for long vowel rules
  • Fixed: Second spelling not doing rules with stress symbol in them
  • Fixed: ʥ ʨ not appearing in consonant chart
  • Fixed: some IPA symbols with diacritics not displaying in correct column, eg: d̪ not displaying in dental column
  • Fixed: Consonant table - multiple phonemes with diacritics in the same cell may cause voiced / voiceless ordering to be wrong
  • Fixed: style issues with downloaded HTML file (some fonts and table borders)
  • Format change: shorthand rule ᴰ (superscript D) now stands for "any diacritic", whereas D stands for "any IPA letter without diacritics"
  • Regex: new simplified way to do backreferences -- instead of writing $1, $2, etc. you just write 1, 2, etc. Also, you can write 0 instead of $& to replace with the whole match.


21 August 2020

  • Added ability to use grammatical affixes in Dervied Words field
  • When using grammatical affixes, there is no need to add the part-of-speech (eg :N) unless it's actually require for disambiguation from other affixes
  • Advanced Word Structure: if you do not enter any default patterns, it uses all the patterns for parts-of-speech as default patterns
  • Advanced Word Structure: added warning if you don't enter any affix patterns
  • IPA symbols scroll with screen reduced in size so that it isn't covering as much of the screen
  • Fixed: IPA symbols scroll with screen not working on mobile
  • Fixed: ŋɡ not getting correct spelling
  • Fixed: hanging issues when no vowels entered into Custom Phonemes or Word Structure
  • Moved location of the two options that only apply to "Custom Phoneme" and not "Word Structure" -- those being Add random phonemes to custom selection (upon generation) and Max consonants before and after vowel


15 August 2020

  • Grammar Editor: when using Insert Grammar Table, the capitalized abbreviations of grammatical properties are now automated. EG: writing "singular" automatically converts to "SinGular"
  • Format change: Vulgar now uses proper IPA symbol /ɡ/ instead of /g/. The old g will convert to ɡ where appropriate. This does not break compatibility between versions.
  • Edit This Language: derived words are entered into the derived words field, instead of mixed in the Add and Remove Words field
  • Fixed: derivational affixes not resetting to "= Random" upon refreshing Firefox browser, potentially causing affixes to have incorrect phonologies
  • Fixed: "inclusive" and "exclusive" used wrong abbreviation
  • Fixed: double brackets method to capture pronouns not pulling the correct version of that pronoun in some cases
  • Fixed: double brackets unable to translate compound words
  • Fixed: default spelling rules sometimes having ordering issues
  • Fixed: clicks not displayed in phoneme table
  • Fixed: explanation of Absolutive case
  • Fixed: when adding two custom words that both equal the same conlang word, the generator would re-generate one of them thinking that you want unique words only
  • Fixed: Add and Remove Words not replacing randomly generated word, when the English definition has brackets in it
  • Fixed: some sound changes with diacritics not working when it changes to a feature, eg: x̃ > [+voice]


30 July 2020

  • Added Smart Translator
  • Format change: names of grammar affixes now make a more obvious delineation between the part that indicates what part-of-speech the affix is intended for. So, VERB.PAST is now just PAST*. This change has been done to make it easier for the Smart Translator to understand where affixes should go.
  • Format change: all abbreviations now conform to the abbreviations Max Planck Institute uses and Wikipedia
  • Grammar Editor: when creating agglutinative languages, changing the order of the affix tables in the grammar editor changes the order the affixes are applied in the Smart Translator
  • Manual translator: added the ability to insert grammar words (in upper case) to target specific words, eg: nominative "you" vs accusative "you"
  • Fixed: /w/ incorrectly labelled as labio-velar instead of labial-velar
  • Fixed: affixes that act like words (where the hyphen is separated from the affix by a space) not working in translator
  • Fixed: no translations for article affixes in tables
  • Fixed: affixes with numbers in them not working inside double brackets

* PAST = inside the grammar table and then -PAST:V if you need to use it in the manual trasnlator.


17 July 2020

  • Fixed: Advanced Word Pattern percentages not working for bracketed groups
  • Fixed: after selecting a natural language Word Structure and altering the phonemes, it no longer removes the whole spelling for that language
  • Fixed: No Fixed Stress option creating inconsistent stress locations in translator and in sound changes in square brackets
  • Fixed: Regex patterns with uppercase V and numbered backreferences (eg, $1, $2) not working in some cases
  • Fixed: adding too few phonemes sends an error message that not enough phonemes were added, even when "Add random phonemes to custom selection" is checked
  • Fixed: incorrect probabilities for Perfect aspect outcomes
  • Fixed: no translations given in verb tables that combine person with tense
  • Fixed: spelling issues in English and Portuguese
  • Fixed: format issues caused by using ((double brackets)) inside grammar tables and Show changes between [square brackets]
  • Fixed: Arrange Korean Jamo Characters Into Syllables not working with Second Spelling
  • Fixed: unable to add grammar tables that consist only of columns


9 July 2020

  • Format change: Sound Changes use Phonological Rule Notation (PRN). However, in previous versions, omitting the "in the environment of" symbols (/ _) turned into Regex notation. Unfortunately, this meant it was impossible to do PRN rule that applies everywhere in the word (which is common for evolutionary rules). Now, if you need to write a pure Regex rule, write "re" before the rule e.g. "re p > f"
  • Added Ban same syllable twice in a row
  • Advanced Affix Patterns: can now do patterns that use conditional statements, or sound changes.
  • Derived words: a special affix -AFFIX can be added to words, which creates a different random affix every times it's used. This can simulate one-off affixes, like how "island" is clearly related to "land" but the prefix "is-" does not exist in any other words. -SUFFIX and -PREFIX are also available.
  • Affix rules: Ability to match multiple conditions in an affix rule using & symbol; eg IF #V & V# THEN ... means if begins and ends in a vowel, then apply the rule
  • Affix rules: Ability to do 'not' matches using !, eg: IF ! #m THEN ... means if does not begin with m
  • Vocab: added more random derived words and compound words
  • Vocab: added more random polysemy (where one conlang word translates to two or more different but related words in English)
  • Shorthand symbols: added X for "any phoneme"
  • Settings file can be output with Show The Code option
  • Fixed: Second Spelling option causes errors with CSV export and LaTeX export
  • Fixed: words may form polysemy with the wrong word if the target word is included anywhere in the definition. Eg: if "assemble" is intended to combine with "prepare" it may combine with "cook (prepare food)" instead
  • Fixed: a phonological rule such as e → i changing any kind of e + any diacritic, even though e + any diacritic implies it's a different phoneme
  • Fixed: "exception rules" like e > i / !_# don't work if there's no other environmental conditions (no other underscore)
  • Fixed: auto-translating morophological rules into English did not translate ">>" and "<<" sound changes correctly
  • Fixed: unable to do shorthand uppercase symbols with quantifying regex symbols eg: C+, C*, C{2}
  • Fixed: unable to hook the correct part-of-speech of a word in the translator using ':', eg live:v vs. live:adj
  • Fixed: in translator, ability to use underscore with parenthesis, eg: to translate "our (excluding you)" you can write "our_(excluding_you)"
  • Fixed: spelling rule ([aeiou])(?=ᴅ*ː) turns into ([aeiou])LOOKAHEADᴅ*ː) after pressing Edit This Language
  • Fixed: alphabetizing issue with some compound words
  • Fixed: improvements to Firefox Desktop compatibility (version 78 and higher)


12 June 2020

  • Added Animate/Inanimate gender option (see Grammar > Noun Gender section)
  • Phonological rules: added ability to do exceptions to rules with ! symbol. EG: r → l / !_# means "r changes to l everywhere except at end of word", t → ts / _i !s_ means "t changes ts before i, except after s" (Chrome browser only)
  • Glosses: ability to do intermediate lines for intermediate translations
  • Added Previous Seed option to regenerate the previous language in case you accidentally generate over it before saving it
  • Grammar editor: Added Expand editor to fit content
  • Shorthand symbols: added O for obstruent, R for sonornat/resonant, Z for continuant, and U for syllable
  • Vocab: added more random polysemy (where one conlang word translates to two or more different but related words in English)
  • Improvements to mobile layout
  • Text in translator is not cleared in between generating new languages; this makes it easier to test translate the same sentence over and over
  • Ability to add affix tags with full stop, eg "study.PAST.SG" as opposed to using hyphen "study-PAST.SG". This does the exact same thing as using hyphen, however a full stop is the convention when representing a sound change, or some kind of morphology where the line between the root word and the affix is not so clear. The hyphen is the convention of representing a clear break between root and affix. Similarly, compound words and phrasal verbs such as "hang out" can be written as "hang.out" when attaching affixes, or in translator.
  • Fixed: Ergative/Absolutive languages give explanations for Nominative and Accusative cases
  • Fixed: after hitting Edit This Language, some spelling rules have diacritics stacked on top of each other
  • Fixed: vowel harmony causes long weird affix rules
  • Fixed: not generating a dedicated neuter pronoun if the language has neuter nouns
  • Fixed: perfect aspect word for 'finish' may be undefined
  • Fixed: HTML download not rendering fonts correctly
  • Fixed: adding Grammar Table when cursor is in the middle of another grammar table splits the grammar table in half
  • Fixed: Grammar Table Inserter changing rows (without cols or blocks) into cols
  • Fixed: cursor placement issues in translator when inserting affixes
  • Fixed: errors in Mandarin word structure
  • Fixed: Affix tag names can now use any Unicode uppercase letter
  • Fixed: Translator unable to translate English words with non-ASCII characters in them


13 May 2020

We've implemented a few format changes to make Vulgar a little more intuitive. You may have to modify some of your code to be fully work with 9.4, but moving forward we're hoping to not have to make these kinds of changes again.


  • Vulgar is moving away from using the seed number to save the language! A new Edit This Language button saves the vocab to the Add And Remove Words section and the grammar to the Grammar Editor. This allows you to more easily edit a randomly generated language, and to port languages to newer versions of the app.
  • Grammar tables: axes 1, 2 and 3 have been re-labelled to "columns", "rows" and "blocks". These new labels preserve the layout -- i.e "column" always makes a column -- whereas the old numbered system always made the longest axis the rows. This change was made to better describe was it does.
  • Custom compound words: To create compound words that make one distinct word, now you use hyphen (-) instead of the plus sign: God of War : n = war-god. This change was made because affixes use hyphens, so now there is consistency between the two. To create compound words that make two separate words, you now use an actual space instead of the & sign: God of War : n = war god. (This means that when searching for an entry that comprises of two words, eg "hang out", you have to write it as hang_out.)
  • Root words: previously you could create root words (that aren't added to the dictionary but can be used in derivational rules) by adding them as !customRootWordName. Now you add them into Add And Remove Words with the special part-of-speech 'r'. This change was made to make them align with how full words are added, and because ! has other meanings in Regex.
  • Previously, custom affixes used the > symbol to sound change the final match in the word, whereas regular sound change rules use the > to change every match in the word. For consistency, > now changes every match in custom affixes, whereas you have to use >> to change the final match, and << to change the first match.
  • Similarly, the > had been used in WORD tables to translate each table cell into English. This is now being replaced with the ~ sign. What used to be 1SG.NOM ~ I = yo is now 1SG.NOM ~ I = yo (1st person Singular Nominative cell is the word "I" in English, and the conlang word is "yo"). This change was made to reduce the number of meanings that '>' has, and for easier machine readability.
  • Custom affixes with IF and ELSE statements can now be written on multiple lines (and with indentation) for improved readability. Previously, an explanation of the rule could be written in plain English by writing it on a new line directly below the rule. Now, you must write a double quote mark (") to signal the start of the explanation. See example here. We have also added ability to do multiple independent IF statements (as opposed to just ELSE IF statements). To do this, separate IF statements by a semi-colon. See example here.

Other new features and bug fixes:

  • Vocab: added optional sci-fi vocab (Pro version only)
  • Vocab: added more random polysemy (where one conlang word translates to two or more different but related words in English)
  • Word structures: added Arabic, Hungarian, Indonesian, Irish, Mongolian and Zulu
  • Phonology: added separate table for co-articulated phonemes
  • Phonology: added more variation in randomly chosen consonant clusters. New algorithm also does more to limit excessive consonant clusters in single words.
  • Phonology: added ability to multiply phonemes by decimal numbers (up to one decimal number)
  • Grammar Editor: added system for doing manual glosses, see more info here.
  • WORD tables: conlang side of the equation can use double brackets to pull a word from dictionary (or from a previously generated table) using the double brackets: eg, in a table where you are creating possessive words 3SG.F ~ her = ((she)) means make the word for "her" the same conglang word as "she".
  • Adding stress symbols to spelling rules automatically checks "Make spelling rules sensitive to stress symbol"
  • Phonological rules: Use sigma sign (σ) to mean "syllable" in phonological rules. This differs slightly from using the syllable boundary symbol (%). For example, g > k _σ would change g to k at the end of a syllable so long as another full syllable follows it (i.e. not at the end of a word). Whereas g > k _% would change g to k and the end of syllable and the end of a word.
  • Phonological rules: added ability to do sound changes that change from a null symbol, eg: Ø > e / p_k
  • Translator: when searching for an entry that comprises of two words, eg "hang out", translator looks for "hang" and "out", instead of "hang out". To pull "hang out", write it as hang_out.
  • Added new shorthand symbols: capital D = any diacritic, superscript ᴰ = any non-combining diacritic (such as aspiration), and small caps ᴅ = any combining diacritic (ones that attach to the phoneme)
  • Fixed: Translator unable to find words added via Grammar Editor tables
  • Fixed: loading settings with diacritics in grammar tables breaks the table
  • Fixed: Translator unable to find capitalized words in dictionary
  • Fixed: alphabetical order errors with compound words
  • Fixed: SUFFIX and PREFIX tables generate either affix if Advanced Word Structure is selected
  • Fixed: Regex lookbehinds not working in morphological rules
  • Fixed: sound changes that use places of articulation (eg: [+palatal], [+velar]) sometimes mapping to the wrong sound
  • Fixed: sound changes unable to have # symbol inside curly braces
  • Fixed: pure regex sound change rules starting with # symbol not working
  • Fixed: syllabic consonant symbol not attaching to the consonant
  • Fixed: text alignment, indenting and blockquote not working in final output from Grammar Editor
  • Fixed: unable to change fonts in Grammar Editor lists
  • Fixed: some incorrect phonemes in French and Spanish word structure
  • Fixed: various formatting issues in World Anvil BBCode
  • Fixed: having no mid-word consonants throws an 'undefined' error
  • Fixed: unable to define custom affixes if their abbreviation comprises of only a single character
  • Fixed: mobile devices autocorrecting three dashes '---' to '—-' in Grammar Editor (Vulgar now reads '—-' as a section break)
  • Fixed: refreshing window in Firefox not resetting default settings properly
  • Fixed: pressing ALT unfocuses you from the input box


1 April 2020

  • Removed Evolve Language option, since Sound Change option now does everything it can do and more. Sound Change applies to the grammar, Evolve button didn't. From the survey we recently conducted, there is a lot of interest in better Evolution features in general. Moving forward, the process of evolving an language is probably going to focus on using the seed number and adding tweaks into the settings. Right now, I wouldn't say that Vulgar evolves languages very well, since language evolution is a whole lot more than just sound changes, and the way to do that involves a lot of manual work. But improving the Evolution is going to be a future project.
  • Sound Change and spelling rules either side of an "or" bar symbol | can be multiplied to create a ratio, eg: ʃ > sh*3 | ch*2 | s is the same as ʃ > sh | sh | sh | ch | ch | s
  • Number system added to random grammar
  • Word Structures for natural languages now do spelling, and have more accurate frequency order
  • Added word structures for Welsh and Persian
  • Grammar Editor: you can now use three dashes --- to create boxed off sections for your grammar in final output
  • Randomly chosen phonemes now vary in order of frequency. In previous versions, /m/ was always made more frequent than /k/. Now, this order may vary slightly, while still having tenancies to make common phonemes more common.
  • Translator: If a word is not in the dictionary, the translator now passes the word through, as is, instead of translating to 'undefined'. This helps with translations that involve proper names.
  • Phonotactic Analyser name change to "Word Structure Analyser"; no longer treats any group of vowels as a diphthong, you must specify them with the diphthong symbol
  • Fixed: CSV file not exporting noun gender information
  • Fixed: HTML file not exporting English to Conlang side of the dictionary
  • Fixed: Some specific words could not be remove using Add/Remove Words
  • Fixed: "Apply default spelling rules as well as custom rules" not working
  • Fixed: Grammar tables not inserting at cursor location in Grammar Editor
  • Fixed: Warning that not enough phonemes have been supplied not working in some cases
  • Fixed: "Remove diphthong and tie bar diacritics" turning itself back on in some scenarios
  • Fixed: "Remove diphthong and tie bar diacritics" not applying to Translator and Name Generator
  • Fixed: Affricate shorthand symbol (A) not working
  • Fixed: Randomly chosen phoneme inventories sometimes having double ups
  • Fixed: No automatic spelling for cç and ɟʝ
  • Fixed: "Analyse word structure of your own language" not reading stress symbols properly
  • Fixed: "Analyse word structure of your own language" inserting the old multiplication symbol for phonemes
  • Fixed: Unable to make custom spelling rules that are conditional on diphthong symbol
  • Fixed: Diacritics that go above the IPA letter instead of below not showing up in final output


19 February 2020

  • Change: Alt key to generate new language is now ALT+Enter to accommodate for diacritics getting ALT keys. See full list here.
  • Added Unique Name Generator (under Translator)
  • Added Affix Patterns in Advanced Word Structure option
  • Custom affixes: if you want a null affix you now write "ADVERB =" instead of "ADVERB = -"
  • Grammar editor: added Cinzel and Alata as font options
  • New LaTeX template. See info here
  • Translator now lists other possible translations for words (previously it only displayed the first translation it found)
  • Translator can differentiate between a word with different parts of speech if you specify it. Example: "change:v" vs "change:n" for verb and noun forms respectively.
  • Tone can now be represented as diacritics (although this method is inherently more limiting, as it cannot represent contours)
  • Improvements to default spelling choices
  • Fixed: Advanced Word Structure syllable patterns could only equal one pattern, eg S = CV was valid, but S = CV CVC was not valid
  • Fixed: LaTeX output not working in 9.3
  • Fixed: removing default word from dictionary generating a slightly different dictionary even with seed number
  • Fixed: custom added nouns with gender sometimes not overriding the default word
  • Fixed: some spacing issues in grammar editor
  • Fixed: some words having wrong part-of-speech in CSV and PDF output
  • Fixed: word boundary # symbol not working in some instanced in affix/sound change rules.
  • Fixed: No Spelling option makes it so that the language can't be exported to HTML/PDF/etc
  • Fixed: Latin-1 Supplement characters may be used in Affix Tag names, eg these ones: ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝ
  • FIxed: unable to use $& in phonological rules
  • Fixed: custom affix names unable to start with a digit
  • Fixed: incorrect probabilities for Nominative/Accusative vs Ergaitive/Absolutive
  • Fixed: definitions with commas inside parenthesis splitting up English to Conlang definitions in wrong place in HTML and LaTeX output
  • Fixed: Translator outputting IPA incorrectly when using Show changes between [square brackets]
  • Fixed: HTML file having no table borders in grammar section
  • Fixed: Convert Spelling with Diacritics into Single Characters option not actually working


12 January 2020

  • Added ability to explain custom affix rules in plain English by simply writing it on the line below the rule. See example here.
  • Added Convert spelling with diacritics into single characters option. This converts a letter + diacritic combination into the single Unicode character (only if the character exists)
  • Added an expansion of part-of-speech abbreviations to the top of dictionary
  • Seed number auto-populates to Generate This Seed's Language
  • Vocab: Added more random polysemy (where one conlang word translates to two or more different but related words in English)
  • Vocab: Added more default derived words
  • Derived words: Vulgar shows warnings if you spell an affix tag wrong (previously, it assumed you were trying to make a new random affix)
  • Grammar editor: Added Noto Sans as default font. Changed monospace font to Roboto Mono.
  • Grammar editor: Added ability to re-insert default Phonological Rules list
  • Word Structure: Added Swahili
  • Fixed: Adding a custom word that already exists in the default dictionary now stops that word from having polysemy with any other word. EG: custom adding "look : v" means it will never be combined with the same word as "see".
  • Fixed: unable to derive a word from one part of speech to another part of speech without adding any affixes, e.g. study:n = study:v
  • Fixed: When defining advanced word patterns, the part of speech can be written in full like "noun =" (previously it has to be the abbreviation "n =")
  • Fixed: ç being converted to c in final output
  • Fixed: incorrect audio for ʌ and ɔ
  • Fixed: ɥ not displaying in consonant chart
  • Fixed: changed font of grammar table to Noto Sans in order to be IPA friendly
  • Fixed: colon (:) not being converted to long symbol (ː) when used in grammar table affix rules
  • Fixed: some syntax errors in IF ELSE statements causing hanging issues
  • Fixed: some errors with phonological rules when phoneme converts to something that is made up two or more characters; also improved performance speed when applying phonological rules to the point that it barely slows generation time anymore
  • Fixed: translator not working if any bullet point lists are written in the grammar editor
  • Fixed: translator being unable to translate words if they are written with sentence case capitalization; this also fixes translator not being able to translate "I"
  • Fixed: second spelling alternating between first and second spelling for each in translator and compound words
  • Fixed: second spelling causing anglicized language to have a space in it
  • Fixed: potential issues with custom derived words applying affix to incorrect base word
  • Fixed: Remove Words sometimes not removing all instances of the word, also being unable to remove word entries with parentheses in them
  • Fixed: settings file not saving with .txt extension in Firefox
  • Fixed: Part of speech morphology: incorrectly displayed in derivational morphology list
  • Fixed: Users can no longer Word Patterns that make the whole pattern optional, as this may generate words with no phonemes at all. Such patterns are automatically filtered out before word generation
  • Fixed: positioning issues when clicking on and off some input boxes


6 December 2019

  • World Anvil collaboration: World Anvil now has the option to create searchable dictionaries, and Vulgar's CSV output can be used to bulk upload your vocabulary into a World Anvil language!
  • Dervational affix changes: names of default derivational affixes have been changed to be better describe their function, and more rules have been added; dervational affixes now have their own input box; added option to not display list of derivational morphology in final output
  • Vocab: default color terms are automatically divided up differently. Eg: a language may use the same word for "yellow" and "red", or "blue" and "green", or may have dedicated words "light blue" vs "dark blue" as opposed to a single word for blue; added various other forms of polysemy
  • Advanced Word Structure: added ability to make word patterns for individual parts of speech
  • Removed requirement for affix tables to have a part-of-speech
  • Characters with precomposed diacritics (i.e. the ones on mobile keyboards) are now automatically converted to valid IPA
  • Added aspiration and other superscript IPA symbols (ⁿʷˠˤʲ) to the ALT key function
  • Fixed: ALT keys not cycling through IPA properly in Grammar Editor
  • Fixed: ALT+Equals not generating new language in Firefox
  • Fixed: CSV putting some translations in wrong column
  • Fixed: automatic spelling rules sometimes having ordering issues that would cause double changes to the spelling
  • Fixed: some custom added words not deduplicating if they are already in the default vocab
  • Fixed: illegal combinations sometimes not applying to the language name
  • Fixed: comma erroneously added after the part-of-speech of some entries in the dictionary
  • Fixed: issues with trailing white space in phonological rules


11 November 2019

  • Added ability to save language in BBCode format, which can be copy pasted in the worldbuilding platform World Anvil
  • Symbol to multiply phonemes has changed from = to *. The equals sign has too many other uses, and star * is used for multiplication in programming languages, so this makes more sense anyway.
  • Advanced Word Structure: Enabled used of * multiplication
  • Vocab: Added more random polysemy (where one conlang word translates to two or more different but related words in English)
  • Vocab: added possessive determiners (my, your, his, her, our their) which were sorely missing from the grammar section
  • Grammar editor: all default sections (phonology, spelling, example sentence, etc) are now automatically removed when using the Grammar editor, taking an 'opt in' approach instead of an 'opt out' approach
  • Translator: shows IPA under spelled sentence
  • Translator: improvements to translating words that aren't exact matches in the dictionary, eg: definitions that have added information in parentheses
  • Translator: buttons that insert the affixes now insert at cursor location
  • Changed vowel table style to be easier to export to HTML / BB code
  • Fixed: If not enough Advanced Word Patterns have been entered to generate 4000 unique words, a warning message will display
  • Fixed: another possible hanging issue caused by having a small phoneme inventory
  • Fixed: bug where conlang words couldn't be assigned more than two English words as translation
  • Fixed: not using Anglicize language name in some parts of the output


12 October 2019

  • Advanced Word Structure classes can be multi-phoneme strings eg: A = ari los ma. Previously they could only be made up of single phonemes all separated by a space
  • Grammar editor: Using double brackets to pull word from dictionary now returns just the spelling of the word with no formatting
  • Fixed: Vowel Probabilities causing hanging issues
  • Fixed: Display issues with shorthand symbols in spelling rules & Apply default spelling rules as well as custom rules checked
  • Fixed: Issue with ALT keys sometimes not populating to Grammar Editor
  • Fixed: Advanced Word Structure showing incorrect syllable structure and phoneme frequency info in final output
  • Fixed: Advanced Word Structure not showing "Your Phonemes" list in Spelling section


2 October 2019

  • The new Advanced Word Structure: What was previously "Advanced Word Structure" is now called "Word Structure" and the new Advanced Word Structure is a whole new method of defining words, which enables you to define phoneme classes and how they pattern in words. This gives you even finer control over the formation of words, specifically of how syllables are formed.
  • Spelling rules: added Arrange Korean Jamo characters in syllables. For people using the Korean script, you can now map IPA symbols to Hangul Jamo letters and they will combine into correct Hangul syllables in the final output
  • Vocab: Added more random polysemy (where one conlang word translates to two or more different but related words in English)
  • Settings file: now saves with date and time in file name
  • Fixed: clicking "naturalistic ranking" or "natural with randomness" auto-checked "fast dropoff" even when "medium" was checked
  • Fixed: cursor placement of Your Phonemes buttons in custom spelling area
  • Fixed: Adding words with += method producing wrong word
  • Fixed: Save as Custom Words Format no longer uses += method, which means you don't have to check Remove all default words (although it's advisable)


8 September 2019

  • Phoneme frequencies changed to Dropoff rate, which is now a choice between a fast, medium and equiprobable dropoff. What was previously "Naturalistic" is now labelled "fast" and the default is "medium". Although "fast" uses formulas based on actual research on ranked phoneme frequency, I was finding it a little unsatisfying with long lists of consonants clusters, because the right-most entries were so rare that they never even appear in the dictionary.
  • Settings file saves with language name in filename
  • Fixed: Various styling problems with the final output of the Grammar Editor
  • Fixed: Custom words not overriding words that happen to be in the default derived word list
  • Fixed: Custom conlang word will not be randomly generated for another English word
  • Fixed: Derived word missing from vocab in evolved languages
  • Fixed: Issues with saving checkboxes to settings file
  • Fixed: Your Phonemes sometimes not behaving as expected
  • Fixed: Words appearing in sample sentence as "undefined"
  • Fixed: Minor styling problems with Save file as HTML


20 August 2019

  • Vocab: Added more random polysemy (where one conlang word translates to two or more different but related words in English)
  • Gramamr editor: Re-inserting default grammar sections now uses the black code block format instead of ((double brackets)) and there's buttons to insert them automatically.
  • Gramamr editor: Added ability to remove default Spelling and Phonology section. This allows for maximum customization of the documentation of your language; you are not longer restricted to the default way that Vulgar presents the information. Also added ability to re-insert Consoant table, Vowel table, Spelling table into your custom documentation.
  • Gramamr editor: You may add affixes in double brackets when pulling words from the dictionary, eg: ((dog-NOUN.PL)). This can be done so long as the affix has already been created in a table above it. Affixation can also be used in the 'inflect =' part of the affix table, eg: inflect = dog-NOUN.TO.ADJ. This feature has actually exited since 9.1 but was accidentally not advertised.
  • Affix tables: Added ability to inflect different word based on gender. Writting 'inflect M = dog' only applies to word 'dog' to masculine cells in the table. See guide for more.
  • Affix tables: Added ability to specify what the inflected example translate to inside the table using the same method as in Word tables, eg: 'NOUN.SG > dog' and 'NOUN.PL > dogs'
  • Affix tables: Randomly generated tables now automatically deduplicate words/affixes within in the table.
  • Gender: in a language with Masculine and/or Feminine gender, gendered words (such a man/woman, brother/sister, king/queen, etc) now automatically take the correct gender
  • Illegal Combinations: Adding a single phoneme to Illegal Combinations now removes it from vowel/consonant chart; acts as a blacklist for phonemes when letting the program decide
  • Custom vowels: Any consonant can be added to the edges of vowels to make a diphthong. Where previously only semivowels were valid, now something like 'ar' counts as a valid vowel
  • Removed Phoneme Frequencies "random" option because it performed basically the same function as Arrange Phonemes In "natural with randomness"
  • Fixed: Pronunciation and spelling being listed in wrong columns when using custom spelling
  • Fixed: question mark appearing in spelling rules table when tie bar is present anywhere in phonemes
  • Fixed: only first syllabic consonants in custom vowel input box showing up in word generation
  • Fixed: unable to control syllabic consonant frequencies
  • Fixed: syllabic consonants not populating to Your Phonemes section
  • Fixed: Ban same vowel twice in a row not working for syllabic consonants
  • Fixed: Ban same vowel twice in a row not working for 2nd vowel group
  • Fixed: Ban same vowel twice in a row not working for half long, extra short, double long, and in some diphthongs with length symbols
  • Fixed: Phonotactic Analyser not inserting phonemes in correct frequency from left to right
  • Fixed: Arrange phonemes in removing diphthongs with semivowels
  • Fixed: Certain combinations of consonant clusters at end of word being cut off in IPA
  • Fixed: Random grammar tables having underscores in the headings
  • Fixed: Noun section appearing even when it has no information
  • Fixed: Tone information not being documented in Vowel section of final output
  • Fixed: Shorthand symbol for stop (S) matching affricates with tie bar
  • Fixed: Shorthand symbol for diphthongs (M) not matching triphthongs and some diphthongs with length symbols
  • Fixed: Part-of-speech morphology sometimes not working


23 July 2019

  • Added new Rich Text Editor for Free Form Grammar (renamed to "Grammar editor"). Note that this may make previous settings files incompatible with 9.1
  • Added more random polysemy (where one conlang word translates to two or more different but related words in English)
  • Added ability to click into input boxes without having to manually click the on/off slider
  • Added ability to pull dictionary words into anywhere in the Grammar Editor using ((double brackets)). EG: Writing ((dog)) anywhere in a paragraph pulls the word for dog from the dictionary.
  • Phonological changes: Added Show changed form separately [between square brackets] option, which is now unchecked by default. When unchecked, the phonological changes get applied to the IPA between the forward slashes, and no sqaure bracket version is shown. Additionally, the final spelling works from the changed form of the word, so the spelling rules may need to account for those changes. However, when checked, it works exactly the same as it used to be.
  • Removed Illegal combinations are sensitive to stress symbol. It now automatically checks each rule for stress symbols, and adjusts accordingly.
  • Change alphabet order can be used without having to select Custom spelling
  • Added more phoneme arrangement options
  • Added support for all non-standard secondary articulation IPA symbols, now that the new Noto font has fixed the sizing for them. They won't get their own buttons, but they can always be copy-pasted in.
  • Added support for superscript symbols to be pre-articulation, such as ᵐb ʰt
  • Added stress symbol buttons in Extra articulation symbols
  • Tweaks to various consonant probabilities to be better reflect real world data
  • Adding a diphthong diacritic or tie bar diacritic to custom phonemes automatically unchecks Remove diphthong and tie bar diacritics
  • Changed "affricate tie" symbol to "tie bar" (it's not always used with affricates)
  • Insert new grammar table has suffix and prefix checkbox
  • Changes to automatic spelling choices: retroflex consonants spelled with underdot
  • Added Show frequency stats options. This will allow you to tweak the frequencies on some phonemes while still keeping the naturalistic dropoff rate mostly in tact
  • Fixed: default spelling incorrectly putting diacritic markers on short vowels when there is a long-vowel equivalent
  • Fixed affricate shorthand symbol (A) matching non-affricates that have a tie bar
  • Fixed affricates that use tie bar not showing up in consonant chart
  • Fixed double-up affricate tie bars when they have been added manually
  • Fixed issues caused by trying to remove words that aren't in the default dictionary
  • Fixed issues with long symbols (ː) being removed from output
  • Fixed Evolve button changing alphabet order and not obeying custom alphabet order
  • Fixed issues with semivowels in diphthongs, which could cause incorrect affixes and double up words.
  • Fixed vowel tone buttons adding contour lines when superscript number option is selected
  • Fixed some hanging issues relating to Phonological Rules
  • Fixed curved apostrophe symbol being confused with ejective symbol. Curved apostrophe symbol is now automatically converted to ejective symbol.
  • Fixed Ban same vowel twice in a row not banning double-up diphthongs
  • Fixed bug where using $& in affix rules causing display issues in the affix tables
  • Fixed PDF subtitle resetting to "A definitive dictionary" after each new language
  • Fixed Change alphabet order sometimes making minor ordering errors
  • Fixed randomly generated affixes not accounting for vowel harmony
  • Fixed bug when removing words: some words could not be removed if they always appear with another word (eg: "buy, purchase")
  • Fixed being unable to put shorthand (uppercase) symbols inside RegEx square brackets
  • Changed to US spelling for default dictionary (the Oxford style spelling seemed to be satisfying no one, since its kind of a mix of British and US spelling)


29 May 2019

  • Format change: WORD TABLE's default definition is now All abbreviations translate to, and it comes out in the code a little different.
  • Format change: In order to weight the probability of phonemes, you now have write p=3, instead of p3 (to make /p/ three times more probable, for example). This is to improve readability. Writing the phonemes out multiple times is still an option.
  • More work on derived words. Trying to move away from always doing things how English does things. For one of many examples: "beautiful" may be derived from the base word "beauty", as English does, or the other way around where the base word is "beautiful", as Spanish does. This is an ongoing thing!
  • Removed various unintentional double-up words in default dictionary (note: some double up words are intentional! English may have two words for the exact same concept "woods" and "forest". Vulgar sometimes simulates this phenomenon)
  • Fixed word final consonants not working
  • Fixed Vowel Probabilities at end of word not working
  • Fixed bug where grammar changed when adding new words to existing language
  • Fixed issue where custom added conlang words could not be two words
  • Fixed bug where various default words may not end up in the final dictionary
  • Fixed Free-Form-Grammar underscores appearing in table headings
  • Fixed bug where some diacritics could end up in dictionary even when not supposed to
  • Fixed some diacritic placement issues. Some diacritic buttons populate above or to the side of phonemes with descenders: eg m̥ vs ŋ̊, and b̟ vs β˖
  • Fixed Free-Form-Grammar spacing issues between headings and paragraphs
  • Fixed minor typos in grammar section
  • Removed pop-up questions marks from HTML output file


12 May 2019

  • Free Form Grammar changes: you now have to write axis 1 = instead of just 1 = (and same for axis 2 and 3). This is so that 1 = can be reserved for when an affix abbreviates to just the number 1, like for '1st_person'. Additionally, labels can have an underscore, which will be replaced with a space in the table column/row.
  • Free Form Grammar: added ability to individually re-insert randomly generated sections into the free form grammar by writing ((Nouns)), ((Verbs)), etc. This allows you to pick and choose which sections you want to customise, without having to re-write the whole grammar.
  • Free Form Grammar: Writing ((Langname)) will be replaced with the anglicized language name (useful if you don't know what the language name will be ahead of time).
  • Free Form Grammar: You can now write SUFFIX TABLE and PREFIX TABLE (in place of AFFIX TABLE) to specify which -fix the whole table should be. Force all affixes to be... option will only apply when not using Free Form Grammar, or to AFFIX TABLE.
  • Added Ergative/Absolutive cases to randomly generated grammar
  • Added more polysemy possibilities to vocabulary
  • Added ability for tone to be represented with superscript numbers ¹²³⁴⁵ (1 being extra low, 5 being extra high). Although this is not standard IPA, it seems to be what conlangers use more often, since very few fonts support the contour lines. It's probably less ugly too. Also removed contour line buttons, as these were not an exhaustive list (pretty much any combination of tones is possible). But you can easily create the contours by adding them together.
  • Changed singular affixes to generate as "no affix" in most instances
  • Added various options to remove elements from the final display: Remove all translations (still generates conlang words), No spelling and Remove forward slashes around IPA
  • Improved dictionary alphabetization: dictionary no longer sorted by Unicode order. Unicode does dumb things like puts capital Z before lower case a. Vulgar now uses the browser's language settings to alphabetize; capitals will be correctly ordered, and it even puts most of the IPA in more intuitive orders, like æ comes in between a and b.
  • Fixed Change alphabet order producing ordering errors when not all letters are specified. You can now enter a partial letter list: letters given will be ordered first, letter not given will be ordered based on browser's language settings
  • Fixed Noun Case input box not working
  • Fixed Noun Cases and Noun Genders not saving to settings file
  • Fixed not being able to specify no noun genders
  • Fixed Illegal Combinations not applying to the language name and free form grammar words
  • Fixed input box height issue with Firefox
  • Fixed warning error message sometimes popping up for no reason
  • Fixed Vowel Probabilities resetting to default values when toggling on and off
  • Fixed languages with no word initial consonants throwing errors
  • Fixed "Your Phonemes" buttons not populating to second spelling input box
  • Fixed not able to use | symbol in Evolve Language rules, and fixed rules from always having to account for stress symbols
  • Fixed nasal release diacritic not displaying
  • Fixed 2nd vowel harmony group not able to handle syllabic consonants
  • Fixed bugs related to IF statements not applying correctly without ELSE condition
  • Fixed custom words not overriding the default word in some rare cases
  • Fixed single geminate (long) consonants from being permissible consonant clusters (if a language has geminates, they typically appear in more than one consonant).


6 April 2019

  • Added Free Form Grammar, which allows you to create any kind of grammatical property. Also allows you to use all affixes in the Translator.
  • Added custom Noun genders
  • Added ability to force all affixes to be prefixes or suffixes
  • Added ability to apply tones to all vowels, instead of applying tone to single vowels (see Advanced Phonology section)
  • Shorten average word length option has been removed, as this is now the default option and it only had a minor effect anyway
  • Algorithm tweaked to better select a balanced vowel inventory when using **Add random phonemes to the custom selection (upon generation)**
  • Uppercase shorthand symbols can now be used in spelling rules and illegal combinations. This is to create uniformity so that anywhere RegEx can be used, shorthand symbols can be used too.
  • When deriving words, if the word root word you're looking for has two possible parts-of-speech, there is now ability to (optionally) specify which part of speech you want. Eg "laughing:v = laugh:v-PROGRESSIVE" takes the verb form of "laugh", if there was also a noun form.
  • Added No stress at all option
  • Phonological rules that have a stress symbol will automatically be sensitive to the stress symbol, and thus Make phonological rules sensitive to stress symbol has been removed. This means that you can make rules that deal with stress without having to make every rule account for the stress symbol.
  • Don't allow words to differ only by stress location changed to Allow contrastive stress
  • If you add a custom word and specify its stress, the stress is no longer deleted in favour of the "correct" stress. If you don't specify the stress, then the correct stress will be applied.
  • Fixed bug where No Fixed Stress option was causing double up words
  • Fixed Change alphabet order sometimes causing hanging issues
  • Change alphabet order can now properly alphabetize letters with diacritics as well as digraphs (double letters)
  • Fixed spelling diacritic buttons not populating to Change alphabet order and Second spelling fields
  • Fixed derivational sound changes with shorthand symbols not working
  • Fixed θ and β not appearing in consonant chart
  • Fixed stress and capitalization issues when making custom language names that are two or more words
  • Fixed custom morphological rules that only consist of sound changes throwing errors
  • Fixed custom morphological rules with | symbol not displaying in grammar section
  • Fixed spelling rules doubling up in some scenarios


17 February 2019

  • In an ongoing attempt to try to make seed numbers less confusing... Added Save this language's settings which automatically saves the seed number and Save settings only which does not save the seed. Additionally, upon loading settings, if a seed number was saved the language will generate as soon as it's loaded. Also removed Modify this language button since it was a redundant feature and was often misleading (since so many settings change the entire language).
  • Added IPA symbols scroll with screen, and IPA symbols will populate to any clicked-on input box.
  • Automatic compound word creation: Vulgar now randomly creates compound words for various entries, drawing on examples of compound words from real world languages. For instance, the word for "volcano" may be a combination of "fire" and "mountain", "astronomy" maybe "star" and "science", etc. There are about 150 possible compound words for nouns right now. There are plans to add more for adjectives and verbs in future updates.
  • Added ability to choose whether adjectives go before or after the noun, as this has implications for the automatic compound word feature.
  • Added ability to stack affixes when creating derived words. This means you can create words like "antiestablishment : n = establish-V.TO.N-OPPOSITE", in one line of code. Previously you would have had to first make "establishment : n = establish-V.TO.N", then "antiestablishment : n = establishment-OPPOSITE". Suffixes can also be attached to compound words, and both + and & symbols can be used in the one line of code. Finally, making a word equal a single word is now valid. Example: writing "house : n = home" will make "house" the same word as "home".
  • When adding new words and derived words, writing += instead of just = ensures the default word will not be overwritten. Thus, "fox : n += red & dog" creates two entries for "fox", one being the default single word, and the other being the custom compound word. Whereas simply writing "fox : n = red & dog" automatically overwrites the default single word.
  • Added ability to download your language's vocab in the Add Words format so that your entire vocab can be regenerate in future versions of Vulgar without having to worry about seed numbers.
  • Added ability to create triphthongs where the vowel nucleus is not the first vowel, eg: /u̯ai̯/. This does happen in quite a few languages. Note that if you don't specify the diphthong symbols, merely adding uai will come out as ua̯i̯ by default.
  • Improvements to randomly generated derivational rules: now more realistic in that it doesn't create totally unrelated affixes in IF/ELSE conditions
  • Fixed evolve function being totally non-functional (apologies for that one. I'm trying to be a big more methodical with checking features for new bugs in each update now)
  • Fixed evolve function doubling the words after more than two evolves (bug from version 8.3.2)
  • Fixed phonological rules crashing when using shorthand symbols
  • Fixed lookbehinds in Phonological rules in FireFox not working
  • Fixed semi-vowels (j, w, ɥ, ɰ) in diphthongs not being generated in words
  • Fixed triphthongs not being applied correct stress
  • Fixed bug where default spelling rules doubled diacritics on long vowels, instead of doubling the vowel itself. Default spelling rules may alternatively use macrons for long vowel now too.
  • Fixed consonants and vowels with diacritics not showing up in the phoneme tables
  • Fixed custom added words not removing trailing whitespace
  • Disabled mobile autocorrect and spellcheck on all input boxes
  • Spelling bugs: fixed spelling rule table sometimes displaying incorrect info; fixed /ð/ sometimes not being assigned spelling rule
  • Some default affix tags have been changed to be a bit more explicit, eg: -N.TO.V is now -NOUN.TO.VERB


18 January 2019

  • Changes to Add and Remove Words: When adding new words, instead of using the bar symbol | to separate the word from the part-of-speech, use a colon instead: ethereal:adj. This may be separated by spaces for visual clarity: ethereal : adj. This change was made because the bar symbol already has another function in RegEx syntax.
  • You can now use OR in morphology rules to create a random choices between rules. E.g., n = -o OR -n. Additionally, you can now use the bar symbol | instead of OR. This brings the syntax more aligned with RegEx syntax: n = -o|-n and n = V$ > a|o.
  • Dervational & part-of-speech morphology rules no longer require an ELSE statement when using IF statements
  • Arrange in naturalistic ranking (with randomness) now has a much larger element of randomness, which I think simulates real world distributions quite a bit better. Previously, it would make the most common consonant "m" most of the time. Now the most common phoneme is a lot more varied.
  • Default spelling now varies the diacritic choices more, where previously it always chose the grave accent first
  • Illegal rules no longer significantly slow down generation time and **Make same vowel twice in a row illegal** is now selected by default
  • Added ability to use [+long] and V[+nasal] properties in phonological rules
  • Fixed part-of-speech morphology applying to wrong parts-of-speech when adding custom words
  • Removed around 150 words that were double-ups of a noun and verb version (example: "amateur" being both a noun and verb but being generated as two unrelated conlang words). Thus, 150 new words have been added.
  • Fixed custom compound words not automatically applying gender
  • Fixed minus symbol in Add and Remove words not removing derived words
  • Fixed custom derived words not replacing defaults words -- no longer creates two entries
  • Fixed Second Spelling rules re-randomising language
  • Fixed illegal patterns appearing in summary of the initial/mid/final consonants in grammar section
  • Fixed Tumblr Dictionary Theme hyperlinks not working when the word has diacritic symbols
  • The languages under Advanced Word Structure now arrange in naturalistic ranking if Naturalistic frequency is checked
  • Spelling changes to Oxford spelling, which means -ise words are now -ize, eg "organize"


26 December 2018

  • Added ability to create affixes/sound changes based on parts-of-speech. See Part-of-speech morphology
  • Added ability to remove regular (non-derived) words from the default dictionary using minus symbol in Add More Words EG -woman and Remove default derived words -- gives users significantly more control over how you want to shape your vocabulary, without having to remove the entire dictionary and start from scratch.
  • Added ability to create stems for words that don't get populated to dictionary as stand entries, but can be used in derived words. See instructions on how to do this on the Custom Words guide, under the Stem Words subheading.
  • Smarter spelling: generator automatically comes up with a unique spelling for each vowel and (most) consonants, using diacritics where necessary. Spelling rules are now also listed in the phonology section.
  • More realistic phoneme inventory created when adding clicks and checking Add random phonemes to the custom selection
  • Fixed automatic creation of new affixes not working
  • Fixed derived words not working with trailing whitespace
  • Fixed consonants not appearing in consonant table when they only appear in clusters
  • Fixed bug where seed number sometimes produced different language (if anyone notices this still happening, please tell me!)
  • Fixed custom words not clearing from dictionary after manually removing them
  • Fixed words producing "undefined" error when making languages with no consonant onsets
  • Minor improvements to distribution of phonemes when letting the generator decide phoneme inventory
  • Removed some double up words
  • Second orthography hidden to avoid visual clutter and renamed to Second spelling


8 December 2018

  • Tweaks to random phoneme inventory algorithm to bring it more in line with real world probabilities: made ʃ, tʃ, ts and nasal vowels less frequent; made aspirated consonants more frequent
  • Choosing a partial phoneme inventory (using Add random phonemes to the custom selection) now attempts to obey phonological language universals. More work will be done on this in future updates
  • Fixed derivational morphology causing some garbled text in dictionary and some crashing issues
  • Fixed randomly generated derivational morphology not generating ELSE conditions
  • Fixed compound words not working
  • Fixed mid-word diacritics not appearing
  • Fixed shorthand V symbol not matching diphthongs in certain scenarios
  • Fixed some diacritic placement. Some diacritic buttons now populate above or to the side of phonemes with descenders: eg but m̥ vs ŋ̊, and b̟ vs β˖ (Note: only some IPA diacritics have officially approved alternate Unicode characters for descenders)
  • Make same vowel twice in a row illegal no longer shows you the rules explicitly, but just silently applies them at generation time. This means the rules will apply even if you let the generator decide what vowels to use. The new algorithm also solves a design flaw where diphthongs actually need the diphthong diacritic symbol for them to be matched as illegal (Vulgar adds the diphthong symbol to user entered diphthongs so that the syllable stress algorithm doesn't treat diphthong as two separate syllables, then deletes unless the you uncheck Remove diphthong and affricate diacritics. Thus, if you need to enter any rules that involve diphthongs, be sure to add this symbol.)
  • Added diphthong diacritic button to aid with above issue. Also added "more round" and "less round" buttons, and removed some of non-standard diacritics (although they can still be used by copy-pasting)
  • Fixed some non-diphthongs being listed as diphthongs
  • Fixed rare issue where custom added words were assigned wrong meaning


11 November 2018

  • Created new system for doing derivational morphology. This is capable of doing circumfixes, complex sound changes, and can also apply affixes based on conditions, such as whether a words begins or ends in a vowel or consonant. See new guide here.
  • New algorithm for randomly choosing the phoneme inventory which obeys phonological "universals" more closely
  • Naturalistic phoneme frequency is now default setting
  • Added ability to specify the Language name and Anglicised name
  • Added Arrange in naturalistic ranking option, which automatically arranges your phonemes from most common to least common, based on real-world data. This is to be used with the naturalistic distribution setting to simulate a probable spread of phonemes that you would expect to see in real languages. The randomness factor accounts for the fact that not all languages will rank every phoneme in the same frequency, just that there are tenancies for certain phonemes to be more common.
  • Having naturalistic phoneme frequencies checked when using Phonotactic analyser will order phonemes by frequency
  • Added support for negative lookbehinds in Chrome
  • Fixed RegEx lookbehinds being rejected as invalid in Firefox and Safari
  • Fixed issue where round brackets inside lookbehind patterns were not matching properly
  • Fixed phonological rule issue with brackets before the underscore
  • Fixed RegEx phonological rules not being listed with standard phonological notation rules in grammar section
  • Fixed articles not populating to dictionary in some scenarios
  • Fixed articles and pronouns still populating to the dictionary when Remove default word list is checked
  • Fixed cursor moving to front of input fields when selecting phonemes on mobile browsers and Safari desktop. However, now you can only add phonemes/diacritics to the very end of the line on these browsers. Recommend using Chrome on desktop devices, where possible.
  • Fixed issue where adding the same English word twice in Add More Words field caused other custom words to be assigned to wrong conlang word
  • Fixed dental column in consonant chart being in the wrong position
  • Fixed tab character causing settings file to become corrupted
  • Finnish and Turkish buttons now populate correct vowel harmony
  • One Who Xs affix changed from -ER to -DOER


12 October 2018

  • Added secondary stress symbols and ability to create advanced stress patterns
  • Added Naturalistic phoneme frequency option, which ranks phonemes from left (most frequent) to right (least frequent) and calculated frequencies based on a Yule distribution, which mimics ranked distribution of phonemes in real languages.
  • Added support for syllabic consonants (must be used in vowel fields because the program analyses them as the syllable nucleus)
  • Added word wrapping for phoneme input boxes and ability to expand the input area. Phonemes and illegal combinations may now optionally be separated by new lines.
  • Improvements to phonological rule notation: added support for more shorthand symbols (see new guide here) and fixed shorthand symbols not capturing diacritics.
  • Changed affricates to be the single Unicode character versions by default (ʧ, ʤ, ʦ, ʣ, ʨ and ʥ) instead of double characters (tʃ, dʒ, ts, dz, etc) to circumvent some issues with Advanced Word Structure thinking affricates are two separate phonemes. Double characters can still be used in Advanced Word Structure but you must use the affricate tie-bar between them. Also added affricate tie-bar to diacritic buttons.
  • Fixed syllable boundary symbol (%) not applying to beginnings and ends of words
  • Fixed a bug that caused pronouns and articles to sometimes have incorrect word structure
  • Fixed settings file not saving various checkboxes and PDF settings
  • Fixed diphthong symbol (ia̯) not appearing in cases where diphthong has other diacritics
  • Fixed triphthongs being truncated and interpreted as diphthongs
  • Fixed Tumblr Dictionary Theme not working for full version only
  • Fixed issues with Tumblr Dictionary Theme's custom HTML formatting tags


13 September 2018

  • Fixed Illegal Combinations not applying correctly
  • Fixed broken Tumblr Dictionary Theme
  • Fixed broken Jump To Orthography link


8 September 2018

  • Added Vowel harmony to Advanced Word Structure
  • Added support for more IPA diacritics: geminate (long) symbol for consonants, laminal, extra short symbol for vowels, more rounded less rounded symbols for vowels, voiceless symbols that goes above the IPA letter, voiced symbol for consonants
  • Syllable boundary can now be represented in phonological rules using % symbol
  • Added Hebrew to Advanced Word Structure
  • Fixed Illegal combinations not applying to affixes, pronouns, articles and particles. Additionally, illegal combinations can match on affix boundaries using ‘-’. Example: you don't want suffixes to be able to start with /a/, write -a as an illegal rule.
  • Fixed semi-vowels (j, w, ɥ, ɰ) being interpreted as consonants only. They can now be used in diphthongs in vowel input fields
  • Improvements to HTML output: now sorts English to Conlang. Also added style sheet to make it look like the online site.
  • Removed words from having two part of speech separated by a semi-colon. Eg: v. laugh; n. laugh, as this was causing issues for users trying to overwrite either of the words
  • Removed other various double-up English words
  • Vulgar now alerts you if your RegEx/phonological rules are invalid
  • Fixed compound word syntax not allowing white space before and after + and & symbols
  • More changes to LaTeX formatting: it is now easier to upload a conlang font by having different font styles for English-to-Conlang entry, English-to-Conlang definition, Conlang-to-English entry and Conlang-to-English definition
  • Very minor improvements to translator: typing the exact wording of articles as they appear in the dictionary will translate them. Example: if it's in the dictionary as "the (n. nominative)" you can type that and it will translate, where previously it would fail to find it.
  • Modify this language button auto-populates the seed number for last language generated; Generate new language now automatically clears the seed number field; and Using custom seed number uses whatever seed was manually entered to seed field. Also added these buttons to the bottom of the settings.
  • Fixed custom spelling helper not removing multiplication numbers from end of vowels
  • Fixed grammar tables using wrong word for ‘man’
  • Fixed issues with Phonotactic Analyser failing to include some mid-word consonants


28 July 2018

  • Launched the new online platform of Vuglar
  • Tumblr Dictionary Theme builder now comes with Full and Pro version
  • Added Change alphabet order
  • Added CSV export
  • Added ability to download PDF output as .tex file
  • Changes made to LaTeX code to make it less bloated
  • Added option to download HTML as a file
  • Added Make illegal combinations sensitive to stress symbol
  • Illegal combinations now works with Custom Phonemes instead of just Advanced Word Structure
  • Added ability to control phoneme frequencies by adding a number immediately after the phoneme/consonant cluster
  • Added Hawaiian to Advanced Word Structure
  • Changes made to saved settings file to be more forwards-compatible with future versions of Vulgar
  • Fixed some settings not saving to settings file: Articles and Make phonological rules sensitive to stress symbol
  • Fixed Add More Words causing the conjugation rules to change, all other settings and seed number being the same
  • Fixed some crashing issues with Phonological Rules field
  • Fixed Make same vowel twice in a row illegal not properly deduplicating rules in some scenarios


28 May 2018

  • Created Pro version
  • Added Translator
  • Articles and pronouns populate to the dictionary
  • Added ability to specify whether or not the language has articles
  • Added Antepenult stress
  • Added Don't allow words to only differ by stress location
  • Added more spelling diacritic "quick pick" buttons
  • Added Swedish and Turkish to Advanced Word Structure


7 May 2018

  • Added ability to specify what the derivational affixes are (the conlang part)
  • Changed some of the format for Add more words. Info on new format here
  • Added Make spelling rules sensitive to stress symbol and Make phonological rules sensitive to stress symbol
  • Added ability to use RegEx in Phonological rules section
  • Added shortcut buttons to easily populate your phonemes into Custom Spelling rules
  • Added Spelling diacritic helper buttons for the following diacritics
  • IPA buttons populate to mouse position, instead of end of line
  • Typing a colon automatically gets converted to vowel length symbol upon generation
  • Fixed Second Orthography causing spinning wheel of death
  • Fixed RegEx Lookbehind syntax not working
  • Fixed No Fixed Stress option re-randomising the stress location in the narrow IPA
  • Fixed Add custom words not de-duplicating words already in the default dictionary
  • Fixed custom derived words duplicating after every new generation
  • Fixed various bugs that caused 'undefined' to sometimes appear in output
  • Choosing phonological rules with a seed number no longer produces an entirely different language
  • Re-added ability to put voiceless diacritic symbols on vowels after fixing a bug where voiceless symbol attached itself to the stress symbol
  • Fixed not appearing in output
  • Fixed vowels ɞ and ɶ not appearing in evolved languages
  • Fixed seed number not following through to evolved languages
  • Fixes to IPA symbols in Manuale font: ʁ being designed wrong (glyph was mirror imaged) and fixes to positioning of various diacritic symbols
  • Added ʊ to English phonology


16 April 2018

  • Add more words overrides the randomly generated word when you specify what the conlang side of the word is (where previously it would create two entries for the one word)
  • Seed number system changed to circumvent bug where the alphanumeric seed would sometimes produce different results within the same version
  • Clicking seed number populates it to the settings
  • Altering the spelling rules no longer changes the whole language (provided all other settings are the same)
  • Added option to make PDF output 3 or 2 columns
  • In PDF output, new sections page-break if there is not much space left at the end of the page
  • In PDF output, entries with multiple parts-of-speech are semi-colon separated
  • Fixed bug that caused scrambled code to be added to PDF output and Tumblr Dictionary theme
  • Fixed phoneme /ɶ/ not appearing in final output and Phonotactic Analyser
  • Fixed phoneme /ʍ/ not appearing in consonant table
  • Fixed some contour tone buttons giving wrong contours
  • Clicking Make same vowel twice in a row illegal twice does not add the rules twice


7 April 2018

  • Added ability to save and load settings to .txt files
  • Added Make same vowel twice in a row illegal, which auto-populates illegal rules to stop two of the same vowel in a row
  • Custom affixes get spelled out in grammar section
  • Added Latin and Dothraki as an option for the Advanced Word Structure. Also made changes to some of the existing languages to remove allophones and/or regional dialects
  • Added extended IPA support for Manuale font
  • Fixed /ɞ/ and ejective symbols not appearing in final output
  • Fixed occasional crashing issue with entering non-IPA symbols into phoneme fields
  • Disabled ability to add IPA diacritics to don't connect to any main IPA symbol
  • Fixed issue where custom spelling rules were not be able to find and replace diphthong and affricate diacritics
  • Fixed crashing issue with seed numbers
  • Fixed issue that caused PDF output to not render in some scenarios
  • Fixed issue that caused Add randomly chosen phonemes to the custom selection option to not appear
  • Click symbols to add section now re-focuses on the phoneme field after populating an IPA symbol into it
  • Fixed vowel table alignment


21 February 2018

  • Font changed from Charis SIL to Noto Serif and Manuale
  • Added ability to specify what the English word will translate to in Add more words option
  • Added Shorten average word length feature
  • Added hover effect on word entries
  • Fixed bug that caused seed number to sometimes produce different results, even when all custom settings were correct
  • Disabled ability to manually enter seed numbers that are over 12 characters (this caused crashes)
  • Illegal combinations rules can now be separated with a space or comma + space
  • Fixed issue with semi-colons in Add new words field causing PDF output to not render
  • Fixed Remove default word list causing crashes in some scenarios
  • Minor bug fixes to Analyse word structure of your own language
  • Disabled Add randomly chosen phonemes to the custom selection option from appearing when choosing Advanced Word Structure (this feature only applies to "Custom Phoneme" settings)


27 January 2018

  • Redesigned code that applies phonological rules to fix various instances of rules not applying correctly
  • Add more words de-duplicates words that were already in the default list (provided you use the exact same part-of-speech tag)
  • HTML output sorts English to Conlang. The is output also a bit more readable, and includes a basic internal style sheet.
  • Create daughter language button named changed to be called "Evolve language"
  • Added jump to orthography link in the Evolve section
  • Fixed bug where articles sometimes had mid-word consonant clusters at the beginning or end of the word
  • Fixes to the LaTeX code when using Second Orthography option (removed HTML tags around the second orthography, primary and secondary orthography are now separated by a comma)
  • Various minor bug fixes to Analyse word structure of your own language
  • Fixed "undefined" appearing before some part-of-speech markers after Evolving the language


31 December 2017

  • Added Create daughter language (beta) (changed to "Evolve language" in v 7.2.1)
  • Added Vowel probability (specify probability that words begin or end in a vowel)
  • Added Add randomly chosen phonemes to the custom selection
  • RegEx supports Lookbehind matching
  • Clicking IPA symbols automatically checks the Custom Phonemes or Advanced Word Structure button
  • Fixed pop-out info boxes redirecting to top of page when exiting
  • Fixed audio for /ʊ/ linked to wrong audio file


26 November 2017

  • Added ability to choose syllable structure
  • Added ability to apply default orthography rules with custom orthography rules
  • Added bility to apply custom phonological rules with randomly chosen rules
  • Applying of phonological rules is turned off by default (for the purposes of speeding up generation time)
  • Re-added HTML output button
  • (C)V(C) syllable structures allow consonant clusters mid-word, so words can have a CVCCVC structure
  • Fixed ticking Remove default word list causing crashes
  • Fixed separating custom phonemes with commas instead of spaces creating problems
  • Fixed issues with /g/ and /ɡ/ being confused with each other (Vulgar now converts ɡ to g automatically)
  • Fixed stress symbols in Phonotactic analyzer was causing incorrect analysis


22 October 2017

  • Added IPA support for tonal languages
  • Added IPA consonant diacritic support for: advanced, apical, breathy voice, dental fricative release, linguolabial, labio-palatized, lateral release, nasal release, no audible release, pharyngealized, retracted, velar fricative release, vocal fry
  • Added IPA vowel diacritic support for: advanced, advanced tongue root, breathy voice, centralized, mid-centralized, retracted, retracted tongue root, rhotacized, vocal fry
  • Language names now get anglicised by default
  • Added ability to choose Word order
  • Added possibilities that plurals are not used for inanimate or non-human nouns
  • Added various pre-settings for LaTeX PDF output
  • Fixed capitalised words not sorting alphabetically in the LaTeX PDF output
  • Fixed long dictionary definitions cutting off when column is not wide enough
  • Screen no longer auto-scrolls to newly generated language.


27 September 2017

  • Added Editable PDF function
  • Outputs information on how articles ('the' and 'a') are used differently to English
  • Added ALT + L shortcut to generate new language
  • Illegal combinations now supports RegEx
  • Fixed Illegal combinations feature being applied to orthography as well as phonology. Now only applies to phonology
  • Remove default word list no longer forces example words used in grammar section (i.e. "study") to the dictionary
  • Using Add more words with seed no longer alters the language (provided all other custom settings are the same)
  • Fixed verb to adjective (v>adj) derivation rule not working
  • Fixed phoneme /dʒ/ sometimes not showing up in orthography
  • Fixed Tumblr dictionary JSON file causing errors where more than two words have the same spelling
  • Removed some duplicate dictionary words
  • Faster generation time on average


17 September 2017

  • Added custom affixes function
  • Clickable IPA symbols go to Advanced Word Structure after selecting Advanced Word Structure, or clicking into a field
  • Added the word "zero" to default word list
  • Fixed audio for IPA symbols: /ɛ ɫ ɳ ʕ ħ/
  • Fixed compound words not applying noun gender
  • Fixed English-to-Conlang data for Tumblr Dictionary Theme not sorting in alphabetical order


3 September 2017

  • Added Illegal combinations function
  • Tumblr export returns JSON file for use with Tumblr Dictionary Theme
  • Fixed verb affix for 2nd person singular past tense always being the same as present
  • Fixed audio for IPA symbol /ʟ/
  • Fixed white spaces issues (accidental white spaces in custom input are now ignored by the program)
  • Derive words feature no longer morphs roots to "irregular" forms (was producing unsatisfying results)


26 August 2017

  • Added Control phoneme frequencies function
  • Added compound words ability to Derived words feature
  • Seed numbers changed to shorter alphanumeric
  • Fixed stress pattern always being ultimate syllable
  • Fixed Add more words feature not resetting upon each new generation
  • Changed Second orthography colour
  • Minor spelling mistakes in default dictionary words


12 August 2017

  • Added Second orthography function
  • Fixed audio for IPA symbols /w l ɬ ɮ ɭ ɾ ɽ ʀ ɱ ʎ ʋ ⱱ ʄ ɠ ʛ ʘ/
  • Fixed polysemy feature for default dictionary


2 August 2017

  • Added OR function in Custom orthography to create irregular spellings
  • Added Remove default word list in Add more words feature
  • Added original IPA recordings to IPA charts


17 July 2017

  • Added Add extra words and Derived words function