Lithuanian Pronunciation and IPA Transcription Guide
← Back to Lithuanian transcription ↑ All Languages
Table of Contents
- Getting Started
- Quick Reference (Glossary)
- How to Read IPA Symbols
- Lithuanian Pronunciation Guide
- Orthography to IPA Mapping
- Using the Tool: Practical Notes
- For Developers
- Related Pronunciation Guides
About This Tool
This Lithuanian transcription app uses the Wiktionary Lithuanian Pronunciation Module to generate phonemic transcriptions for Lithuanian text. IPA (International Phonetic Alphabet) is a standardized system for transcribing speech sounds. This tool converts Lithuanian spelling into IPA, helping learners, linguists and developers see how a word is pronounced.
Every word goes through two steps:
- Dictionary lookup. The app first looks the word up in a lexicon built from a Wiktionary
data dump[1][2]
(
lt_lexicon.zip, about 12,600 headwords, downloaded once, decompressed in your browser and cached in IndexedDB). If the word is found, the dictionary IPA is shown. These entries come from Wiktionary editors, normally include a stress mark, and may list several variants separated by commas. If the first lookup fails, the lookup is retried with the word in lowercase. - Rule-based fallback. If the word is not in the lexicon (and the lexicon is only a small
fraction of Lithuanian vocabulary, so this happens often), the app calls the Lua pronunciation module:
window.lt_ipa.toIPA(cleanText, true). The module'stoIPAfunction takes exactly one parameter (text), so the second argumenttrueis accepted and silently ignored; it changes nothing. Everything this page says about the rule engine therefore applies regardless of that argument.
Important: the examples on this page were produced with the rule engine only (the test harness does not load the lexicon). A word shown here with a stress-less, dotted result may look different in the app if the dictionary contains it. Dictionary results are generally more reliable than rule output, especially for stress, which the rules cannot guess.
Before either step the app removes everything except letters, combining marks, apostrophes and hyphens from the
word (sanitize() in utils.js) and normalizes it to NFKC.
Dialects & Limitations
- Supported: Standard Lithuanian only; the single style is Default.
- Not supported: Regional dialects (for example Samogitian) and informal speech.
- No stress guessing: the rules never decide which syllable is stressed. Only accent marks you type (or a dictionary entry) produce a stress mark.
- Lowercase only: the rules look for lowercase letters; capitals confuse them (see Common Issues).
- Not implemented in the module: voicing assimilation (dubti /dʊbʲ.tʲɪ/ keeps its b voiced), final devoicing, and any special treatment of mixed diphthongs (an, am, al, ar, ir ...). The output is a broad transcription of letters, not of connected speech.
- Loanwords and names: letters outside the native alphabet (f, h, x, q, w) and the digraphs dž/ts are handled only partially.
Phonemic vs Phonetic
- Phonemic (the only form offered): a broad transcription. Dictionary entries are phonemic by nature. The rule engine also emits a few predictable variants (dark ɫ, velar ŋ, palatalized consonants, ɕ ʑ) because they are built into the module, but it does not produce narrow phonetic detail such as aspiration or assimilation.
Quick Reference (Glossary)
- Phoneme
- The smallest unit of sound that distinguishes meaning (for example /p/ vs /b/ in pãtas vs batas).
- Allophone
- A variant pronunciation of a phoneme that does not change meaning, such as dark ɫ vs clear lʲ.
- Palatalization
- A consonant pronounced with the middle of the tongue raised toward the hard palate, written ʲ. In Lithuanian most consonants are soft before i, e and the i-digraphs, e.g. liepa /lʲɪə.pɐ/.
- Soft / Hard consonant
- A palatalized consonant (tʲ) versus a plain one (t). Before the vowels a, o, u, ų and ū consonants are hard, for example tavo /tɐ.ʋoː/.
- Ogonek
- The small hook under ą, ę, į, ų. These letters mark long vowels.
- Macron
- The bar over ū (a long u). The letter ė carries a dot above and is a long e.
- Tone / Pitch accent
- Lithuanian stressed syllables carry a tone, written with an acute (á), grave (à) or tilde (ã) accent. This tool converts the three marks into a stress sign, vowel length and, for the acute, a circumflex sign on the vowel.
- Diphthong
- A single-syllable vowel glide, e.g. kaina /kɐɪ.nɐ/, draugas /drɐʊ̯.ɡɐs/.
- Schwa
- The neutral vowel ə. In this module it appears only as the second element of the diphthongs ie and uo, e.g. siena /sʲɪə.nɐ/.
- Affricate
- A stop followed by a fricative, written with a tie bar: t͡s (c), t͡ʃ/t͡ɕ (č), d͡z (dz).
- Velarization (dark l)
- A back-of-the-tongue ɫ, used for l before hard vowels and consonants: lapas /ɫɐ.pɐs/.
- Syllable Boundary
- The dot (.) between syllables. This module leaves the dots in its output, so you will see them in rule-generated IPA.
- Tie Bar
- The mark ◌͡◌ joining two symbols into one affricate.
- Lexicon
- The dictionary of ready-made IPA transcriptions, consulted before the rules.
- NFD
- Unicode decomposed form: accented letters are split into a base letter plus combining marks so the module can match the marks.
How to Read IPA Symbols
This section lists the symbols this engine actually emits, with an approximate English equivalent.
Vowel Symbols
| IPA | Example | English Approximation | Notes |
|---|---|---|---|
| /ɐ/ | batas /bɐ.tɐs/ | "cut" (open, central) | Short a |
| /aː/ | rãtas /ˈraː.tɐs/ | "father" | Long, from ã (tilde) |
| /âː/ | lába /ˈɫâː.bɐ/ | "father" with falling pitch | From á (acute) |
| /ɛ/ | medis /mʲɛ.dʲɪs/ | "bed" | Short e |
| /eː/ | tėvas /tʲeː.ʋɐs/ | "say" (no glide) | Long, from ė |
| /æː/ | ęsti /æː.sʲtʲɪ/ | "cat" (lengthened) | Long, from ę; also after soft consonants, e.g. miãsa /ˈmʲæː.sɐ/ |
| /ɪ/ | tiltas /tʲɪɫ.tɐs/ | "sit" | Short i |
| /iː/ | jį /jiː/ | "see" | Long, from į and y |
| /ʊ/ | kur /kʊr/ | "put" | Short u |
| /uː/ | rūkas /ruː.kɐs/ | "food" | Long, from ū and ų |
| /oː/ | kodas /koː.dɐs/ | "more" (no glide) | The letter o is always long |
| /ə/ | siena /sʲɪə.nɐ/ | "about" | Only inside the diphthongs ie and uo |
| /ɐɪ/ | kaina /kɐɪ.nɐ/ | "eye" (shorter) | Diphthong ai |
| /ɛɪ/ | eiti /ɛɪ.tʲɪ/ | "say" (with i-glide) | Diphthong ei |
| /ɐʊ̯/ | draugas /drɐʊ̯.ɡɐs/ | "how" (shorter) | Diphthong au |
| /ɛʊ/ | kiaulė /kʲɛʊ.lʲeː/ | No close equivalent | Diphthong iau (and eu) |
| /ʊɪ/ | kuinas /kʊɪ.nɐs/ | "ooey" | Diphthong ui |
| /ɪə/ | miestas /mʲɪə.stɐs/ | "here" (without r) | Diphthong ie |
| /ʊə/ | puodas /pʊə.dɐs/ | "poor" (without r) | Diphthong uo |
Consonant Symbols
| IPA | Example | English Approximation | Notes |
|---|---|---|---|
| /p b t d k/ | pãtas /ˈpaː.tɐs/, batas /bɐ.tɐs/, tavo /tɐ.ʋoː/, kodas /koː.dɐs/ | "spin", "bat", "stop", "dot", "skin" | Unaspirated stops |
| /ɡ/ | draugas /drɐʊ̯.ɡɐs/ | "go" | From g (not before u, see Issues) |
| /f/ | fabrikas /f.ɐ.bʲrʲɪ.kɐs/ | "fan" | Loanwords only |
| /ʋ/ | vasara /ʋɐ.sɐ.rɐ/ | between "v" and "w" | From v |
| /s z/ | stalas /stɐ.ɫɐs/, zuikis /zʊɪ.kʲɪs/ | "sun", "zoo" | |
| /ʃ ʒ/ | šaltas /ʃɐɫ.tɐs/, žodis /ʒoː.dʲɪs/ | "shoe", "measure" | From š, ž |
| /ɕ ʑ/ | šeši /ɕɛ.ɕɪ/, žemė /ʑɛ.mʲeː/ | soft "sh", soft "zh" | š, ž before a soft vowel |
| /x/ | chaosas /xɐoː.sɐs/ | Scottish "loch" | From ch |
| /ɣ/ | hobis /ɣ.oː.bʲɪs/ | voiced "ch" of "loch" | From h |
| /t͡s/ | ciklas /t͡sʲɪ.kɫɐs/ | "cats" | From c |
| /t͡ʃ/ /t͡ɕ/ | čaga /t͡ʃɐ.ɡɐ/, čekis /t͡ɕɛ.kʲɪs/ | "church", soft "church" | From č |
| /d͡z/ | dzeta /d͡zʲɛ.tɐ/ | "adze" | From dz (typed ð also works) |
| /m n/ | mama /mɐ.mɐ/, nosis /noː.sʲɪs/ | "mom", "no" | |
| /ŋ/ | bankas /bɐŋ.kɐs/ | "sing" | n before k or g |
| /l/ | liepa /lʲɪə.pɐ/ | "leaf" | Clear (palatalized) l: lʲ |
| /ɫ/ | lapas /ɫɐ.pɐs/ | "full" (dark l) | l before anything except a soft consonant mark |
| /r/ | ratas /rɐ.tɐs/ | Spanish "pero" (tap/trill) | |
| /j/ | jis /jɪs/ | "yes" | |
| /kʋ/ | kvaila /kʋɐɪ.ɫɐ/ | "kv" | Normal kv cluster |
Diacritical Marks
| Symbol | Name | Meaning | Example |
|---|---|---|---|
| ˈ | Primary stress | Stress is on the following syllable | rankà /rɐŋˈkɐ/ |
| . | Syllable boundary | Syllable break (left in rule output) | labas /ɫɐ.bɐs/ |
| ː | Length mark | Vowel is long | rãtas /ˈraː.tɐs/ |
| ʲ | Palatalization | Consonant is soft | tėvas /tʲeː.ʋɐs/ |
| ̂ | Circumflex | Acute-tone vowel (placed on the vowel before the length mark) | kárta /ˈkâːr.tɐ/ |
| ̯ | Non-syllabic | Glide part of a diphthong | tauta /tɐʊ̯.tɐ/ |
| ͡ | Tie bar | Affricate (single unit) | čaga /t͡ʃɐ.ɡɐ/ |
Interactive Features
- Click words to cycle variants: Some lexicon entries list more than one pronunciation (separated by commas). Click a transcribed word to cycle through them.
- Audio playback: Click the speaker icon next to a word or line to hear text-to-speech (language code lt-LT; needs browser or Edge TTS voice support).
- Export results: Use the PDF or CSV buttons to save transcriptions.
Multiple Pronunciation Variants
- Lexicon entries: a dictionary headword can carry several transcriptions (for example different stress placements).
- Lexicon vs. rules: the dictionary and the rule engine can give different results for the same word; the dictionary wins whenever it has the word.
- Rule engine: always returns exactly one result per word.
Lithuanian Pronunciation Guide
This guide describes how the module turns Lithuanian spelling into sounds. Lithuanian spelling is fairly regular, but several things are not written in ordinary text: the stress position and the tone. The module can only reproduce them if you mark them.
Vowel Length & Quality
Length is carried by the letter itself: a e i u are short, while ą ę į ų ū ė y are long and o is always long. The exception is ą, which the module leaves unconverted (see Common Issues).
| Letter | Short | Long | Short Example | Long Example |
|---|---|---|---|---|
| a / ą | /ɐ/ | /aː/ (only via ã) | batas /bɐ.tɐs/ | rãtas /ˈraː.tɐs/ |
| e / ė / ę | /ɛ/ | /eː/, /æː/ | medis /mʲɛ.dʲɪs/ | tėvas /tʲeː.ʋɐs/, ęsti /æː.sʲtʲɪ/ |
| i / į / y | /ɪ/ | /iː/ | tiltas /tʲɪɫ.tɐs/ | jį /jiː/, sakyti /sɐ.kʲiː.tʲɪ/ |
| u / ū / ų | /ʊ/ | /uː/ | kur /kʊr/ | rūkas /ruː.kɐs/, rankų /rɐŋ.kuː/ |
| o | (none) | /oː/ | - | kodas /koː.dɐs/ |
Short vowels written with the ordinary letter stay short even with a tilde (ẽ ĩ ũ), and the vowel after a soft consonant is fronted: ʲɐ becomes ʲɛ (tokia /toː.kʲɛ/), and a long aː becomes ʲæː (niãrti /ˈnʲæːrʲ.tʲɪ/).
Stress and Tone Marks
The module reads three accent marks. Per its own source comment: acute = stressed + circumflex tone, tilde = stressed + long, grave = stressed + short. A stress sign ˈ is placed before the syllable that contains the mark. Without any mark there is no stress sign at all.
| Mark | No mark | Acute (á) | Tilde (ã) | Grave (à) |
|---|---|---|---|---|
| a | lapas /ɫɐ.pɐs/ | lába /ˈɫâː.bɐ/ | lãbas /ˈɫaː.bɐs/ | màma /ˈmɐ.mɐ/ |
| o | dovana /doː.ʋɐ.nɐ/ | dóvana /ˈdôː.ʋɐ.nɐ/ | dõvana /ˈdoː.ʋɐ.nɐ/ | dòvana /ˈdoː.ʋɐ.nɐ/ |
| ė | mėsa /mʲeː.sɐ/ | mė́sa /ˈmʲêː.sɐ/ | mė̃sa /ˈmʲeː.sɐ/ | mė̀sa /ˈmʲeː.sɐ/ |
- The acute turns the vowel into a circumflex-marked long vowel only for a, o, ė, ę, y, ū, ų, į (written âː, ôː ...). On a plain short e i u the module does not rewrite the acute and a stray acute stays in the output.
- The tilde adds length only to a; on e i u it just marks stress: kẽpti /ˈkʲɛpʲ.tʲɪ/.
- The stress sign takes the place of the syllable dot: kartà /kɐrˈtɐ/ vs kárta /ˈkâːr.tɐ/ vs kartã /kɐrˈtaː/.
- Every syllable with a mark gets its own ˈ: dúonà /ˈdʊ̂əˈnɐ/.
- Macron and breve are not stress marks (ūkis /uː.kʲɪs/ vs ū̃kis /ˈuː.kʲɪs/).
Palatalization (Soft Consonants)
The module marks a consonant as soft (ʲ) in these cases:
- Before i, e, ė, ę, į, y and j-vowel combinations: medis /mʲɛ.dʲɪs/, gerti /ɡʲɛrʲ.tʲɪ/, tėvas /tʲeː.ʋɐs/. The letter y is in this list too, which is a bug for real Lithuanian (see Issues).
- Before the i-digraphs ia, io, iu: the i disappears and only the softness remains: žiema /ʑɪə.mɐ/, čiobrelis /t͡ɕoː.bʲrʲɛ.lʲɪs/, giesmė /ɡʲɪə.sʲmʲeː/. Exception: iau keeps its i and becomes a diphthong: kiaulė /kʲɛʊ.lʲeː/.
- Consonant clusters: a soft consonant makes the consonants before it soft too: sveikas /sʲʋʲɛɪ.kɐs/, tìlti /ˈtʲɪlʲ.tʲɪ/, anglis /ɐŋʲ.ɡʲlʲɪs/. The exception is k, which never takes ʲ this way (krienas /krʲɪə.nɐs/ and apniūkti /ɐpʲ.nʲuːk.tʲɪ/ keep a plain k, and so does the k in skaityti /skɐɪ.tʲiː.tʲɪ/).
- After š and ž: a soft ʃ becomes ɕ and a soft ʒ becomes ʑ: šeši /ɕɛ.ɕɪ/, žemė /ʑɛ.mʲeː/; č before a soft vowel becomes t͡ɕ: čekis /t͡ɕɛ.kʲɪs/.
- Not palatalized: consonants before a, o, u: tavo /tɐ.ʋoː/. The consonant j is never softened.
A missing j is added before an initial ie and between a vowel and ie: ieva /jɪə.ʋɐ/, paieška /pɐ.jɪə.ʃkɐ/.
Diphthongs
The module recognizes the following diphthongs (the acute-mark inputs below are illustrative). A tilde on the second vowel is dropped (it marks stress, which the stress step has already handled); an acute adds a circumflex mark on the first element.
| Letters | Unmarked | With acute | Notes |
|---|---|---|---|
| ai | kaina /kɐɪ.nɐ/ | káina /ˈkɐ̂ɪ.nɐ/ | |
| au | draugas /drɐʊ̯.ɡɐs/ | áuga /ˈɐ̂ʊ.ɡɐ/ | |
| ei | eiti /ɛɪ.tʲɪ/ | éiti /ˈɛ̂ɪ.tʲɪ/ | |
| iau | kiauras /kʲɛʊ.rɐs/ | kiáuras /ˈkʲæ̂ʊ.rɐs/ | The i only softens the consonant |
| ie | miestas /mʲɪə.stɐs/ | píeva /ˈpʲɪ̂ə.ʋɐ/ | The second element is a schwa |
| uo | puodas /pʊə.dɐs/ | dúona /ˈdʊ̂ə.nɐ/ | |
| ui | kuinas /kʊɪ.nɐs/ | kúinas /ˈkʊ̂ɪ.nɐs/ |
Limitation: diphthongs are only matched inside a word. At the end of a word the syllable-division step splits them into two syllables, so the diphthong rules do not fire: vaikai /ʋɐɪ.kɐ.ɪ/, vanduo /ʋɐn.dʊ.oː/, kaip /kɐ.ɪp/. Compare the same diphthong in the middle of a word: vaikas /ʋɐɪ.kɐs/. Words like this are the ones most likely to be better served by the dictionary.
Consonant Rules
- g, h, c, v, q: g becomes the IPA ɡ (draugas /drɐʊ̯.ɡɐs/); h becomes ɣ (hobis /ɣ.oː.bʲɪs/); c becomes t͡s (ciklas /t͡sʲɪ.kɫɐs/); v becomes ʋ (vasara /ʋɐ.sɐ.rɐ/); q becomes k.
- Digraphs: ch becomes x (chaosas /xɐoː.sɐs/); dz becomes d͡z (dzeta /d͡zʲɛ.tɐ/); č becomes t͡ʃ (čaga /t͡ʃɐ.ɡɐ/). ts and dž are only half supported: see Common Issues.
- Velar nasal: n followed by k or ɡ becomes ŋ: bankas /bɐŋ.kɐs/, langas /ɫɐŋ.ɡɐs/. A soft n stays soft: anglis /ɐŋʲ.ɡʲlʲɪs/.
- Dark l: every l that is not soft becomes ɫ: kalnas /kɐɫ.nɐs/, but not at the very end of a word: atgal /ɐt.ɡɐl/.
- Voicing: not modified. Consonants keep their letter-based voicing even in clusters and at the end of a word.
Syllable Division
Syllable dots are left in the final output. The division rule puts a dot before each onset-plus-vowel group, treats stop + sonorant (e.g. br, pl) and s/z + stop as one onset (but splits stop + m/n, e.g. ritmas /rʲɪt.mɐs/), and keeps a vowel sequence together unless it is at the end of the word. Examples: draugas /drɐʊ̯.ɡɐs/, sluoksnis /sɫʊək.sʲnʲɪs/, aštuoni /ɐ.ʃtʊə.nʲɪ/. The letters h f x and q are not recognized as onsets, so they get a stray dot (see Common Issues).
Comprehensive Spelling-to-IPA Mapping
1. Vowel Letters
| Spelling | Example | Notes |
|---|---|---|
| a | batas /bɐ.tɐs/ | Short |
| e | medis /mʲɛ.dʲɪs/ | Short |
| ė | tėvas /tʲeː.ʋɐs/ | Long |
| ę | ęsti /æː.sʲtʲɪ/ | Long, open |
| i | tiltas /tʲɪɫ.tɐs/ | Short |
| į | jį /jiː/ | Long |
| y | sakyti /sɐ.kʲiː.tʲɪ/ | Long (also palatalizes the preceding consonant) |
| o | kodas /koː.dɐs/ | Always long |
| u | kur /kʊr/ | Short |
| ų | rankų /rɐŋ.kuː/ | Long |
| ū | rūkas /ruː.kɐs/ | Long |
| ą | ąsà /ɐ̨ˈsɐ/ | Not converted (stray ogonek in output) |
2. Diphthong Letter Pairs
| Spelling | Example |
|---|---|
| ai | žaibas /ʒɐɪ.bɐs/ |
| ei | sveikas /sʲʋʲɛɪ.kɐs/ |
| au | kaulas /kɐʊ̯.ɫɐs/ |
| iau | kiaulė /kʲɛʊ.lʲeː/ |
| eu | euras /ɛʊ.rɐs/ |
| ie | lietus /lʲɪə.tʊs/ |
| uo | puodas /pʊə.dɐs/ |
| ui | zuikis /zʊɪ.kʲɪs/ |
3. Stress and Tone Marks
| Mark | Meaning in module | Example |
|---|---|---|
| acute ´ (á) | stressed, circumflex tone sign | kárta /ˈkâːr.tɐ/ |
| tilde ˜ (ã) | stressed, long | kartã /kɐrˈtaː/ |
| grave ` (à) | stressed, short | kartà /kɐrˈtɐ/ |
| none | no stress mark in output | karta /kɐr.tɐ/ |
4. Consonant Letters
| Spelling | Example |
|---|---|
| b | batas /bɐ.tɐs/ |
| c | ciklas /t͡sʲɪ.kɫɐs/ |
| č | čaga /t͡ʃɐ.ɡɐ/ |
| d | kodas /koː.dɐs/ |
| f | fabrikas /f.ɐ.bʲrʲɪ.kɐs/ |
| g | draugas /drɐʊ̯.ɡɐs/ |
| h | hobis /ɣ.oː.bʲɪs/ |
| j | jis /jɪs/ |
| k | kodas /koː.dɐs/ |
| l | lapas /ɫɐ.pɐs/ |
| m | mama /mɐ.mɐ/ |
| n | nosis /noː.sʲɪs/ |
| p | pãtas /ˈpaː.tɐs/ |
| r | ratas /rɐ.tɐs/ |
| s | stalas /stɐ.ɫɐs/ |
| š | šaltas /ʃɐɫ.tɐs/ |
| t | tavo /tɐ.ʋoː/ |
| v | vasara /ʋɐ.sɐ.rɐ/ |
| z | zuikis /zʊɪ.kʲɪs/ |
| ž | žodis /ʒoː.dʲɪs/ |
5. Digraphs and Clusters
| Spelling | Example | Notes |
|---|---|---|
| ch | chaosas /xɐoː.sɐs/ | |
| dz | dzeta /d͡zʲɛ.tɐ/ | Before u the placeholder leaks, e.g. dzūkas /ðuː.kɐs/ |
| ng / nk | langas /ɫɐŋ.ɡɐs/, bankas /bɐŋ.kɐs/ | n becomes ŋ |
| kv | kvaila /kʋɐɪ.ɫɐ/ | |
| sk / st | skaityti /skɐɪ.tʲiː.tʲɪ/, stalas /stɐ.ɫɐs/ | s + stop is one onset |
| ts | pats /pɐć/ | Unfinished placeholder (see Issues); write c instead: pac /pɐt͡s/ |
| dž | džemperis /ð̌ʲɛmʲ.pʲɛ.rʲɪs/ | Unfinished placeholder (see Issues); type þ instead: þemperis /d͡ʑɛmʲ.pʲɛ.rʲɪs/ |
6. Soft Consonants
| Context | Example |
|---|---|
| C + i | pirmas /pʲɪr.mɐs/ |
| C + e | tėvas /tʲeː.ʋɐs/ |
| C + ia / io / iu | žiema /ʑɪə.mɐ/, čiobrelis /t͡ɕoː.bʲrʲɛ.lʲɪs/, šiuo /ɕʊ.oː/ |
| cluster before soft consonant | sveikas /sʲʋʲɛɪ.kɐs/, dviratis /dʲʋʲɪ.rɐ.tʲɪs/ |
| š / ž + soft vowel | šeši /ɕɛ.ɕɪ/, žemė /ʑɛ.mʲeː/ |
| č + soft vowel | čekis /t͡ɕɛ.kʲɪs/ |
| C + a / o / u (hard) | tavo /tɐ.ʋoː/, kur /kʊr/ |
7. Whole Words
| Word | Meaning |
|---|---|
| mokykla /moː.kʲiː.kɫɐ/ | school |
| lietuviškai /lʲɪə.tʊ.ʋʲɪ.ʃkɐ.ɪ/ | in Lithuanian |
| draugas /drɐʊ̯.ɡɐs/ | friend |
| vanduõ /ʋɐn.dʊˈoː/ | water (with stress marked) |
| kalbà /kɐɫˈbɐ/ | language |
| obuolỹs /oː.bʊəˈlʲiːs/ | apple (stress marked) |
| šventė̃ /ʃʋʲɛnʲˈtʲeː/ | holiday (stress marked) |
| viršūnė /ʋʲɪr.ʃuː.nʲeː/ | summit |
Using the Tool: Practical Notes
How do I mark stress and tone for a word that is not in the dictionary?
Type an accent on the stressed vowel: an acute (á) gives stress with a circumflex tone sign, a tilde (ã) gives stress and length, and a grave (à) gives stress and a short vowel. The three words kartà /kɐrˈtɐ/, kartã /kɐrˈtaː/ and kárta /ˈkâːr.tɐ/ differ only in the mark. See Stress and Tone Marks. Open in the converter
Why do some words show several transcriptions?
A lexicon entry can list more than one pronunciation, for example different stress placements; click the word to cycle through them. The rule engine always returns one result. See Multiple Pronunciation Variants.
Why can the result differ from the examples on this page?
The dictionary is consulted first and wins whenever it has the word. It covers about 12,600 headwords, so many words fall through to the rules, and the examples here were generated by the rules alone. See About This Tool.
Why does the output contain dots, and why do capital letters cause errors?
The rule engine leaves syllable boundaries in its output as dots. It matches lowercase letters only, so a capital leaves a stray dot: Kauno /k.ɐʊ̯.noː/ against kauno /kɐʊ̯.noː/. See Common Issues & Limitations.
Implementation Details (for Developers)
The module is lua_modules/lt-pron_wasm.lua (216 lines of Lua, adapted from Wiktionary's
Module:lt-pron). It is much shorter than the German module: there is no stress assignment, no
morphology and no lexicon logic inside it. The public function used by the app is export.toIPA(text),
which is exactly:
pron(ulower(export.syllabify(export.respell(text))))
So the pipeline is respell (spelling to a half-phonological notation), then
syllabify (insert dots), then lowercase, then pron (notation to IPA). Because
lowercasing happens after respell and syllabify, those two steps only recognize lowercase letters. The
module also calls print() after respell and after syllabify (and once at load time), so the
intermediate forms appear in the console (for example in smoke tests); they are debug output, not the result.
The tables below show these real intermediate forms.
- Application layer (
scripts/utils.js): sanitize, lexicon lookup, then rule fallback. - Respelling (
export.respell): decomposition, digraph placeholders, added j, softness marks. - Syllabification (
export.syllabify): dots between syllables. - Pronunciation (local function
pron): consonants, allophones, stress, diphthongs, single vowels, tones.
Module Tables
| Table | Contents |
|---|---|
subs.glyphs | Placeholder substitutions used by respell: ch → ç, ts → ć, dz → ð, dz+caron → þ, o+breve → ɔ |
subs.ipa_c | Consonant letters to IPA: č → t͡ʃ, c → t͡s, ç → x, þ → d͡ʒ, ð → d͡z, g → ɡ, h → ɣ, qu → kʋ, q → k, š → ʃ, v → ʋ, ž → ʒ |
subs.ipa_v | a → ɐ, e → ɛ, i → ɪ, u → ʊ. Defined, but pron never reads it: the same replacements are written out inline. |
vowels, consonants | [aeiouy] and [bcdfghklmnprstvzðþx] (j and ç/ć are not in the consonant class) |
accents, diacritics | acute, grave, circumflex, tilde, macron, breve; plus dot above, caron and ogonek |
1. Application Layer
| Rule | Example Input | Output | Description |
|---|---|---|---|
sanitize() | "mano," | mano | Removes everything except letters, marks, ', ’, ‿, -; NFKC |
lookupInLexicon() | Lietuva | dictionary IPA | Exact key, then lowercase key; only if the lexicon is loaded |
lt_ipa.toIPA(cleanText, true) | labas /ɫɐ.bɐs/ | see left | Fallback; the second argument is ignored by the Lua function |
2. Respelling (export.respell)
2.1 Decomposition
udecomp (NFD) splits every accented letter so that marks can be tested separately, e.g. ė becomes e + dot above, ą becomes a + ogonek.
2.2 Digraph Placeholders
A pattern matching any character followed by an optional caron, breve, h, s or z is run through subs.glyphs. Pairs found in the table become single placeholder symbols; other pairs are left alone.
| Rule | Example Input | Output (respelled) | Description |
|---|---|---|---|
| ch → ç | chaosas | çaosas | Later becomes x |
| ts → ć | pats | pać | ć is never converted afterwards (leak) |
| dz → ð | dzeta | ðʲeta | Later becomes d͡z |
| dz+caron → þ | džemperis | ð̌ʲemʲpʲerʲis | Never fires: the pattern only grabs two characters, so d+z becomes ð and the caron is left behind |
| o+breve → ɔ | kŏdas | kɔdas | Passes through pron unchanged |
2.3 Added j
| Rule | Example Input | Output (respelled) | Description |
|---|---|---|---|
| initial ie → jie | ieva | jieva | Pattern ^i[acute grave]?e[tilde]? |
| V + ie → V + jie | paieška | pajieška | Any vowel (with marks) followed by ie |
2.4 Softness Marks
| Rule | Example Input | Output (respelled) | Description |
|---|---|---|---|
| i + a/o/u → ʲ + a/o/u | tokia | tokʲa | Pattern i([aou][accents]*)(.?); the i is replaced by ʲ |
| ... unless the next letter is u (iau) | kiaulė | kʲiaulʲė | The i stays, so iau can become a diphthong later |
| C + i/e/j/y → Cʲ + i/e/j/y | medis | mʲedʲis | Caron letters count as one consonant. y is included in the set |
| cluster before Cʲ | sveikas | sʲvʲeikas | Each preceding consonant in the run gets ʲ, except k |
print(term) | - | - | Debug print of the respelled form (not part of the result) |
3. Syllabification (export.syllabify)
One global pattern inserts a dot before each onset+vowel group. The onset may contain s|z, a stop (ptkbdðþgçćc), a sonorant (lmnrvj), each optionally followed by caron or ʲ. Vowels and marks before the dot are carried along. Then three clean-up steps run.
| Rule | Example Input | Output (syllabified) | Description |
|---|---|---|---|
| dot before onset + vowel | draugas | drau.gas | Vowel runs stay together when followed by onset + vowel |
| strip leading dot | labas | la.bas | ^%. removed |
.ʲ → ʲ. | medis | mʲe.dʲis | The softness mark stays with its consonant |
| stop + m/n split | ritmas | rʲit.mas | %.([ptbdðþ]ʲ?)([mn]) moves the dot between the stop and the nasal; otherwise the stop + nasal would form one onset |
| word-final vowel run is split | vaikai | vai.ka.i | The last vowel gets its own dot because no onset + vowel follows; diphthong rules later cannot match across the dot |
| h, f, x, q not in onset class | hobis | h.o.bʲis | The dot is inserted after the letter, producing a stray syllable |
print(term) | - | - | Debug print of the syllabified form |
syllabify(term, table) can also return an iterator over characters when table is truthy; toIPA does not use this.
4. Pronunciation (pron)
Input is the lowercased, syllabified string. Substitutions are applied in this order (the order matters: for example the diphthongs run before the single vowels).
4.1 Consonant Letters to IPA
A pattern matching one character plus an optional caron or u is looked up in subs.ipa_c. The optional u exists for qu, but it also swallows the u after any consonant. A pair such as gu is not in the table, so it is left unchanged.
| Rule | Example Input | Output | Description |
|---|---|---|---|
| č → t͡ʃ, š → ʃ, ž → ʒ | ča.ga | čaga /t͡ʃɐ.ɡɐ/ | Caron letters |
| c → t͡s | cʲi.klas | ciklas /t͡sʲɪ.kɫɐs/ | |
| ç → x, ð → d͡z | çao.sas | chaosas /xɐoː.sɐs/ | |
| g → ɡ, h → ɣ, v → ʋ | h.o.bʲis | hobis /ɣ.oː.bʲɪs/ | |
| C + u not converted (bug) | gu.drus | gudrus /gʊ.drʊs/ | The u joins the match, the pair gu is not in the table, so g stays ASCII g. Same for vu, cu, hu, ðu |
| qu → kʋ (unreachable) | q.ua.sʲi | quasi /k.ʊɐ.sʲɪ/ | syllabify has already put a dot between q and u |
| ć (from ts) is not converted | pać | pats /pɐć/ | ć has no entry in ipa_c (only the decomposed c+acute does), so it appears raw |
4.2 Consonant Allophones
| Rule | Example Input | Output | Description |
|---|---|---|---|
| ʃʲ → ɕ | šʲe.šʲi | šeši /ɕɛ.ɕɪ/ | Also turns t͡ʃʲ into t͡ɕ: čekis /t͡ɕɛ.kʲɪs/ |
| ʒʲ → ʑ | žʲe.mʲė | žemė /ʑɛ.mʲeː/ | |
| l + (not ʲ) → ɫ | la.pas | lapas /ɫɐ.pɐs/ | Needs a following character, so a word-final l stays plain: atgal /ɐt.ɡɐl/ |
| n (ʲ) (.) + k/ɡ → ŋ | ban.kas | bankas /bɐŋ.kɐs/ | Works across a syllable dot; relies on the ɡ produced in 4.1, so it fails for ASCII g: ungurys /ʊn.gʊ.rʲiːs/ |
4.3 Stress Sign
| Rule | Example Input | Output | Description |
|---|---|---|---|
| first syllable with a mark: add ˈ at the start | lã.bas | lãbas /ˈɫaː.bɐs/ | Pattern looks for acute, grave or tilde before the first dot |
| later syllable with a mark: dot → ˈ | ran.kà | rankà /rɐŋˈkɐ/ | The syllable dot is consumed by ˈ |
| no mark anywhere | ran.ka | ranka /rɐŋ.kɐ/ | No stress sign; the module does not guess stress |
4.4 Diphthongs
Applied in this order, on the text with marks still present. A trailing tilde is swallowed by the rule.
| Rule | Example Input | Output | Description |
|---|---|---|---|
| iá u → æ̂ʊ | šʲiáu.rʲė | šiáurė /ˈɕæ̂ʊ.rʲeː/ | |
| iau(~) → ɛʊ | kʲiau.lʲė | kiaulė /kʲɛʊ.lʲeː/ | |
| au(~) → ɐʊ̯ | tau.ta | tauta /tɐʊ̯.tɐ/ | The later au → ɒʊ rule can never fire, because this one runs first |
| ái → ɐ̂ɪ, ai(~) → ɐɪ | kai.na | kaina /kɐɪ.nɐ/ | |
| éi → ɛ̂ɪ, ei(~) → ɛɪ | ei.tʲi | eiti /ɛɪ.tʲɪ/ | |
| áu → â ʊ | áu.ga | áuga /ˈɐ̂ʊ.ɡɐ/ | The a is turned into ɐ by 4.5 |
| éu → ɛ̂ʊ, eu(~) → ɛʊ | eu.ras | euras /ɛʊ.rɐs/ | Mostly loanwords |
| íe → î ə, ie(~) → iə | mʲie.stas | miestas /mʲɪə.stɐs/ | The i is later made ɪ |
| úo → û ə, uo(~) → uə | puo.das | puodas /pʊə.dɐs/ | The u is later made ʊ |
| úi → ʊ̂ɪ, ui(~) → ʊɪ | kui.nas | kuinas /kʊɪ.nɐs/ | |
| óu → ɔ̂ɪ, úu → ɔ̂ʊ (rare) | kóu.kas | kóukas /ˈkɔ̂ɪ.kɐs/ | Defined in the code but not Lithuanian spelling (the first one even ends in ɪ); kúukas /ˈkɔ̂ʊ.kɐs/ gives the second |
4.5 Single Vowels
| Rule | Example Input | Output | Description |
|---|---|---|---|
| a → ɐ; ɐ+acute → âː; ɐ+tilde → aː | lá.ba | lába /ˈɫâː.bɐ/ | Stress/length from a mark |
| e → ɛ; ɛ+dot → eː; ɛ+ogonek → æː | tʲė.vas | tėvas /tʲeː.ʋɐs/ | ė and ę |
| i → ɪ; ɪ+ogonek → iː | jį | jį /jiː/ | |
| y → iː | sa.kʲy.tʲi | sakyti /sɐ.kʲiː.tʲɪ/ | |
| u → ʊ; ʊ+macron / ʊ+ogonek → uː | rū.kas | rūkas /ruː.kɐs/ | ū and ų |
| o(~) → oː | ko.das | kodas /koː.dɐs/ | Every o is long |
| ʲaː → ʲæː; ʲɐ → ʲɛ | nʲãrʲ.tʲi | niãrti /ˈnʲæːrʲ.tʲɪ/ | Fronting after a soft consonant |
| a+ogonek: no rule (bug) | ą.sà | ąsà /ɐ̨ˈsɐ/ | The vowel is stuck at ɐ with a loose ogonek |
4.6 Tone Clean-up
| Rule | Example Input | Output | Description |
|---|---|---|---|
| ː + acute → circumflex + ː | mʲė́.sa | mė́sa /ˈmʲêː.sɐ/ | "Acute = stressed + circumflex tone" |
| tilde removed | mʲė̃.sa | mė̃sa /ˈmʲeː.sɐ/ | "Tilde = stressed + long" |
| grave removed | mʲė̀.sa | mė̀sa /ˈmʲeː.sɐ/ | "Grave = stressed + short" (the short is not actually applied to ė) |
| [ʲj]a → [ʲj]e | jã | jã /ˈjeː/ | Only reaches letters that are still plain a, i.e. the aː created from a tilde |
Other Functions
export.link(term): Wiktionary link helper, not used by the app.export.test_respell(frame)andexport.show(frame): MediaWiki entry points; they are not called by the app.- On load the module also runs
print(export.toIPA("gyvẽnimas"))as a self-test (console only).
Common Issues & Limitations
Known Transcription Problems
This table shows known issues in the rule-based path (words not in the dictionary). "Correct IPA" is the engine output for a corrected input where one exists, otherwise it is described in words:
| Input | System Output | Correct IPA | Cause | What to Do |
|---|---|---|---|---|
| labas | labas /ɫɐ.bɐs/ | lãbas /ˈɫaː.bɐs/ | Unmarked input has no stress or tone information | Type the accent mark on the stressed vowel (tilde, acute or grave) |
| vyras | vyras /ʋʲiː.rɐs/ | A plain v (no softness mark) before a long i | y is treated like a front vowel and softens the previous consonant. Also affects rašytojas /rɐ.ɕiː.toː.jɐs/ |
Use the dictionary result if the word is in it; otherwise ignore the ʲ/ɕ before y |
| Kauno | Kauno /k.ɐʊ̯.noː/ | kauno /kɐʊ̯.noː/ | Respell/syllabify only match lowercase; the capital leaves a stray dot | Type words in lowercase |
| džiaugsmas | džiaugsmas /ð̌ʲɛʊɡ.smɐs/ | þiaugsmas /d͡ʑɛʊɡ.smɐs/ | The dž placeholder is never converted and leaks into the output as ð̌ | Type þ in place of dž |
| pats | pats /pɐć/ | pac /pɐt͡s/ | The ts placeholder ć has no IPA mapping and appears raw | Type c in place of ts, when the sound is an affricate |
| gudrus | gudrus /gʊ.drʊs/ | Same, but with the IPA letter for g (and the proper IPA letters for the v, c and h cases such as vulkanas /vʊɫ.kɐ.nɐs/) | A consonant followed by u is matched as a pair that is not in the table, so g, v, c, h stay as plain letters | No input workaround; check the dictionary |
| vaikai | vaikai /ʋɐɪ.kɐ.ɪ/ | The final ai should be one diphthong, as in the unmarked middle of vaikas /ʋɐɪ.kɐs/ | Word-final vowel runs are split into two syllables, so the diphthong rule is skipped (same for vanduo /ʋɐn.dʊ.oː/ and kaip /kɐ.ɪp/) | Read the two syllables as one diphthong; some such words may be in the dictionary |
| ąžuolas | ąžuolas /ɐ̨.ʒʊə.ɫɐs/ | The first vowel should be a long open a, without the stray ogonek | No rule converts a+ogonek (e, i, u have one). Also ją /jɐ̨/ | Report or use the dictionary; compare with ã: ãžuolas /ˈaː.ʒʊə.ɫɐs/ |
| atgal | atgal /ɐt.ɡɐl/ | A dark l (velarized) at the end | The ɫ rule needs a character after the l | Known limitation of the module |
| fabrikas | fabrikas /f.ɐ.bʲrʲɪ.kɐs/ | No dot after f | f, h, x and q are not in the syllable-onset set, so a dot follows them (same for hobis /ɣ.oː.bʲɪs/) | Loanwords: delete the stray dot yourself |
Related Pronunciation Guides
Help pages for other languages of the region in this tool:
For technical issues or suggestions, please visit our GitHub repository.