Worldbuilding tools
Languages and Conlangs
Build a constructed language for your world: a writing system, a sound inventory, grammar, and a dictionary. Generate words that fit its sound, translate phrases, and build the whole language right inside the editor.
The Languages tool lets you build a constructed language for your world and keep it living, not static. It is approachable on the surface and as deep as you want underneath: jot a few notes and a dictionary, or build a full writing system, sound inventory, grammar, and inflection tables. It is a Pro worldbuilding tool that sits alongside the World Bible, the Lexicon Engine, and the Relationship Web.
How a language is laid out
Each language opens onto a set of tabs, one per part of the craft:
- Overview: the name, a short description, which worlds it lives in, and its visibility.
- Writing system: how the language is written down.
- Sounds: how it sounds, in plain notes or a structured inventory.
- Grammar: word order, features, affixes, and a number system.
- Dictionary: the lexicon, plus the word generator and the undefined-word scan.
- Tools: phrase translation.
- Advanced: sound changes, dialects, and inflection tables.
Every tab works the same way: a plain note field you can fill in right away, with the structured editors tucked into “go deeper” sections you open only when you want them. A basic language stays simple. A detailed one has room to grow. Edits across the tabs save together from the save bar that appears when you have unsaved changes.
You can reach Languages two ways: from a world’s hub, or from the worldbuilding tools list, where it sits beside the World Bible, Maps, and the Relationship Web.
Create a language
Open the Languages manager for a world and choose New language. Give it a name. Everything else is optional and can come later.
Share a language across worlds
A language belongs to you, not to a single world, so the same tongue can run through more than one of your worlds. On the Overview tab, use the worlds chips to add it to another world or take it out of one. Its dictionary, sound, and notes come along, so you write the language once and reach for it wherever a story needs it. A world can hold as many languages as you want, and a language can live in as many worlds as you want.
Writing system
The Writing system tab records how the language looks on the page. Pick a script type (alphabet, abugida, syllabary, logography, featural, or other) and a writing direction, and add notes on letterforms and how you romanize it. Most languages use one script. Some use several, so you can add more than one.
Draw your script and write in it
You can go further than notes and build the script as a real font you type in. Open a writing system and the script font studio opens underneath it.
A glyph stands for whatever you name it. This is the key idea, and it is why every kind of writing system works. A glyph is named by the romanization you type to produce it, and that name can be a letter, a syllable, or a whole word. So an alphabet draws a glyph per letter, a syllabary draws a glyph per syllable (ka, ki, ku), and a logography draws a glyph per word. When you type, Inkbreaker matches the longest named unit first, so the same studio renders all of them correctly. The studio shows guidance for the kind you picked, so you build it the way your script actually works.
Seed a syllable grid. For a syllabary or an abugida you draw a glyph per consonant-vowel unit, which is a lot of slots. If you have defined your consonants and vowels on the Sounds tab, the studio offers Build a syllable grid: it creates a slot for every consonant-vowel pair (and the bare vowels) at once, ready to draw. (Abugidas where a single vowel mark attaches to any consonant are on the way; for now you draw each consonant-vowel form, which the grid makes quick.)
Draw a glyph for each unit. Add a glyph by its romanization, the letters you type to produce it (for example, “ka”), then draw it on the canvas. A practice grid helps you keep proportions the way a calligraphy workbook does: toggle a quadrant grid (the 田 cross) or an eight-way grid (the 米 cross plus diagonals), or turn it off. You can set the pen width for a thick or fine hand. Strokes are smoothed as you draw, so a glyph reads like a letterform rather than a shaky line. Undo a stroke or clear the glyph at any time.
Set the stroke order. Strokes are numbered in the order you draw them. Turn on the numbers to see them on the canvas, and reorder a glyph’s strokes (move one earlier or later) or delete a single stroke without clearing the whole letter, so the stroke order is yours to set, however the strokes first went down.
Draw cursive forms for a joining script. Some scripts are cursive: a letter changes shape depending on where it sits in a word, the way Arabic does. Under a glyph, pick Initial, Medial, or Final and draw that variant (the base drawing is the Isolated form). Start from the isolated form and adjust it, or draw the variant from scratch. Any letter you give a variant becomes a joining letter, and when you type, Inkbreaker chooses the right form for each letter’s position automatically. Leave the cursive forms empty and the script stays non-joining.
Compile the font. When your glyphs are ready, choose Compile font. Inkbreaker builds a real OpenType font from your drawings and shows a live preview, with a field where you type a word and watch it appear in your script. Draw or change a glyph afterward and the studio flags that the font needs recompiling.
Write in your script, in the editor. Once a font is compiled, you write in your invented script right in your draft. Your language lives where you would look for a font, so there are a few ways in:
- Open the font menu in the formatting bar. Your compiled scripts sit in a Your languages group: pick one and your selected text is written in it.
- Open the format menu (the block-type dropdown), which carries the same Your languages group.
- Type /script to open a small composer. Pick the script, type the romanization, and insert it. In that composer, choose Keep typing in script to turn on a live input method: type the romanization and it converts to your script as you go, with an indicator showing the active script. Press Escape to stop.
- Select romanization you have already written and use the script control to convert it.
If you have not compiled a font yet, every one of those spots offers Draw glyphs and compile a font, which opens the language workspace over your draft so you can build the script and come back to writing.
The romanization is always kept underneath, so the writing has a plain-text fallback and never turns into empty boxes for a reader who does not have the font. A screen reader reads the romanization rather than the raw code points. Your script honors its direction, too: a right-to-left script lays out right to left, a top-to-bottom one stacks in columns, and a boustrophedon one alternates direction line by line (left to right, then right to left, the way the earliest Greek was written), shown in the studio preview.
Your script then shows up wherever the language does. In the Dictionary, each word appears in its own letters beside its romanization. On the languages list, each language shows its name in its own script. On your public world page, the script chart and the dictionary read in the writing you built. The font travels with a world export, so your writing system is never trapped.
Sounds
The Sounds tab is where a language starts to sound like itself. Write the sound in plain notes, or open the structured sections to define a real sound inventory: the consonants and vowels the language uses, and its syllable rules, the onsets that can start a syllable, the nuclei at its center, the codas that can close it, and how many syllables a word runs to. You can also list sequences the language never allows.
This structure does real work: when it is set, it drives word generation directly (see below), so your coinages follow the sounds you chose.
Grammar
The Grammar tab holds the rules. Set the basic word order, then open the deeper sections for cases, tenses, aspects, moods, and genders or noun classes. Two more sections live here:
- Affixes: the prefixes, suffixes, and infixes that build and inflect words, each with what it does (plural, past tense, agentive, and so on).
- Number system: the base your language counts in, and its number words.
Build the dictionary
The Dictionary tab is the heart of the tool. Add a word and fill in as much as you want:
- Headword: the word in your language.
- Gloss: what it means in your language.
- Part of speech, pronunciation (IPA or freeform), etymology, and an example of use.
The dictionary sorts and searches by headword or gloss, so a growing lexicon stays findable. Homographs are fine: the same headword can carry more than one meaning. On a phone the table folds down to a readable list.
Once you have compiled a script font, the dictionary adds an In script column, so every word shows in your own letters beside its romanization, and the add-word dialog previews a new word in script as you type the romanization.
Import a list of words. Have a glossary in a spreadsheet or a notes file? Choose Import words, then paste one word per line with columns separated by a comma or a tab: headword, meaning, part of speech, pronunciation. Only the headword is required, so a bare list of words imports fine and you fill in the rest later.
Generate words that fit the sound
A good conlang sounds like itself. Generate words proposes new coinages that fit your language’s shape, excluding words you already have. It works two ways, whichever fits where you are:
- If you have defined a sound inventory on the Sounds tab, generation follows it directly, so you can coin words before you have a single dictionary entry.
- Otherwise it reads the headwords already in your dictionary and learns their sound, so the language drifts toward its own consistency as it grows.
Either way it builds a sound profile in the Lexicon Engine, so your dictionary and your name generation become one system: names you keep can promote into the dictionary, and the dictionary feeds new names. Over in the Lexicon Engine, the profile that powers a language is labeled with it and links straight back.
When you accept a proposed word, the editor opens with the headword filled in and the cursor on the gloss, because a coined word without a meaning is only half a word.
Translate a phrase
On the Tools tab, Translate takes a phrase in your language and substitutes the dictionary glosses, longest match first, so you can sanity-check a line of dialogue or an inscription against the words you have actually defined. When you have compiled a script font, the result also shows in your own glyphs. It reports how many words it matched, so you can see how much of the line the language can already say. It is a gloss-level aid for catching drift, so it does not reorder words or inflect them; the grammar you define lives in your dictionary entries and your paradigm tables, not in this substitution.
Find words you have not defined yet
As you write, you coin words in your prose that never make it into the dictionary. The undefined words scan, on the Dictionary tab, reads your pieces in this world and surfaces word-like tokens that fit the language’s sound but have no dictionary entry, so you can decide which to formalize. The scan is gated by the language’s own sounds, so it flags plausible coinages rather than ordinary English.
Advanced: sound changes, dialects, and inflection tables
The Advanced tab is the deep layer, for when you want a language with history and structure. Everything here does real work on your words:
- Sound changes: an ordered list of rules (a sound, what it becomes, and the environment it happens in) for deriving older or related forms. Write the environment with the usual notation:
_is where the sound sits,#is a word boundary, andVandCstand for any vowel or consonant from your inventory. Order matters, so reorder the rules with the arrows. Then run the ruleset: type a test word and watch it evolve, or apply it to your dictionary to see every headword’s daughter form at once. - Dialects: regional or social varieties of the language. Mark a dialect derived via sound changes and Inkbreaker shows how your dictionary words come out after the ruleset runs, so a daughter dialect falls out of the sound changes you already wrote.
- Inflection tables: declension and conjugation grids that show how a word changes across cases, persons, or tenses. Name the rows and columns, then give a base word and auto-fill from affixes: Inkbreaker inflects it for each cell from the affixes you defined on the Grammar tab, matching each affix by its gloss. Edit any cell the rules could not guess.
Nothing here is required. It is there when your world calls for it.
Build a language without leaving the editor
You do not have to leave your draft to work on a language. The editor’s tools panel has a Languages panel: search every headword across the world’s languages and drop one into your prose at the cursor, with its gloss and pronunciation on hover.
When you want the full tool, choose Open language workspace, which you reach from the Languages panel, the font menu, the format menu, or the /script composer. The whole language, every tab, opens in a panel over your manuscript, so you can build the writing system, coin and edit words, and add grammar without losing your place. Close it and you are back in the line you were writing, and a font you just compiled is ready in the editor with no reload. Anything you change shows up in the dictionary panel right away.
Reference your words in the editor
Type the at sign and your word to drop a language word reference into your prose. It renders as a chip, and hovering it shows the gloss and pronunciation, so a reader of your draft (or you, three chapters later) can see what it means without leaving the line. The same at-mention picker covers your world’s entities, events, and systems; your conlang words appear when you type the coinage itself.
Inkbreaker also keeps a quiet index of which pieces use which words, so a word’s dictionary entry can tell you where it has been used across your manuscript.
Publish a language on your world page
By default a language is part of your world’s bible, so it appears on your public world page under a Languages tab once the world is public. A reader can open the language to read its notes, see its writing system, sounds, and grammar if you defined them, and browse the full dictionary.
If a language is a spoiler, or just not ready, mark it secret on the Overview tab. A secret language (and its whole dictionary) is hidden from every public reader, the same way a secret entry or a secret map is. You still see your secret languages when you preview your own world. Take a language out of the bible to hide it from the public page without marking it secret.
Import and export
Languages travel with your world. A full world export (and your whole-account export) includes each language with its dictionary, writing system, sounds, grammar, and advanced structure inline. Re-importing that JSON into Inkbreaker rebuilds the language and everything in it, so your lexicon is never trapped.
The readable exports carry your language too. Export your world or your world bible to Markdown or plain text and each language gets its own section: its alphabet (each letter’s romanization, and whether it compiled to a font), its sounds and grammar, the full dictionary, and any sound changes, dialects, and paradigms. The glyphs themselves are art that a plain file cannot embed, so the readable exports give you the romanization; the EPUB carries the actual font.
Tips
- You can start from either end. Define a sound inventory first and generate a whole vocabulary, or coin words by hand and let the generator learn from them.
- Write the gloss the moment you coin a word. A dictionary of headwords with no meanings is a list, not a language.
- Use pronunciation even informally. “Stress on the first syllable” today saves you an argument with yourself later.
- Keep it simple until you need more. The notes fields are enough for most stories; the structured tabs are there the day a reader asks how the plural works.
Still stuck? Head back to Support to report a bug or reach the team.