Brazilian and European Portuguese Pronunciation: IPA Guide
← Back to Portuguese transcription ↑ All Languages
Table of Contents
- Getting Started
- Quick Reference (Glossary)
- How to Read IPA Symbols
- Portuguese Pronunciation Guide
- Spelling, Accent Marks and Respelling
- Stress Patterns
- Open and Closed e / o
- Unstressed Vowels and Vowel Reduction
- Nasal Vowels and Nasal Diphthongs
- Oral Diphthongs
- Hiatus and Glides
- t / d Before i (Brazil)
- S and Z
- R Sounds
- L Sounds
- c, g, q, h, ch, lh, nh and Double Letters
- The Letter x
- Voiced Stops in Portugal (Phonetic Form)
- Syllable Division
- Orthography to IPA Mapping
- Using the Tool: Practical Notes
- For Developers
- Related Pronunciation Guides
About This Tool
This Portuguese transcription app uses the Wiktionary
Portuguese Pronunciation Module (pt-pronunc, shipped here as
lua_modules/pt-pron_wasm.lua) to generate phonetic and phonemic IPA transcriptions for Portuguese
text. IPA (International Phonetic Alphabet) is a standardized system for transcribing speech sounds. Phonemic
transcription represents the abstract sound system (phonemes), while phonetic
transcription shows actual speech variations (allophones).
Unlike several other languages in this app, Portuguese is purely rule-based: there is
no lexicon and no dictionary lookup. Every word is transcribed from its spelling by the
Wiktionary module, which was designed for editors who type a respelling (for example cinêma)
whenever the ordinary spelling does not determine the pronunciation. The consequence: where Portuguese spelling is
genuinely ambiguous (most notably a stressed e or o, and the letter x), the engine
refuses to guess and the app shows an error instead of a possibly wrong answer. See
Important Note: Why You Might See an Error.
Dialects & Limitations
The app offers two dialect choices. Behind them, the app calls the module as
window.pt_ipa.IPA(word, region) with region = "rio" for Brazil and
region = "pt" for Portugal.
- Brazil means specifically the Rio de Janeiro (carioca) profile
(
rio), not a generic "Brazilian" accent. What that implies in practice:- Syllable-final (coda) s/
zis ʃ/ʒ (the chiado): pastas /ˈpaʃ.tɐʃ/. Other Brazilian accents keep s there; those profiles are not selectable here. - The "strong r" (
rr, initial r, coda r) is ʁ phonemically and a voiceless χ phonetically: carro /ˈka.ʁu/ carro [ˈka.χu]. - t/d before i become affricates: cidade /siˈda.d͡ʒi/.
- Coda
lis w: animal /a.niˈmaw/. - Unstressed final e, o,
aare i, u, ɐ: bonito /boˈni.tu/, casa /ˈka.zɐ/.
- Syllable-final (coda) s/
- Portugal means a generic European Portuguese transcription. The module has
its own profiles named
gpt(general Portugal),cpt(central) andspt(southern), but the app passes the codept, which is not one of them. The module treats any style that is not Brazilian as "Portugal" and applies its extra regional rules only for exact style names: the lowering ofeito ɐj only forgpt, and the monophthongization of ei/ou only forspt. Withptneither fires, so the output equals that ofcpt: for example beijo /ˈbej.ʒu/ keeps ej.
Profiles Inside the Module (Not All Selectable)
The module defines seven styles (export.all_styles). The older version of this page
listed an eighth, npt (Northern Portugal); the code does not contain it.
| Code | Group | What it does in the module | Used by this app? |
|---|---|---|---|
gbr | Brazil | General Brazilian: coda s stays s/z; phonetic strong r is h/ɦ | No |
rio | Brazil | Rio de Janeiro (Carioca): coda s is ʃ/ʒ; phonetic strong r is χ/ʁ | Yes (the "Brazil" option) |
sp | Brazil | São Paulo (Paulistano): coda r stays a tap ɾ | No |
sbr | Brazil | Southern Brazil: no raising of final e/o, coda r is ɻ, no nasalization of a stressed vowel before m/n/nh | No |
gpt | Portugal | General Portugal: ei lowered to ɐj | No (the app's "Portugal" is plain pt) |
cpt | Portugal | Central Portugal outside Lisbon (no rules of its own in this version) | No (but identical in output to the app's "Portugal") |
spt | Portugal | Southern Portugal: ei and ou become monophthongs | No |
Limitations
- Supported: Rio de Janeiro Portuguese (Brazil) and a generic European Portuguese (Portugal).
- Not selectable: São Paulo, southern Brazilian,
gpt-specific, southern Portuguese, African or Asian varieties, and every other regional accent. - No lexicon: loanwords, names and irregular words are transcribed from their spelling, so many need a respelling (see Common Issues).
- One word at a time: the app splits your text at spaces and transcribes every word on its own, so
rules that look across word boundaries (for example
sbecoming z before a vowel in the next word) never apply. - Only the first variant is shown: see Multiple Pronunciation Variants.
- Two engine bugs make some ordinary words fail: Brazilian words ending in stressed -io(s) and Portuguese words ending in -le. See Common Issues.
Phonemic vs Phonetic
On this page /slashes/ mark a phonemic transcription and [square brackets] a phonetic one; the app itself prints the bare IPA without either symbol.
- Phonemic: A simplified, broad transcription that shows only the sounds that are essential for distinguishing meaning (phonemes). It represents the abstract sound system of the language. Optional sounds are shown in parentheses, for example the optional final vowel in the Portugal transcription cidade /siˈda.d(ɨ)/.
- Phonetic: A detailed, narrow transcription that shows subtle, non-distinctive variations in pronunciation (allophones). It aims to represent how a word is actually said. In the module, phonetic output is the phonemic output plus a short list of allophonic rules.
Both forms are produced by the same code path, only with a phonetic flag. The phonetic form differs
from the phonemic form in exactly these ways:
| Dialect | Difference in the phonetic form | Phonemic | Phonetic |
|---|---|---|---|
| Brazil | Second part of a diphthong is a short glide ɪ̯/ʊ̯ instead of j/w | mau /ˈmaw/ | mau [ˈmaʊ̯] |
| Brazil | Strong r is χ (or ʁ before a voiced consonant) instead of ʁ | rato /ˈʁa.tu/ | rato [ˈχa.tu] |
| Brazil | Non-initial nh is a nasal glide j̃ instead of ɲ | banho /ˈbɐ̃.ɲu/ | banho [ˈbɐ̃.j̃u] |
| Brazil | Unstressed i/u before another vowel are lax ɪ/ʊ | ciúme /siˈũ.mi/ | ciúme [sɪˈũ.mi] |
| Portugal | Voiced stops b d g become fricatives β ð ɣ (except in the contexts described under Voiced Stops in Portugal) | cidade /siˈda.d(ɨ)/ | cidade [siˈða.ð(ɨ)] |
| Portugal | Coda l is dark ɫ instead of l | animal /ɐ.niˈmal/ | animal [ɐ.niˈmaɫ] |
Important Note: Why You Might See an Error
This transcription engine is designed not to guess. Because Portuguese spelling is not always perfectly phonetic, the engine will intentionally refuse to transcribe a word when the spelling leaves a sound undetermined. To fix this, you need to provide a "respelling" in the input box that clarifies the intended sound. The two most common reasons are described below.
1. Ambiguous Stressed Vowels (e and o)
This is the most common cause of errors. In Portuguese, a stressed e or o can be open
(ɛ, ɔ) or closed (e, o),
but standard spelling often does not use an accent mark to show which. There is no default: the
engine does not pick one.
Example: The word governo has stress on the e, but the engine cannot know whether it is open or closed, so it fails: governo (error). The same happens for ele (error), hoje (error), mesa (error) and saber (error).
Solution: Add an accent mark to the stressed vowel to specify its quality.
- For a closed sound, use a circumflex:
govêrnogives govêrno /ɡoˈveʁ.nu/ in Brazil and govêrno /ɡuˈveɾ.nu/ in Portugal. - For an open sound, use an acute accent:
féragives féra /ˈfɛ.ɾɐ/ and féra /ˈfɛ.ɾɐ/;hójegives hóje /ˈɔ.ʒi/ and hóje /ˈɔ.ʒ(ɨ)/.
Internally the error text is "Stressed e or o not occurring nasalized or in a diphthong must be marked for quality using é/ê or ó/ô". The app does not display that text; see below.
2. The Irregular Letter x
The letter x has several possible pronunciations (ʃ, z,
ks, s), and in many positions the engine cannot reliably choose.
It resolves x only in the cases listed in The Letter x (initial, final, after
ai/ei/oi/ou/en, and before a consonant after e) and fails everywhere else.
Example: The engine fails on exame (error), táxi (error) and
lixo (error), but succeeds on caixa /ˈkaj.ʃɐ/ (because x after ai is
always ʃ) and on enxame /ẽˈʃɐ̃.mi/. The older version of this page listed
caixa as a failing example; it does not fail.
Solution: Replace the x with its phonetic equivalent in the input.
- For the z sound in exame, enter
ezame: ezame /eˈzɐ̃.mi/ (Brazil), ezame /iˈzɐ.m(ɨ)/ (Portugal). - For the ks sound in táxi, enter
tácsi: tácsi /ˈtak.si/, tácsi /ˈta.ksi/. - For the ʃ sound in lixo, enter
lisho: lisho /ˈli.ʃu/.
The internal error text is "x must be respelled z, sh, cs, ss or similar".
3. What the App Shows When It Fails
When the module raises an error, the app catches it and returns your input word unchanged, marked with the error style (the word appears as plain, untranscribed text instead of IPA). The explanatory message above is written only to the browser's developer console. Nothing else on the line is affected: every other word is still transcribed.
4. What You Can (and Cannot) Type
Before transcription the app removes everything that is not a letter, a combining accent, an apostrophe or a hyphen. This matters for respellings, because the module has an extended respelling notation that therefore cannot be used in this app:
| You type | Works in the app? | Notes |
|---|---|---|
Accents á é í ó ú â ê ô ã õ ç ü | Yes | Precomposed and combining accents are both accepted. Capital letters are lowercased automatically. |
Letter substitutions: z, sh, cs, ss, h | Yes | For example marh forces a final r to stay pronounced without parentheses (see R Sounds). |
Hyphen - | Yes | Splits a word into components; each component gets its own stress and earlier ones become secondary stress: guarda-chuva /ˌɡwaʁ.dɐˈʃu.vɐ/. |
Apostrophe ' | Yes | Becomes a tie mark: d'água /ˈd‿a.ɡwɐ/. |
Grave accent / macron (à, ō) | Portugal only | In the module these mean "explicitly unstressed open / closed vowel" for Portugal only. In Brazil they are deleted, so sòlo fails in Brazil (stressed o unmarked) but gives sòlo /sɔ.lu/ in Portugal. |
Dot ., ^, *, +, :, #, comma, digits, ?, ! | No | These are stripped before the engine sees them, so the module's syllable-forcing dot, optional-vowel markers (e^, i^) and component markers (+, :) are unavailable. ri.o becomes rio. |
Quick Reference (Glossary)
- Phoneme
- The smallest unit of sound in a language that distinguishes meaning (e.g., /p/ vs. /b/ in "pata" vs. "bata").
- Allophone
- A variant pronunciation of a phoneme that doesn't change meaning (e.g., b vs. β in Portugal).
- Respelling
- An alternative spelling you type to tell the engine how a word is pronounced, for example
govêrnofor governo orezamefor exame. The module was built around respellings. - Open / Closed Vowel
- Portuguese distinguishes open ɛ ɔ from closed e o in stressed syllables. Spelling marks them with an acute (é, ó) and a circumflex (ê, ô).
- Oxytone / Paroxytone
- A word stressed on its last syllable (feliz /feˈliʃ/) or on its second-to-last syllable (casa /ˈka.zɐ/).
- Vowel Reduction
- Weakening of unstressed vowels. In Portugal it is strong (
eto ɨ,ato ɐ,oto u); in Brazil it is mostly limited to the word end (finaleto i,oto u). - Schwa-like Vowel ɨ
- A close central unrounded vowel; in this module the reduced form of unstressed
ein Portugal. It is often dropped, which the output shows as (ɨ). - Nasal Vowel
- A vowel pronounced with air also passing through the nose, marked with a tilde: ɐ̃ ẽ ĩ õ ũ. Spelled with ã/õ or with m/n after the vowel.
- Nasal Diphthong
- A nasal vowel followed by a nasal glide: ɐ̃w̃ (
ão), ɐ̃j̃ (ãe), õj̃ (õe), ẽj̃ (-em). - Diphthong / Glide
- A vowel plus a short non-syllabic j or w (written i/u) in the same syllable, e.g. pai /ˈpaj/, mau /ˈmaw/.
- Hiatus
- Two vowels in adjacent syllables with no consonant between them, e.g. saída /saˈi.dɐ/. In some contexts the second vowel may be pronounced as a glide.
- Palatalization
- Shift of a sound towards the hard palate; in Brazil t/d before
ibecome t͡ʃ/d͡ʒ. - Affricate / Tie Bar
- A stop released as a fricative, written with a tie bar over the two symbols: t͡ʃ, d͡ʒ.
- Tap
- A single quick tongue-tip flap, ɾ, as in the middle of caro /ˈka.ɾu/.
- Strong R
- The "rr" sound, ʁ in the phonemic form, as in carro /ˈka.ʁu/. In Rio it is phonetically the voiceless uvular fricative χ.
- Chiado
- The "hushing" pronunciation of syllable-final s/
zas ʃ/ʒ, typical of Rio and of Portugal. - Velarized L
- The dark ɫ that Portugal uses for coda
lin the phonetic form; Brazil vocalizes it to w. - Fricativized Stop
- In Portugal's phonetic form,
b d gbetween vowels are pronounced β ð ɣ. - Epenthesis
- Insertion of a sound. The Brazilian output inserts an optional (j) after a stressed vowel before final s/z, e.g. faz /ˈfa(j)ʃ/. (Epenthetic i inside consonant clusters is not inserted automatically.)
- Coda / Onset
- The final consonant(s) / initial consonant(s) of a syllable.
- Syllable Boundary
- The marker . placed between syllables in the output.
- Primary / Secondary Stress
- Marked ˈ and ˌ before the stressed syllable. Only the last stressed syllable of a word keeps primary stress; earlier ones (for example in compounds, prefixes and -mente adverbs) are downgraded to secondary.
- Unstressed Word (Clitic)
- A short word that carries no stress of its own: articles, many prepositions and object pronouns (o, a, de, que, me, se ...). The module has fixed lists of them and treats them with or without vowel reduction.
- Optional Sound
- A sound shown in parentheses, e.g. (j), (ɨ), (ʁ): it may or may not be pronounced.
- NFD
- Unicode Normalization Form Decomposed: letters with accents are split into base letter plus combining accent for processing (except ç and ü, which are re-composed).
How to Read IPA Symbols
This section lists the IPA symbols that the engine actually emits for the "Brazil" (Rio) and "Portugal" options and gives approximate English equivalents where possible. Examples are real engine output; the column or note says which dialect and form each one comes from.
Vowel Symbols
| IPA | Example | English Approximation | Notes |
|---|---|---|---|
| a | pá /ˈpa/ | "father" | Open front vowel; the only quality of a stressed a without special context |
| ɐ | casa /ˈka.zɐ/ | "sofa" (last vowel) | Near-open central vowel; unstressed final -a in Brazil; in Portugal also unstressed a anywhere and stressed a before m/n/nh: cama /ˈkɐ.mɐ/ |
| e | pê /ˈpe/ | "say" (without glide) | Closed e (spelled ê, or automatically in nasal and diphthong contexts) |
| ɛ | pé /ˈpɛ/ | "bed" | Open e (spelled é) |
| i | pi /ˈpi/ | "see" | Also the Brazilian reduction of unstressed final -e: cidade /siˈda.d͡ʒi/ |
| ɨ | pela /pɨ.lɐ/ | No English equivalent | Portugal only: reduced unstressed e, often optional (ɨ) at the word end |
| o | pô /ˈpo/ | "go" (without glide) | Closed o (spelled ô, or automatic) |
| ɔ | pó /ˈpɔ/ | "thought" (UK) | Open o (spelled ó) |
| u | pu /ˈpu/ | "food" | Also the reduction of unstressed final -o: bonito /boˈni.tu/; in Portugal also unstressed o elsewhere: bonito /buˈni.tu/ |
| ɐ̃ | lã /ˈlɐ̃/ | Nasalized "sofa" | Nasal ã, an/am before a consonant |
| ẽ | tempo /ˈtẽ.pu/ | Nasalized "say" | Nasal e before m/n |
| ĩ | sim /ˈsĩ/ | Nasalized "see" | Nasal i |
| õ | bom /ˈbõ/ | Nasalized "go" | Nasal o, õ |
| ũ | mundo /ˈmũ.du/ | Nasalized "food" | Nasal u |
| ɛ̃, ɔ̃ | ténis /ˈtɛ̃.niʃ/, hónra /ˈɔ̃.ʁɐ/ | Nasalized "bed", "thought" | An acute accent makes the stressed vowel open: before m/n in the same syllable (both dialects, e.g. hónra) or in the next syllable (Brazil only, e.g. ténis) |
| ɪ, ʊ | ciúme [sɪˈũ.mi], juízo [ʒʊˈi.zu] | "sit", "put" | Brazil, phonetic form only: i/u in hiatus before a vowel |
| j, w | pai /ˈpaj/, mau /ˈmaw/ | "yes", "wow" | Glides forming diphthongs; Brazil's phonetic form uses ɪ̯, ʊ̯ instead: pai [ˈpaɪ̯], mau [ˈmaʊ̯] |
| j̃, w̃ | mãe /ˈmɐ̃j̃/, pão /ˈpɐ̃w̃/ | Nasal glides | Second part of nasal diphthongs |
Consonant Symbols
| IPA | Example | English Approximation | Notes |
|---|---|---|---|
| p b t d k ɡ | pato /ˈpa.tu/, bato /ˈba.tu/, tato /ˈta.tu/, dado /ˈda.du/, cato /ˈka.tu/, gato /ˈɡa.tu/ | "spin", "bin", "stun", "dune", "skin", "go" | Plain stops, unaspirated. The engine prints ɡ (U+0261). Brazil replaces t, d before i by affricates |
| f v s z | fato /ˈfa.tu/, vaca /ˈva.kɐ/, sapo /ˈsa.pu/, casa /ˈka.zɐ/ | "fat", "van", "sap", "zoo" | As in English |
| ʃ | chuva /ˈʃu.vɐ/ | "ship" | Spelled ch, x; also coda s in Rio and Portugal: pasta /ˈpaʃ.tɐ/ |
| ʒ | júri /ˈʒu.ɾi/ | "measure" | Spelled j, g before e/i; also coda z/s before a voiced consonant: asma /ˈaʒ.mɐ/ |
| t͡ʃ, d͡ʒ | tia /ˈt͡ʃi.ɐ/, dia /ˈd͡ʒi.ɐ/ | "cheese", "judge" | Brazil only (before i); dj gives d͡ʒ in both dialects: djézz /ˈd͡ʒɛʃ/ |
| m n | mapa /ˈma.pɐ/, nada /ˈna.dɐ/ | "map", "nap" | Coda m/n after a vowel nasalize the vowel instead and are not pronounced |
| ɲ | ninho /ˈnĩ.ɲu/ | "canyon", Spanish ñ | Spelled nh; Brazil's phonetic form shows j̃ inside words: ninho [ˈnĩ.j̃u] |
| l | lá /ˈla/ | "leaf" | Onset l; coda l is w in Brazil and l (phonetic ɫ) in Portugal |
| ʎ | filho /ˈfi.ʎu/ | "million" (Italian gli) | Spelled lh |
| ɫ | animal [ɐ.niˈmaɫ] | "full" (dark l) | Portugal, phonetic form only, coda l |
| ɾ | caro /ˈka.ɾu/ | "butter" (American flap) | Tap; also coda r in Portugal: pórta /ˈpɔɾ.tɐ/ |
| ʁ | carro /ˈka.ʁu/ | French r | Strong r; in Brazil's phonetic form it is χ except before a voiced consonant: carro [ˈka.χu], bórdo [ˈbɔʁ.du] |
| χ | rato [ˈχa.tu] | Scottish "loch", but further back in the throat | Brazil, phonetic form only (the Rio realization of strong r) |
| β ð ɣ | sabêr [sɐˈβeɾ], cidade [siˈða.ð(ɨ)], órgão [ˈɔɾ.ɣɐ̃w̃] | Spanish haber, cada, lago | Portugal, phonetic form only: fricative b d g |
| k s (from x) | clímax /ˈklĩ.maks/ | "mix" | Final x gives ks |
Diacritical Marks
| Symbol | Name | Meaning | Example |
|---|---|---|---|
| ˈ | Primary stress | Main emphasis; placed at the start of the stressed syllable | cidade /siˈda.d͡ʒi/ |
| ˌ | Secondary stress | Weaker emphasis (compounds, prefixes, -mente, -zinho) | rapidamente /ʁaˌpi.daˈmẽ.t͡ʃi/ |
| . | Syllable boundary | Separates syllables | saída /saˈi.dɐ/ |
| ̃ | Tilde (nasalization) | Vowel or glide is nasal | irmão /iʁˈmɐ̃w̃/ |
| ̯ | Non-syllabic | Glide (Brazil, phonetic form) | pai [ˈpaɪ̯] |
| ͡ | Tie bar | Affricate (single unit) | dia /ˈd͡ʒi.ɐ/ |
| ( ) | Parentheses | Optional sound | peixe /ˈpe(j).ʃi/, peixe /ˈpej.ʃ(ɨ)/ |
| ‿ | Tie | Linked words (from an apostrophe) | d'água /ˈd‿a.ɡwɐ/ |
Interactive Features
- Audio playback: Click the speaker icon next to any word or
line to hear text-to-speech pronunciation (requires browser TTS support). The Portuguese language entry is
configured with the
pt-BRvoice code, so the audio does not change when you switch between the "Brazil" and "Portugal" options. - Export results: Use PDF or CSV buttons to save transcriptions in your preferred format.
- No variant cycling: unlike German, Portuguese words never carry alternative IPA forms in the app, so clicking a word does not cycle anything (see below).
Multiple Pronunciation Variants
The module itself can return several pronunciations for one input, each labelled with a qualifier. For
example, in Brazil the initial es- before a consonant can be i or
e, initial em-/en- can be careful ẽ or natural
ĩ, hiatus i/u can be a full vowel or a glide ("faster pronunciation"), and in
Portugal -sC clusters have "careful" and "natural" forms.
The app displays only the first variant: the handler returns result[0]. For example,
estar /iʃˈta(ʁ)/ shows the i-variant; the e-variant is not reachable.
Likewise criança /kɾiˈɐ̃.sɐ/ shows the full-vowel variant, never the glide one.
Portuguese Pronunciation Guide
This guide explains the pronunciation rules that the engine implements. Portuguese spelling is fairly regular once you know where the stress falls and how open or closed the stressed vowel is, which is exactly the information the engine asks you to supply when it cannot determine it. Brazil and Portugal differ most in vowel reduction, nasality and a handful of consonants; the sections below show both side by side.
Spelling, Accent Marks and Respelling
In Portuguese the written accents do two jobs at once: they mark which syllable is stressed and they fix the vowel quality. The engine reads them in the same way, so you should put an accent only on the stressed vowel.
| Mark | Effect in the engine | Example |
|---|---|---|
| Acute á é ó | Stressed open vowel (a ɛ ɔ) | pára /ˈpa.ɾɐ/, pé /ˈpɛ/ |
| Circumflex â ê ô | Stressed closed vowel (ɐ e o) | pâra /ˈpɐ.ɾɐ/, pê /ˈpe/ |
| Tilde ã õ | Nasal vowel; the last tilde syllable receives stress unless an accent says otherwise | irmão /iʁˈmɐ̃w̃/, manhã /mɐ̃ˈɲɐ̃/ |
| Cedilla ç | s | ça /ˈsa/ |
| Diaeresis ü | Silent diacritic: ü is read as u (pronounced after g/q) | agüentar /a.ɡwẽˈta(ʁ)/ |
| Grave à / macron ō | Portugal only: explicitly unstressed open / closed vowel. Deleted in Brazil | sòlo /sɔ.lu/, pōlo /po.lu/ |
| Letters z, sh, cs, ss, h | Respelling devices for x, final r, and so on | ezame /eˈzɐ̃.mi/, marh /ˈmaʁ/ |
The module is case-insensitive: capitals are lowercased first, so names like Maria /maˈɾi.ɐ/ need no special treatment. Letters that are not part of Portuguese spelling pass through unchanged (for example w and k), which is why loanwords usually need a respelling, as explained under Common Issues.
Stress Patterns
Word stress is assigned after syllable division, in this order (the first rule that applies wins):
- An acute or circumflex accent marks the stressed syllable: lápis /ˈla.piʃ/, café /kaˈfɛ/, você /voˈse/.
- A tilde without an accent: the last syllable that contains a tilde is stressed: irmão /iʁˈmɐ̃w̃/, manhã /mɐ̃ˈɲɐ̃/, pão-de-ló /ˌpɐ̃w̃.d͡ʒiˈlɔ/ (the last component keeps primary stress).
- The default rule:
- Words ending in -a, -e, -o (with or without -s), -am, -em, -ens or -ans are stressed on the second-to-last syllable (paroxytone): casa /ˈka.zɐ/, cidade /siˈda.d͡ʒi/, pastas /ˈpaʃ.tɐʃ/, cantam /ˈkɐ̃.tɐ̃w̃/, item /ˈi.tẽj̃/.
- All other words are stressed on the last syllable (oxytone): feliz /feˈliʃ/, azul /aˈzuw/, cantar /kɐ̃ˈta(ʁ)/, jardim /ʒaʁˈd͡ʒĩ/, tatu /taˈtu/, aqui /aˈki/, algum /awˈɡũ/.
The default rule assumes the dictionary stress for regular words only: anything that breaks it (for example órgão, lápis, bênção) is written with an accent in standard orthography and the engine trusts that accent.
-mente, -zinho and Hyphenated Components
- Adverbs in -mente and diminutives in -zinho/-zinha(s) are split into two parts and each part is stressed separately; the first becomes secondary stress: rapidamente /ʁaˌpi.daˈmẽ.t͡ʃi/, rapazinho /ˌʁa.paˈzĩ.ɲu/. A stressed e/o in the first part must be marked just as in the base word: certamente fails, cértamente works: cértamente /ˌsɛʁ.taˈmẽ.t͡ʃi/.
- A hyphen splits a word into components that are stressed independently, and every primary stress except the last becomes secondary: guarda-chuva /ˌɡwaʁ.dɐˈʃu.vɐ/, bem-vindo /ˌbẽj̃ˈvĩ.du/.
- A prefix typed with a trailing hyphen is treated as unstressed with vowel reduction (it has no accent): anti- /ɐ̃.t͡ʃi/.
Unstressed Words (Clitics)
Short function words have no stress of their own. The module keeps three fixed lists:
| List | Words | Brazil | Portugal |
|---|---|---|---|
| Reduced in both dialects | o, os, me, te, se, lhe(s), nos, vos, mo(s), to(s), lho(s), lo(s), no, vo, que, e, de, do, dos, por, pelo(s), pela(s) | que /ki/, de /d͡ʒi/, o /u/ | que /k(ɨ)/, de /d(ɨ)/, o /u/ |
| Reduced in Portugal only | a, as, ma(s), ta(s), lha(s), la(s), na(s), da(s) | da /da/, a /a/ | da /dɐ/, a /ɐ/ |
| Never reduced | um, uns, meu, teu, seu (and plurals), ou, ao, aos, à, às, em, com | meu /mew/, ao /aw/, um /ũ/ | meu /mew/, ao /aw/, um /ũ/ |
Two special pronunciations are hard-coded: ao(s) is read as au(s) (aw)
and por as pur: por /puʁ/.
Open and Closed e / o
A stressed e or o must end up as one of e ɛ or o ɔ.
The engine determines the quality in this order and raises the error described
above if none applies:
| Situation | Result | Examples |
|---|---|---|
| Written é / ó | Open ɛ ɔ | féra /ˈfɛ.ɾɐ/, avó /aˈvɔ/ |
| Written ê / ô | Closed e o | fêra /ˈfe.ɾɐ/, avô /aˈvo/ |
| Stressed vowel + m / n / nh in the next syllable (ano, cena, sono, banho) | Circumflexed automatically: closed (and, in Brazil, nasalized) | cena /ˈsẽ.nɐ/ / cena /ˈse.nɐ/; sono /ˈsõ.nu/ / sono /ˈso.nu/ |
| Nasal vowel with a tilde or m/n in the same syllable | Closed | tempo /ˈtẽ.pu/, homem /ˈõ.mẽj̃/ |
| ei, eu, oi, ou | Closed first element (êi, êu, ôi, ôu) | leite /ˈlej.t͡ʃi/, boi /ˈboj/, pouco /ˈpo(w).ku/ |
| ai, au | Becomes ái, áu, always a | pai /ˈpaj/, fauna /ˈfaw.nɐ/ |
| Stressed o in -dor, -tor, -sor (and feminine/plural) | Closed o | cantor /kɐ̃ˈtoʁ/, invasor /ĩ.vaˈzoʁ/, ganhadora /ɡɐ̃.ɲaˈdo.ɾɐ/, autores /awˈto.ɾiʃ/ |
| Stressed o in -oso | Closed o | gostoso /ɡoʃˈto.zu/ |
| Stressed o in -osa, -osos, -osas | Open ɔ | gostosa /ɡoʃˈtɔ.zɐ/, gostosos /ɡoʃˈtɔ.zuʃ/ |
| Stressed o in hiatus | Closed o | boa /ˈbo.ɐ/, voo /ˈvo.u/ |
| Anything else | Error: the word must be respelled with é/ê/ó/ô | ele (error), governo (error), amor (error) |
The acute accent on final -em/-ens (além, também, parabéns) does not open the vowel: the module turns it into a circumflex: parabéns /pa.ɾaˈbẽj̃ʃ/.
Unstressed Vowels and Vowel Reduction
This is where the two dialects differ most. Unstressed a, e, o without an accent become:
| Position | Brazil (Rio) | Portugal |
|---|---|---|
| Final -a(s) | ɐ: casas /ˈka.zɐʃ/ | ɐ: casas /ˈka.zɐʃ/ |
| Final -e(s) | i: cidade /siˈda.d͡ʒi/ | (ɨ), optional: cidade /siˈda.d(ɨ)/ |
| Final -o(s) | u: bonito /boˈni.tu/ | u: bonito /buˈni.tu/ |
| Other unstressed a | Stays a: sapato /saˈpa.tu/ | ɐ: sapato /sɐˈpa.tu/ |
| Other unstressed e | Stays e: frequente /fɾeˈkẽ.t͡ʃi/ | ɨ: frequente /fɾɨˈkẽ.t(ɨ)/ |
| Other unstressed o | Stays o: professor /pɾo.feˈsoʁ/ | u: professor /pɾu.fɨˈsoɾ/ |
| Initial unstressed e | e: elefante /e.leˈfɐ̃.t͡ʃi/ | i: elefante /i.lɨˈfɐ̃.t(ɨ)/ |
| Initial unstressed o in a word that contains another vowel | o: obrigado /o.bɾiˈɡa.du/ | ɔ: obrigado /ɔ.bɾiˈɡa.du/ |
| Initial es- + consonant | i (first variant): estar /iʃˈta(ʁ)/ | (i): estar /(i)ʃˈtaɾ/ |
| Unstressed vowel before coda l | Unchanged; l becomes w: alface /awˈfa.si/ | Opened to a, ɛ, o: alface /alˈfa.s(ɨ)/, solteiro /solˈtej.ɾu/ |
| Final unstressed -r (dólar, líder) | Preceding a becomes ɐ, others stay: dólar /ˈdɔ.lɐʁ/, líder /ˈli.deʁ/ | Preceding vowel is opened: dólar /ˈdɔ.laɾ/, líder /ˈli.dɛɾ/ |
| Final unstressed -ar (açúcar) | ɐ: açúcar /aˈsu.kɐʁ/ | a: açúcar /ɐˈsu.kaɾ/ |
| Unstressed ie (hiatus) | Full vowels, with hiatus: série /ˈsɛ.ɾi.i/ | Glide + open e: série /ˈsɛ.ɾjɛ/ |
The final e in Portugal is shown in parentheses because it can be dropped in connected speech. The module also removes it before a following vowel, but since the app transcribes one word at a time you will only see the optional form.
Nasal Vowels and Nasal Diphthongs
Nasality is derived from spelling in a fixed order:
- Final unstressed -am (third-person plural verbs) is treated like -ão: cantam /ˈkɐ̃.tɐ̃w̃/, falam /ˈfa.lɐ̃w̃/.
- In Portugal a final
-nis a real n and the unstressed vowel before it is open: hífen /ˈi.fɛn/ (compare Brazil hífen /ˈi.fẽj̃/). - A vowel followed by m or n in the same syllable is nasalized and the consonant is not pronounced: tempo /ˈtẽ.pu/, lindo /ˈlĩ.du/, compra /ˈkõ.pɾɐ/, mundo /ˈmũ.du/.
- A non-high vowel nasalized this way gets a circumflex (closed): canto /ˈkɐ̃.tu/, tempo /ˈtẽ.pu/.
- In Brazil a stressed vowel before m/n in the next syllable is also nasalized:
cama /ˈkɐ̃.mɐ/ ano /ˈɐ̃.nu/; all vowels before nh are nasalized and, in the phonetic form,
nhbecomes j̃: banho /ˈbɐ̃.ɲu/ banho [ˈbɐ̃.j̃u]. Portugal only closes the vowel: cama /ˈkɐ.mɐ/, banho /ˈbɐ.ɲu/. - ão, ãe, õe, and -ui in muit- are nasal diphthongs ending in a nasal glide: pão /ˈpɐ̃w̃/, mãe /ˈmɐ̃j̃/, põe /ˈpõj̃/, muito /ˈmũj̃.tu/, limões /liˈmõj̃ʃ/.
- Final -em and
-ensare ẽj̃(s): bem /ˈbẽj̃/, homem /ˈõ.mẽj̃/, parabéns /pa.ɾaˈbẽj̃ʃ/. - In Portugal a circumflex on final -em (vêm, têm, mantêm) signals the special double nasal ending: têm /ˈtẽj̃.ẽj̃/ versus têm /ˈtẽj̃/; and põem gets a hiatus: põem /ˈpõj̃.ẽj̃/ versus põem /ˈpõj̃/.
- In Brazil an initial unstressed
em-/en-before a consonant is ẽ (careful variant, shown) or ĩ: enxame /ẽˈʃɐ̃.mi/.
Oral Diphthongs
The glides j and w arise from i and u after
a, e, o in the same syllable (see Syllable Division for when a diphthong splits).
The first vowel is automatically closed for e/o and always a for a (see
Open and Closed e / o).
| Spelling | Brazil | Portugal | Note |
|---|---|---|---|
| ai, au | pai /ˈpaj/, mau /ˈmaw/ | pai /ˈpaj/, mau /ˈmaw/ | Same in both |
| ei | leite /ˈlej.t͡ʃi/ | beijo /ˈbej.ʒu/ | In Brazil ei before r, j, g, x gets an optional glide: beijo /ˈbe(j).ʒu/; in Portugal it is a plain diphthong (in the unselectable gpt profile it would be lowered) |
| eu, oi | ateu /aˈtew/, boi /ˈboj/ | ateu /ɐˈtew/, boi /ˈboj/ | Same in both |
| ou | pouco /ˈpo(w).ku/ | pouco /ˈpo(w).ku/ | The glide is optional in both: o(w) |
| iu, ui | viu /ˈviw/, fui /ˈfuj/ | viu /ˈviw/, fui /ˈfuj/ | Final -iu(s), -ui(s) stay a single syllable |
In Brazil's phonetic form the glides are ɪ̯ and ʊ̯: pai [ˈpaɪ̯], pouco [ˈpo(ʊ̯).ku].
Hiatus and Glides
Two adjacent vowels are normally split into two syllables. The dialects then treat an unstressed i/u/e/o before the second vowel differently:
| Word | Brazil (phonemic) | Portugal (phonemic) | What happens |
|---|---|---|---|
| teatro | teatro /teˈa.tɾu/ | teatro /ˈtja.tɾu/ | Portugal turns unstressed e./i. or o./u. before a vowel into a glide, merging the syllables; Brazil keeps the hiatus |
| gíria | gíria /ˈʒi.ɾi.ɐ/ | gíria /ˈʒi.ɾjɐ/ | Same rule at the end of a word |
| ciência | ciência /siˈẽ.si.ɐ/ | ciência /ˈsjẽ.sjɐ/ | The same, after a consonant and before a stressed vowel |
| saída | saída /saˈi.dɐ/ | saída /sɐˈi.dɐ/ | A stressed i/u always keeps its hiatus |
| proteína | proteína /pɾo.teˈĩ.nɐ/ | proteína /pɾu.tɐˈi.nɐ/ | Portugal only: e before an i in hiatus becomes a-like (ɐ) |
| iate | iate /ˈja.t͡ʃi/ | iate /ˈja.t(ɨ)/ | Initial i + vowel is a glide j, unless the i is stressed: ia /ˈi.ɐ/ |
| juízo | juízo /ʒuˈi.zu/ | juízo /ˈʒwi.zu/ | Brazil keeps u.i; Portugal glides after an unstressed u |
Brazilian -io with a stressed i (rio, tio, frio, vazio, navio) has two pronunciations in the module, a hiatus and a glide. The app shows the first: rio /ˈʁi.u/. Typing the glide spelling gives the second: riu /ˈʁiw/.
t / d Before i (Brazil)
In Brazil, t and d before a high front vowel (i, a final e that has been raised
to i, a glide y, a nasal ĩ) become the affricates
t͡ʃ and d͡ʒ. Raising happens first, which is why a final
-te/-de is palatalized as well. Portugal never palatalizes.
| Word | Brazil | Portugal |
|---|---|---|
| tia, dia | tia /ˈt͡ʃi.ɐ/, dia /ˈd͡ʒi.ɐ/ | tia /ˈti.ɐ/, dia /ˈdi.ɐ/ |
| cidade (raised final e) | cidade /siˈda.d͡ʒi/ | cidade /siˈda.d(ɨ)/ |
| jardim (nasal i) | jardim /ʒaʁˈd͡ʒĩ/ | jardim /ʒɐɾˈdĩ/ |
| de, te (clitics) | de /d͡ʒi/, te /t͡ʃi/ | de /d(ɨ)/, te /t(ɨ)/ |
| adjetivo (written dj) | adjetivo /ad.ʒeˈt͡ʃi.vu/ | adjetivo /ɐ.d͡ʒɨˈti.vu/ |
S and Z
- Initial s, ss, ç, c before e/i, sc: s: sapo /ˈsa.pu/, passa /ˈpa.sɐ/, ça /ˈsa/. After a nasal vowel s stays voiceless: pensar /pẽˈsa(ʁ)/.
- Between vowels (or before a voiced consonant): z: casa /ˈka.zɐ/. An exception is trans- + vowel: transar /tɾɐ̃ˈza(ʁ)/.
- Coda s/z before a consonant or at the end of the word: in Rio and in Portugal it becomes ʃ (voiceless context) or ʒ (before a voiced consonant); it stays s/z only in word-initial position: pasta /ˈpaʃ.tɐ/, asma /ˈaʒ.mɐ/, casas /ˈka.zɐʃ/, feliz /feˈliʃ/.
- Brazilian epenthetic (j): after a stressed oral vowel (not i) before final s/z the Rio output inserts an optional glide: luz /ˈlu(j)ʃ/, mês /ˈme(j)ʃ/, faz /ˈfa(j)ʃ/, but not after i (feliz /feˈliʃ/), not in nasal vowels or diphthongs, and not in unstressed words (mas /maʃ/, os /uʃ/). Portugal has none: luz /ˈluʃ/.
- Two sibilants in a row reduce to one in Rio: desc-, nasc- give nascêr /naˈse(ʁ)/; in Portugal the first variant keeps both (ʃs): nascêr /nɐʃˈseɾ/.
- ex + consonant: s in Brazil but ejʃ in Portugal: excelente /e.seˈlẽ.t͡ʃi/ / excelente /ejʃ.sɨˈlẽ.t(ɨ)/, têxtil /ˈteʃ.t͡ʃiw/ / têxtil /ˈtejʃ.til/.
A word-initial s followed by a consonant is not shushed: spray /ˈspɾaj/, slide /ˈsli.d͡ʒi/.
R Sounds
- Strong r ʁ: written rr, word-initial r, and r after n, l, s, z (and after a nasal vowel): carro /ˈka.ʁu/, rato /ˈʁa.tu/, honra /ˈõ.ʁɐ/, genro /ˈʒẽ.ʁu/.
- Tap ɾ: r between vowels or in a cluster after a consonant: caro /ˈka.ɾu/, prato /ˈpɾa.tu/.
- Coda r (before a consonant or at the end): Brazil (Rio) gives ʁ phonemically; Portugal gives the tap ɾ: pórta /ˈpɔʁ.tɐ/, pórta /ˈpɔɾ.tɐ/.
- Rio phonetic form: strong r is χ, or ʁ when a voiced consonant follows: rua [ˈχu.ɐ], pórta [ˈpɔχ.tɐ], bórdo [ˈbɔʁ.du].
- Final r after a stressed a, ɛ, e, i (infinitives, but also mar) is shown optional in Brazil, because it is often dropped: falar /faˈla(ʁ)/, partir /paʁˈt͡ʃi(ʁ)/, mar /ˈma(ʁ)/. Respell with a silent h to keep it fixed: marh /ˈmaʁ/. After other vowels it is always written: pôr /ˈpoʁ/. Portugal keeps the tap: falar /fɐˈlaɾ/.
L Sounds
- Onset l is l in both dialects: lá /ˈla/.
- lh is ʎ: filho /ˈfi.ʎu/.
- Coda l (before a consonant or at the end) is vocalized to w in Brazil: sól /ˈsɔw/, animal /a.niˈmaw/, Brasil /bɾaˈziw/; in Portugal it stays l phonemically and becomes dark ɫ phonetically: sól /ˈsɔl/ sól [ˈsɔɫ].
- ou + l: the optional glide of ou is handled before coda l,
so
olremains a true ow in Brazil: sôl /ˈsow/.
c, g, q, h, ch, lh, nh and Double Letters
| Spelling | Rule | Example |
|---|---|---|
| c before e, i; ç | s | cinêma /siˈnẽ.mɐ/, ça /ˈsa/ |
| c, k, q elsewhere | k | cato /ˈka.tu/, kilo /ˈki.lu/ |
| qu before e, i | k (u silent) | quilo /ˈki.lu/ |
| qu before a, o; gu before a, o; ü | kw, ɡw | quatro /ˈkwa.tɾu/, água /ˈa.ɡwɐ/, agüentar /a.ɡwẽˈta(ʁ)/ |
| g before e, i; j | ʒ | gêlo /ˈʒe.lu/, júri /ˈʒu.ɾi/ |
| gu before e, i | ɡ (u silent) | guitarra /ɡiˈta.ʁɐ/ |
| Initial h | Silent | humano /uˈmɐ̃.nu/ |
| ch, sh | ʃ | chuva /ˈʃu.vɐ/, lisho /ˈli.ʃu/ |
| lh | ʎ | filho /ˈfi.ʎu/ |
| nh | ɲ; Brazilian phonetic non-initial j̃ | ninho /ˈnĩ.ɲu/, ninho [ˈnĩ.j̃u], nhaca [ˈɲa.kɐ] |
| ng before a consonant other than h, l, r | Brazil: n (g silent); Portugal: g is pronounced | parking /paʁˈkĩ/, parking /pɐɾˈkĩɡ/ |
| y between non-vowels | i | Itamaraty /i.ta.ma.ɾaˈt͡ʃi/ |
| w | Passes through as w | whisky /wiʃˈki/ |
Doubled Letters
Before syllable division every doubled consonant is reduced to one letter, with four exceptions:
rr becomes ʁ, ss stays a voiceless s
that never takes the Brazilian epenthetic glide of a single final s (compare nós /ˈnɔ(j)ʃ/ with nóss /ˈnɔʃ/), and mm/nn become a plain m/n
that is not nasalizing, so they can be used to prevent nasalization: compare ano /ˈɐ̃.nu/ with
ánno /ˈã.nu/. Other double letters reduce: pizza /ˈpi.zɐ/ (zz is just z, see
Common Issues).
The Letter x
The engine resolves x only in the following cases (checked in this order). In every other position it raises the error "x must be respelled z, sh, cs, ss or similar".
| Context | Result | Examples |
|---|---|---|
| Word-initial x | ʃ | xícara /ˈʃi.ka.ɾɐ/, xadrêz /ʃaˈdɾe(j)ʃ/ |
| Word-final x | ks; the unstressed vowel before it is opened | clímax /ˈklĩ.maks/, córtex /ˈkɔʁ.tɛks/, xérox /ˈʃɛ.ɾɔks/ |
| x after ai, ei, oi, ou, en | ʃ | caixa /ˈkaj.ʃɐ/, peixe /ˈpe(j).ʃi/, troixa /ˈtɾoj.ʃɐ/, frouxo /ˈfɾo(w).ʃu/, enxame /ẽˈʃɐ̃.mi/ |
| ex + consonant | Brazil s, Portugal ejʃ | excelente /e.seˈlẽ.t͡ʃi/ / excelente /ejʃ.sɨˈlẽ.t(ɨ)/, êxtase /ˈeʃ.ta.zi/ / êxtase /ˈejʃ.tɐ.z(ɨ)/ |
| Anything else | Error: respell with z, cs, sh or ss | exame (error), táxi (error), lixo (error), próximo (error) |
Voiced Stops in Portugal (Phonetic Form)
Only the phonetic form of Portugal fricativizes voiced stops: b, d, g become
β, ð, ɣ everywhere except at the start of the word, after a nasal vowel, and (for
d) after l. Brazil never does this.
| Context | Portugal phonetic | Brazil phonetic |
|---|---|---|
| Between vowels | sabêr [sɐˈβeɾ], cidade [siˈða.ð(ɨ)] | sabêr [saˈbe(χ)], cidade [siˈda.d͡ʒi] |
| Word-initial: stop | dado [ˈda.ðu] | dado [ˈda.du] |
| After a nasal vowel: stop | mundo [ˈmũ.du] | mundo [ˈmũ.du] |
| d after l: stop | caldo [ˈkaɫ.du] | caldo [ˈkaʊ̯.du] |
Syllable Division
Syllables are divided before stress is assigned, because stress counts syllables. The rules:
- The division goes before the last consonant between two vowels, then moves left over a stop (p b t d k g f v) + l/r cluster, which can start a syllable: prato /ˈpɾa.tu/, compra /ˈkõ.pɾɐ/.
- Brazil divides every other consonant cluster between the consonants; Portugal keeps "improper" clusters of non-sibilant obstruent + obstruent or nasal together: ritmo /ˈʁit.mu/ versus ritmo /ˈʁi.tmu/, técnica /ˈtɛk.ni.kɐ/ versus técnica /ˈtɛ.kni.kɐ/, advogado /ad.voˈɡa.du/ versus advogado /ɐ.dvuˈɡa.du/.
- Two vowels are split into two syllables, except a/e/o + unstressed i/u (diphthongs: saudade /sawˈda.d͡ʒi/, peixe /ˈpe(j).ʃi/), final -iu(s), -ui(s), and the nasal diphthongs ão, ãe, õe.
- Even such a diphthong is split before m, n, l, r or nh (sair, Bombaim, Coimbra, rainha): sair /saˈi(ʁ)/, bombaim /bõ.baˈĩ/; compare baile /ˈbaj.li/ where the l belongs to the next syllable and the diphthong survives.
- Brazil keeps written dj as one affricate sound except after initial a (ad.j): adjetivo /ad.ʒeˈt͡ʃi.vu/.
Comprehensive Spelling-to-IPA Mapping
This section provides a mapping of Portuguese spelling (orthography) to pronunciation (IPA) for both app options. The tables reflect the rules the transcription engine actually applies, and every example is real engine output (phonemic form unless the column says phonetic). Remember that a stressed e/o needs an accent unless one of the automatic rules in Open and Closed e / o applies, so several examples below are written with an accent.
1. Vowel Letters
| Letter | Context | Brazil (Rio) phonemic | Portugal phonemic |
|---|---|---|---|
| a | Stressed (default) | pá /ˈpa/ | pá /ˈpa/ |
| Stressed, written â | pâra /ˈpɐ.ɾɐ/ | pâra /ˈpɐ.ɾɐ/ | |
| Stressed before m/n/nh in the next syllable | cama /ˈkɐ̃.mɐ/ | cama /ˈkɐ.mɐ/ | |
| Unstressed, final | casa /ˈka.zɐ/ | casa /ˈka.zɐ/ | |
| Unstressed, other | sapato /saˈpa.tu/ | sapato /sɐˈpa.tu/ | |
| e | Stressed, written é | pé /ˈpɛ/ | pé /ˈpɛ/ |
| Stressed, written ê | pê /ˈpe/ | pê /ˈpe/ | |
| Unstressed, final | dôce /ˈdo.si/ | dôce /ˈdo.s(ɨ)/ | |
| Unstressed, initial | elefante /e.leˈfɐ̃.t͡ʃi/ | elefante /i.lɨˈfɐ̃.t(ɨ)/ | |
| Unstressed, other | frequente /fɾeˈkẽ.t͡ʃi/ | frequente /fɾɨˈkẽ.t(ɨ)/ | |
| Before x + consonant (ex-) | excelente /e.seˈlẽ.t͡ʃi/ | excelente /ejʃ.sɨˈlẽ.t(ɨ)/ | |
| i | Stressed or unstressed | pi /ˈpi/, feliz /feˈliʃ/ | pi /ˈpi/, feliz /fɨˈliʃ/ |
| o | Stressed, written ó | pó /ˈpɔ/ | pó /ˈpɔ/ |
| Stressed, written ô | pô /ˈpo/ | pô /ˈpo/ | |
| Unstressed, final | bonito /boˈni.tu/ | bonito /buˈni.tu/ | |
| Unstressed, initial (word contains another vowel) | obrigado /o.bɾiˈɡa.du/ | obrigado /ɔ.bɾiˈɡa.du/ | |
| Unstressed, other | professor /pɾo.feˈsoʁ/ | professor /pɾu.fɨˈsoɾ/ | |
| u | Vowel | pu /ˈpu/, tatu /taˈtu/ | pu /ˈpu/, tatu /tɐˈtu/ |
| Silent after q/g before e/i; ü pronounced | quilo /ˈki.lu/, agüentar /a.ɡwẽˈta(ʁ)/ | quilo /ˈki.lu/, agüentar /ɐ.ɡwẽˈtaɾ/ | |
| y | Between non-vowels | Itamaraty /i.ta.ma.ɾaˈt͡ʃi/ | Itamaraty /i.tɐ.mɐ.ɾɐˈti/ |
2. Nasal Vowels and Nasal Diphthongs
| Spelling | Brazil (Rio) phonemic | Portugal phonemic | Rule |
|---|---|---|---|
| ã | lã /ˈlɐ̃/ | lã /ˈlɐ̃/ | Tilde: nasal ɐ̃, stressed if last tilde syllable |
| an / am + consonant | canto /ˈkɐ̃.tu/ | canto /ˈkɐ̃.tu/ | Vowel + m/n in one syllable nasalizes; the consonant is silent |
| en / em + consonant | tempo /ˈtẽ.pu/ | tempo /ˈtẽ.pu/ | Closed nasal ẽ |
| in / im | lindo /ˈlĩ.du/ | lindo /ˈlĩ.du/ | ĩ |
| on / om | compra /ˈkõ.pɾɐ/ | compra /ˈkõ.pɾɐ/ | õ |
| un / um | mundo /ˈmũ.du/ | mundo /ˈmũ.du/ | ũ |
| ão | mão /ˈmɐ̃w̃/ | mão /ˈmɐ̃w̃/ | Nasal diphthong ɐ̃w̃ |
| -am (unstressed, verbs) | cantam /ˈkɐ̃.tɐ̃w̃/ | cantam /ˈkɐ̃.tɐ̃w̃/ | Same as -ão |
| ãe | mãe /ˈmɐ̃j̃/ | mãe /ˈmɐ̃j̃/ | ɐ̃j̃ |
| õe | põe /ˈpõj̃/ | põe /ˈpõj̃/ | õj̃ |
| -em / -ens (final) | bem /ˈbẽj̃/, homens /ˈõ.mẽj̃ʃ/ | bem /ˈbẽj̃/, homens /ˈo.mẽj̃ʃ/ | ẽj̃(ʃ) |
| -êm (Portugal) | têm /ˈtẽj̃/ | têm /ˈtẽj̃.ẽj̃/ | Doubled nasal ending in Portugal only |
| muit- | muito /ˈmũj̃.tu/ | muito /ˈmũj̃.tu/ | Hard-coded nasal ũj̃ |
| Vowel + m/n across a syllable | ano /ˈɐ̃.nu/ | ano /ˈɐ.nu/ | Brazil nasalizes the stressed vowel; Portugal does not |
| Vowel + nh | unha /ˈũ.ɲɐ/ | unha /ˈu.ɲɐ/ | Brazil nasalizes any vowel before nh |
| Acute + nasal | ténis /ˈtɛ̃.niʃ/ | ténis /ˈtɛ.niʃ/ | Open vowel; nasalized in Brazil only |
3. Oral Diphthongs
| Spelling | Brazil (Rio) phonemic | Portugal phonemic | Rule |
|---|---|---|---|
| ai | pai /ˈpaj/ | pai /ˈpaj/ | aj |
| au | mau /ˈmaw/ | mau /ˈmaw/ | aw |
| ei | leite /ˈlej.t͡ʃi/ | leite /ˈlej.t(ɨ)/ | Closed e + glide; optional glide before r/j/g/x in Brazil: cadeira /kaˈde(j).ɾɐ/ |
| eu | ateu /aˈtew/ | ateu /ɐˈtew/ | ew |
| oi | boi /ˈboj/ | boi /ˈboj/ | oj |
| ou | pouco /ˈpo(w).ku/ | pouco /ˈpo(w).ku/ | o(w), optional glide |
| iu / ui | viu /ˈviw/, fui /ˈfuj/ | viu /ˈviw/, fui /ˈfuj/ | iw, uj |
| éi, éu, ói | papéis /paˈpɛjʃ/, céu /ˈsɛw/, herói /eˈɾɔj/ | papéis /pɐˈpɛjʃ/, céu /ˈsɛw/, herói /iˈɾɔj/ | Open first element |
4. Consonant Letters
| Letter | Rule | Brazil (Rio) phonemic | Portugal phonemic |
|---|---|---|---|
| c | s before e, i; k elsewhere | cinêma /siˈnẽ.mɐ/, cato /ˈka.tu/ | cinêma /siˈne.mɐ/, cato /ˈka.tu/ |
| ç | ça /ˈsa/ | ça /ˈsa/ | |
| d | d; Brazil d͡ʒ before i | dado /ˈda.du/, dia /ˈd͡ʒi.ɐ/ | dado /ˈda.du/, dia /ˈdi.ɐ/ |
| g | ʒ before e, i; ɡ elsewhere | gêlo /ˈʒe.lu/, gato /ˈɡa.tu/ | gêlo /ˈʒe.lu/, gato /ˈɡa.tu/ |
gu before e, i: ɡ; before a, o: ɡw | guitarra /ɡiˈta.ʁɐ/, água /ˈa.ɡwɐ/ | guitarra /ɡiˈta.ʁɐ/, água /ˈa.ɡwɐ/ | |
| h | Silent | humano /uˈmɐ̃.nu/ | humano /uˈmɐ.nu/ |
| b, f, k, p, v | As in English: b f k p v | bato /ˈba.tu/, fato /ˈfa.tu/, kilo /ˈki.lu/, pato /ˈpa.tu/, vaca /ˈva.kɐ/ | bato /ˈba.tu/, fato /ˈfa.tu/, kilo /ˈki.lu/, pato /ˈpa.tu/, vaca /ˈva.kɐ/ |
| j | ʒ | júri /ˈʒu.ɾi/ | júri /ˈʒu.ɾi/ |
| l | See table 6 | lá /ˈla/ | lá /ˈla/ |
| m, n | m, n as onset; nasalize a preceding vowel as coda | mapa /ˈma.pɐ/, nada /ˈna.dɐ/ | mapa /ˈma.pɐ/, nada /ˈna.dɐ/ |
| q | k / kw | quilo /ˈki.lu/, quatro /ˈkwa.tɾu/ | quilo /ˈki.lu/, quatro /ˈkwa.tɾu/ |
| r | See table 6 | caro /ˈka.ɾu/ | caro /ˈka.ɾu/ |
| s | See table 6 | sapo /ˈsa.pu/ | sapo /ˈsa.pu/ |
| t | t; Brazil t͡ʃ before i | tato /ˈta.tu/, tia /ˈt͡ʃi.ɐ/ | tato /ˈta.tu/, tia /ˈti.ɐ/ |
| w | w (not respelled by the module) | whisky /wiʃˈki/ | whisky /wiʃˈki/ |
| x | See table 7 | xícara /ˈʃi.ka.ɾɐ/ | xícara /ˈʃi.kɐ.ɾɐ/ |
| z | z; final s then ʃ | zêro /ˈze.ɾu/, luz /ˈlu(j)ʃ/ | zêro /ˈze.ɾu/, luz /ˈluʃ/ |
5. Digraphs and Doubled Letters
| Spelling | IPA | Brazil (Rio) phonemic | Portugal phonemic |
|---|---|---|---|
| ch | ʃ | chuva /ˈʃu.vɐ/ | chuva /ˈʃu.vɐ/ |
| sh | ʃ | lisho /ˈli.ʃu/ | lisho /ˈli.ʃu/ |
| lh | ʎ | filho /ˈfi.ʎu/ | filho /ˈfi.ʎu/ |
| nh | ɲ | ninho /ˈnĩ.ɲu/ | ninho /ˈni.ɲu/ |
| qu | k / kw | quilo /ˈki.lu/, quatro /ˈkwa.tɾu/ | quilo /ˈki.lu/, quatro /ˈkwa.tɾu/ |
| rr | ʁ | carro /ˈka.ʁu/ | carro /ˈka.ʁu/ |
| ss | s | passa /ˈpa.sɐ/ | passa /ˈpa.sɐ/ |
| sc, sç before e, i | s (Rio) / ʃs (Portugal, first variant) | crescêr /kɾeˈse(ʁ)/ | crescêr /kɾɨʃˈseɾ/ |
| mm, nn | Plain m, n without nasalizing the vowel | ánno /ˈã.nu/ | ánno /ˈa.nu/ |
| Other doubles (zz, tt, ...) | Single consonant | pizza /ˈpi.zɐ/ | pizza /ˈpi.zɐ/ |
| ng before a consonant | Brazil n; Portugal keeps ɡ | parking /paʁˈkĩ/ | parking /pɐɾˈkĩɡ/ |
| dj | d͡ʒ (separate from the t/d palatalization rule) | djézz /ˈd͡ʒɛ(j)ʃ/ | djézz /ˈd͡ʒɛʃ/ |
| ps, gn, pn (clusters) | Kept as written; no epenthetic vowel | psi /ˈpsi/, gnu /ˈɡnu/ | psi /ˈpsi/, gnu /ˈɡnu/ |
6. Context-Dependent s, z, r, l
These letters change dramatically with position, and their phonetic forms differ more than anything else, so all four columns are given.
| Letter | Context | Brazil (Rio) phonemic | Brazil (Rio) phonetic | Portugal phonemic | Portugal phonetic |
|---|---|---|---|---|---|
| s | Initial / ss | sapo /ˈsa.pu/ | sapo [ˈsa.pu] | sapo /ˈsa.pu/ | sapo [ˈsa.pu] |
| Between vowels | casa /ˈka.zɐ/ | casa [ˈka.zɐ] | casa /ˈka.zɐ/ | casa [ˈka.zɐ] | |
| Before a voiceless consonant | pasta /ˈpaʃ.tɐ/ | pasta [ˈpaʃ.tɐ] | pasta /ˈpaʃ.tɐ/ | pasta [ˈpaʃ.tɐ] | |
| Before a voiced consonant | asma /ˈaʒ.mɐ/ | asma [ˈaʒ.mɐ] | asma /ˈaʒ.mɐ/ | asma [ˈaʒ.mɐ] | |
| Word-final | casas /ˈka.zɐʃ/ | casas [ˈka.zɐʃ] | casas /ˈka.zɐʃ/ | casas [ˈka.zɐʃ] | |
| z | Between vowels | azul /aˈzuw/ | azul [aˈzuʊ̯] | azul /ɐˈzul/ | azul [ɐˈzuɫ] |
| Word-final, stressed vowel (epenthetic (j) in Brazil) | luz /ˈlu(j)ʃ/ | luz [ˈlu(ɪ̯)ʃ] | luz /ˈluʃ/ | luz [ˈluʃ] | |
| r | Initial / after n, l, s | rato /ˈʁa.tu/ | rato [ˈχa.tu] | rato /ˈʁa.tu/ | rato [ˈʁa.tu] |
| Between vowels | caro /ˈka.ɾu/ | caro [ˈka.ɾu] | caro /ˈka.ɾu/ | caro [ˈka.ɾu] | |
| In a cluster after a consonant | prato /ˈpɾa.tu/ | prato [ˈpɾa.tu] | prato /ˈpɾa.tu/ | prato [ˈpɾa.tu] | |
| Coda before a consonant | pórta /ˈpɔʁ.tɐ/ | pórta [ˈpɔχ.tɐ] | pórta /ˈpɔɾ.tɐ/ | pórta [ˈpɔɾ.tɐ] | |
| Final after stressed a, e, i | falar /faˈla(ʁ)/ | falar [faˈla(χ)] | falar /fɐˈlaɾ/ | falar [fɐˈlaɾ] | |
| l | Onset | lá /ˈla/ | lá [ˈla] | lá /ˈla/ | lá [ˈla] |
| Coda before a consonant | caldo /ˈkaw.du/ | caldo [ˈkaʊ̯.du] | caldo /ˈkal.du/ | caldo [ˈkaɫ.du] | |
| Word-final | animal /a.niˈmaw/ | animal [a.niˈmaʊ̯] | animal /ɐ.niˈmal/ | animal [ɐ.niˈmaɫ] |
7. The Letter x
| Position | Typed | Brazil (Rio) phonemic | Portugal phonemic | Note |
|---|---|---|---|---|
| Initial | xícara | xícara /ˈʃi.ka.ɾɐ/ | xícara /ˈʃi.kɐ.ɾɐ/ | ʃ |
| After ai/ei/oi/ou/en | caixa | caixa /ˈkaj.ʃɐ/ | caixa /ˈkaj.ʃɐ/ | ʃ |
| Final | córtex | córtex /ˈkɔʁ.tɛks/ | córtex /ˈkɔɾ.tɛks/ | ks |
| ex + consonant | têxtil | têxtil /ˈteʃ.t͡ʃiw/ | têxtil /ˈtejʃ.til/ | Brazil s, Portugal ejʃ |
| Between vowels (needs respelling) | exame → ezame | ezame /eˈzɐ̃.mi/ | ezame /iˈzɐ.m(ɨ)/ | z |
| Between vowels (needs respelling) | táxi → tácsi | tácsi /ˈtak.si/ | tácsi /ˈta.ksi/ | ks |
| Between vowels (needs respelling) | lixo → lisho | lisho /ˈli.ʃu/ | lisho /ˈli.ʃu/ | ʃ |
| Between vowels (needs respelling) | próximo → próssimo | próssimo /ˈpɾɔ.si.mu/ | próssimo /ˈpɾɔ.si.mu/ | s |
8. Full Dialect Comparison (Quick Reference)
Side-by-side comparison of the features that distinguish the app's two options, in both forms.
| Feature | Brazil (Rio) | Portugal | ||
|---|---|---|---|---|
| Phonemic | Phonetic | Phonemic | Phonetic | |
| Coda s (chiado) | pastas /ˈpaʃ.tɐʃ/ | pastas [ˈpaʃ.tɐʃ] | pastas /ˈpaʃ.tɐʃ/ | pastas [ˈpaʃ.tɐʃ] |
| Coda r before voiced consonant | bórdo /ˈbɔʁ.du/ | bórdo [ˈbɔʁ.du] | bórdo /ˈbɔɾ.du/ | bórdo [ˈbɔɾ.ðu] |
| Final r (infinitive) | cantar /kɐ̃ˈta(ʁ)/ | cantar [kɐ̃ˈta(χ)] | cantar /kɐ̃ˈtaɾ/ | cantar [kɐ̃ˈtaɾ] |
| t before i | tia /ˈt͡ʃi.ɐ/ | tia [ˈt͡ʃi.ɐ] | tia /ˈti.ɐ/ | tia [ˈti.ɐ] |
| Coda l | sól /ˈsɔw/ | sól [ˈsɔʊ̯] | sól /ˈsɔl/ | sól [ˈsɔɫ] |
| Final unstressed -o | bonito /boˈni.tu/ | bonito [boˈni.tu] | bonito /buˈni.tu/ | bonito [buˈni.tu] |
| Unstressed a / e | sapato /saˈpa.tu/ | sapato [saˈpa.tu] | sapato /sɐˈpa.tu/ | sapato [sɐˈpa.tu] |
| Initial unstressed e | elefante /e.leˈfɐ̃.t͡ʃi/ | elefante [e.leˈfɐ̃.t͡ʃi] | elefante /i.lɨˈfɐ̃.t(ɨ)/ | elefante [i.lɨˈfɐ̃.t(ɨ)] |
| Initial unstressed o | obrigado /o.bɾiˈɡa.du/ | obrigado [o.bɾiˈɡa.du] | obrigado /ɔ.bɾiˈɡa.du/ | obrigado [ɔ.βɾiˈɣa.ðu] |
| Vowel before coda l | alface /awˈfa.si/ | alface [aʊ̯ˈfa.si] | alface /alˈfa.s(ɨ)/ | alface [aɫˈfa.s(ɨ)] |
| Stressed a before nasal consonant | cama /ˈkɐ̃.mɐ/ | cama [ˈkɐ̃.mɐ] | cama /ˈkɐ.mɐ/ | cama [ˈkɐ.mɐ] |
| nh | banho /ˈbɐ̃.ɲu/ | banho [ˈbɐ̃.j̃u] | banho /ˈbɐ.ɲu/ | banho [ˈbɐ.ɲu] |
| Diphthong ei | beijo /ˈbe(j).ʒu/ | beijo [ˈbe(ɪ̯).ʒu] | beijo /ˈbej.ʒu/ | beijo [ˈbej.ʒu] |
| Nasal diphthong ão | mão /ˈmɐ̃w̃/ | mão [ˈmɐ̃ʊ̯̃] | mão /ˈmɐ̃w̃/ | mão [ˈmɐ̃w̃] |
| Final -em | homem /ˈõ.mẽj̃/ | homem [ˈõ.mẽɪ̯̃] | homem /ˈo.mẽj̃/ | homem [ˈo.mẽj̃] |
| Doubled nasal -êm | vêm /ˈvẽj̃/ | vêm [ˈvẽɪ̯̃] | vêm /ˈvẽj̃.ẽj̃/ | vêm [ˈvẽj̃.ẽj̃] |
| Hiatus before a vowel | teatro /teˈa.tɾu/ | teatro [teˈa.tɾu] | teatro /ˈtja.tɾu/ | teatro [ˈtja.tɾu] |
| Epenthetic (j) before final s/z | luz /ˈlu(j)ʃ/ | luz [ˈlu(ɪ̯)ʃ] | luz /ˈluʃ/ | luz [ˈluʃ] |
| Consonant cluster division | ritmo /ˈʁit.mu/ | ritmo [ˈχit.mu] | ritmo /ˈʁi.tmu/ | ritmo [ˈʁi.tmu] |
| ng before a consonant | parking /paʁˈkĩ/ | parking [paχˈkĩ] | parking /pɐɾˈkĩɡ/ | parking [pɐɾˈkĩɡ] |
| Voiced stops between vowels | sabêr /saˈbe(ʁ)/ | sabêr [saˈbe(χ)] | sabêr /sɐˈbeɾ/ | sabêr [sɐˈβeɾ] |
| ex + consonant | excelente /e.seˈlẽ.t͡ʃi/ | excelente [e.seˈlẽ.t͡ʃi] | excelente /ejʃ.sɨˈlẽ.t(ɨ)/ | excelente [ejʃ.sɨˈlẽ.t(ɨ)] |
Using the Tool: Practical Notes
Should I choose Brazil or Portugal?
Choose Brazil for Rio de Janeiro pronunciation and Portugal for a generic European transcription. Other regional accents, such as São Paulo or southern Brazil, are not selectable; see Dialects & Limitations and the comparison in Full Dialect Comparison.
What is the difference between the Phonemic and Phonetic forms?
The phonemic form is the broad transcription; the phonetic form adds a short list of allophonic rules. For Brazil it changes the strong r, as in rato /ˈʁa.tu/ against [ˈχa.tu]; for Portugal it turns b, d, g into fricatives, as in cidade /siˈda.d(ɨ)/ against [siˈða.ð(ɨ)]. See Phonemic vs Phonetic.
Why does a word come back unchanged, and how do I respell it?
The engine refuses a stressed e or o whose quality is not marked, and most uses of x. Mark the stressed vowel with é/ê or ó/ô: governo is returned unchanged, but govêrno gives /ɡoˈveʁ.nu/ in Brazil and /ɡuˈveɾ.nu/ in Portugal. Replace x by its sound, for example exame as ezame. A few regular words, such as Brazilian rio, fail because of a module bug; all of this is explained in Why You Might See an Error. Open in the converter
Why can the output differ from a dictionary?
The tool has no lexicon: each word is transcribed from its spelling alone, one space-separated word at a time. Loanwords and irregular spellings therefore need a respelling, for example pizza gives /ˈpi.zɐ/ while pítsa gives /ˈpit.sɐ/ in Brazil. See Common Issues & Limitations.
Implementation Details (for Developers)
The transcription is produced by lua_modules/pt-pron_wasm.lua, a copy of the Wiktionary module
pt-pronunc. The app only calls export.IPA(text, style), which returns a list of
{phonemic, phonetic, qualifiers} objects; the handler in scripts/utils.js takes the first
object and the field named after the selected form:
const region = langStyle === "Brazil" ? "rio" : "pt";
const result = window.pt_ipa.IPA(cleanText, region);
return result?.[0]?.[langForm.toLowerCase()];
The stages below follow the order of the code. Stages 1 to 5 run once in export.IPA (headings 1 to 5 below); stages 6 to 23 run
twice inside one_term_ipa (once for the phonemic and once for the phonetic output, controlled by the
phonetic flag); stage 24 expands variants and stage 25 cleans up. (The list and the headings use the same
numbers; stages 2 and 3, and stages 4 and 5, share a table.) Each table shows the relevant rule and a
real engine output for each dialect (phonemic form unless the column says otherwise).
- Canonicalization (
export.IPA): app-side cleaning, lowercase, NFD, accent validation. - Word splitting, prefixes and unstressed words (stages 2 and 3 in one table below).
- Unstressed-word marking with DOTOVER/DOTUNDER and substitutions.
- Boundary markers for apostrophes, hyphens and word edges.
- Dialect-specific accents (grave and macron).
- The letter x (first step of
one_term_ipa). - h combinations and initial h.
- c, g, q, gu, qu, ü, ng, y.
- Doubled letters and muit-.
- Syllable division.
- Stress assignment (
accent_word). - Hiatus and glide formation.
- Vowel placeholders and nasalization.
- Nasal and oral diphthongs.
- Special open/closed o rules.
- Unstressed vowels.
- Final vowel qualities and the e/o error check.
- Epenthetic glide, s/z voicing and shibilants.
- R sounds.
- Profile-specific diphthong rules.
- Stops: palatalization (Brazil), fricativization (Portugal, phonetic).
- Glides, ou, coda l, nh and optional final ɨ.
- Symbol clean-up.
- Variant expansion (
call_one_term_ipa). - Finalization (
finalize_ipa).
Internal Notation (Intermediate Forms)
During processing the module uses placeholder symbols that are not part of the final IPA. Capital letters (and a few capitalized IPA letters) remember where a sound came from, so that later rules can decide its final quality. All of them are gone by the time the result is returned.
| Symbol | Name | Purpose | Stage |
|---|---|---|---|
| A E O | Undetermined vowels | Written a/e/o whose quality is not yet known; resolved to a ɐ e ɛ ɨ i o ɔ u | 13 to 17 |
| Ẽ | Initial en-/em- | Brazilian ẽ (careful) or ĩ (natural) | 13, 24 |
| I, Ɨ | Epenthetic i | Epenthetic or deleted i; also Brazilian e/i from initial esC- and Portuguese (i) | 16, 24 |
| Ì Ù, Ú | Optional glides | Hiatus i/u that may be a glide; Ú is stressed final -io in Brazil | 12, 24 |
| Ɔ | Open/closed o | Portuguese o or ɔ before coda l | 16, 24 |
| W, L | Regional w; final -le | Optional w after closed o in hiatus; word-final -le in Portugal | 17, 22, 24 |
| X, S, N, M, Y | Letter memories | Final x; ss; nn; mm; Brazilian epenthetic glide | 6, 9, 18 |
| ʧ ʤ | Palatalized t/d | Unitary affricates, converted to t͡ʃ d͡ʒ at the end | 21, 23 |
| combining marks | DOTOVER, DOTUNDER, LINEUNDER | Forced reduction, explicit unstressed full vowel, secondary stress | 3, 11 |
#, ## | Word and utterance boundary | Allows "word end" rules to work inside components | 4 |
| PSEUDOCONS, PREFIX_MARKER, SYLDIV, TEMP1 | Private-use characters | Edges of vowel-final prefixes, prefix flag, user syllable divider, temporary guard | 4 to 25 |
1. Canonicalization
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| Lowercase everything | Maria | Maria /maˈɾi.ɐ/ | Maria /mɐˈɾi.ɐ/ | Capitals are accepted and ignored |
| NFD; keep ç, ü composed; sort accents (quality, then stress, then tilde) | ação | ação /aˈsɐ̃w̃/ | ação /ɐˈsɐ̃w̃/ | reorder_accents makes accent order irrelevant |
| Reject circumflex, grave or macron on anything but a/e/o | cîa | cîa (error) | cîa (error) | Error "Only a/e/o can be followed by circumflex, grave or macron"; also raised for two quality marks or two stress marks on one vowel |
2. and 3. Word Splitting, Prefixes and Unstressed Words
The text is split at spaces and hyphens. A word that ends with a hyphen and has no accent is a prefix; it and
the words in unstressed_words (plus, in Portugal,
unstressed_full_vowel_words_brazil) receive a DOTOVER (forced vowel reduction). Words in
unstressed_full_vowel_words (and, in Brazil, unstressed_full_vowel_words_brazil) receive a
DOTUNDER (unstressed but not reduced). unstressed_pronunciation_substitution then rewrites
ao(s), à(s) and por.
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| Reduced clitic (both) | de | de /d͡ʒi/ | de /d(ɨ)/ | No stress, final e reduced |
| Clitic reduced in Portugal only | da | da /da/ | da /dɐ/ | Brazil keeps full a |
| Never reduced | meu | meu /mew/ | meu /mew/ | No stress mark, full vowels |
| Substitution | ao, por | ao /aw/, por /puʁ/ | ao /aw/, por /puɾ/ | ao read as au, por as pur |
| Prefix with trailing hyphen | anti- | anti- /ɐ̃.t͡ʃi/ | anti- /ɐ̃.ti/ | Unstressed prefix; PSEUDOCONS and PREFIX_MARKER are attached |
4. and 5. Boundary Markers and Dialect-Specific Accents
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
Apostrophe becomes the tie ‿ (syllable-transparent) | d'água | d'água /ˈd‿a.ɡwɐ/ | d'água /ˈd‿a.ɡwɐ/ | Words are wrapped in # boundaries, the whole text in ## |
| Hyphen becomes a component boundary | guarda-chuva | guarda-chuva /ˌɡwaʁ.dɐˈʃu.vɐ/ | guarda-chuva /ˌɡwaɾ.dɐˈʃu.vɐ/ | Both sides get #; each component is stressed separately |
| Brazil: delete grave/macron. Portugal: grave becomes acute + DOTUNDER, macron becomes circumflex + DOTUNDER | sòlo | Error | sòlo /sɔ.lu/ | In Brazil the vowel is left stressed and unmarked, so the e/o check of stage 17 fails; in Portugal it is an explicitly unstressed open vowel |
6. The Letter x
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| #x → #ʃ | xícara | xícara /ˈʃi.ka.ɾɐ/ | xícara /ˈʃi.kɐ.ɾɐ/ | Initial x (also after a component boundary) |
| x# → X# (later ks) | córtex | córtex /ˈkɔʁ.tɛks/ | córtex /ˈkɔɾ.tɛks/ | Unstressed a/e/o before X is opened at stage 16 |
| (ai|ei|oi|ou|en)x → ...ʃ | caixa | caixa /ˈkaj.ʃɐ/ | caixa /ˈkaj.ʃɐ/ | Other diphthongs before x (e.g. au, eu) fall through to the error |
| ex + C: Brazil → es + C; Portugal → eis + C | excelente | excelente /e.seˈlẽ.t͡ʃi/ | excelente /ejʃ.sɨˈlẽ.t(ɨ)/ | Not applied to other vowels; exs becomes isç in Portugal |
| Any remaining x | exame | exame (error) | exame (error) | Error "x must be respelled z, sh, cs, ss or similar" |
7. h Combinations and Initial h
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| (s|c)h → ʃ | chuva | chuva /ˈʃu.vɐ/ | chuva /ˈʃu.vɐ/ | Done before syllabification so the consonant stays with the h |
| nh → ɲ, lh → ʎ | ninho, filho | ninho /ˈnĩ.ɲu/, filho /ˈfi.ʎu/ | ninho /ˈni.ɲu/, filho /ˈfi.ʎu/ | Brazil's later nasalization and phonetic j̃ apply to ɲ |
| Initial h removed | humano | humano /uˈmɐ̃.nu/ | humano /uˈmɐ.nu/ | Any other h is deleted at the very end (stage 23) |
8. c, g, q, gu, qu, ü, ng, y
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| c + front vowel → ç; g + front vowel → j | cinêma, gêlo | cinêma /siˈnẽ.mɐ/, gêlo /ˈʒe.lu/ | cinêma /siˈne.mɐ/, gêlo /ˈʒe.lu/ | Front vowels: e ɛ ɨ i and glides |
| gu/qu + front vowel → g/k | guitarra, quilo | guitarra /ɡiˈta.ʁɐ/, quilo /ˈki.lu/ | guitarra /ɡiˈta.ʁɐ/, quilo /ˈki.lu/ | The u is silent |
| ng + consonant: Brazil → n, Portugal → ngh | parking | parking /paʁˈkĩ/ | parking /pɐɾˈkĩɡ/ | Not before a vowel, h, l or r |
| ü → u; (g|q)u + vowel → (g|q)w; remaining c, q → k | agüentar, quatro | agüentar /a.ɡwẽˈta(ʁ)/, quatro /ˈkwa.tɾu/ | agüentar /ɐ.ɡwẽˈtaɾ/, quatro /ˈkwa.tɾu/ | w is a glide consonant here |
| y between non-vowels → i | Itamaraty | Itamaraty /i.ta.ma.ɾaˈt͡ʃi/ | Itamaraty /i.tɐ.mɐ.ɾɐˈti/ | Other uses of y are left to the glide rules |
9. Doubled Letters and muit-
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| rr → ʁ | carro | carro /ˈka.ʁu/ | carro /ˈka.ʁu/ | A single unit, so it cannot be split by syllabification |
| nn → N, mm → M (→ plain n, m) | ánno | ánno /ˈã.nu/ | ánno /ˈa.nu/ | Prevents nasalization of the preceding vowel |
| ss → S (later s or ç) | passa, nóss | passa /ˈpa.sɐ/, nóss /ˈnɔʃ/ | passa /ˈpa.sɐ/, nóss /ˈnɔʃ/ | Final S behaves like s but blocks the epenthetic glide |
| (C)(C) with identical consonants → one | pizza | pizza /ˈpi.zɐ/ | pizza /ˈpi.zɐ/ | Applies to every other double consonant |
| #mu(stress)it → mũit | muito | muito /ˈmũj̃.tu/ | muito /ˈmũj̃.tu/ | Done before t/d palatalization |
10. Syllable Division
Rules, applied in this order: (a) divide before the last consonant between vowels (plus any following glide) and move the division left over a stop + l/r onset; (b) Portugal also keeps "improper" clusters (pt, bv, mn, ...) together, whereas Brazil divides between them (and handles adj- specially); (c) divide a/e/o + i/u before m, n, l, r, nh; (d) protect final -ui(s), -iu(s), the diphthongs aeo + unstressed i/u and the nasal diphthongs ão, ãe, õe, ũi; (e) divide every other vowel sequence.
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| Stop + l/r is an onset | prato | prato /ˈpɾa.tu/ | prato /ˈpɾa.tu/ | Not divided |
| Improper clusters (dialect difference) | ritmo | ritmo /ˈʁit.mu/ | ritmo /ˈʁi.tmu/ | Brazil: t.m; Portugal: .tm |
| Diphthong protected | saudade | saudade /sawˈda.d͡ʒi/ | saudade /sawˈda.d(ɨ)/ | au stays one syllable |
| Diphthong divided before r | sair | sair /saˈi(ʁ)/ | sair /sɐˈiɾ/ | a.i in hiatus |
| Other vowel sequences divided | saída | saída /saˈi.dɐ/ | saída /sɐˈi.dɐ/ | Accented í blocks the diphthong rule |
11. Stress Assignment (accent_word)
First, an acute or circumflex on a vowel becomes a primary stress mark (ˈ); a line-under
becomes secondary stress. Then accent_word is run on each word (and component) that has no primary
stress: it looks for a tilde syllable (last one wins); otherwise it stresses the next-to-last syllable when the
word ends in [aeo]s?, [ae]m or [ae]ns, else the last syllable; it never
stresses an epenthetic I or a vowel-less syllable. -mente and -zinho/-zinha(s) are first
split off as separate components.
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| Accent → stress | café | café /kaˈfɛ/ | café /kɐˈfɛ/ | Acute/circumflex mark both stress and quality |
| Last tilde syllable | irmão | irmão /iʁˈmɐ̃w̃/ | irmão /iɾˈmɐ̃w̃/ | Tilde stress before the default rule |
| Next-to-last | cidade | cidade /siˈda.d͡ʒi/ | cidade /siˈda.d(ɨ)/ | Ends in e |
| Last | azul | azul /aˈzuw/ | azul /ɐˈzul/ | Ends in l |
| -mente / -zinho split | rapidamente | rapidamente /ʁaˌpi.daˈmẽ.t͡ʃi/ | rapidamente /ʁɐˌpi.dɐˈmẽ.t(ɨ)/ | Both components stressed; the first one is demoted at stage 25 |
12. Hiatus and Glide Formation
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| #i.V → #yV unless the i is stressed or the dot was typed | iate | iate /ˈja.t͡ʃi/ | iate /ˈja.t(ɨ)/ | Both dialects |
| Brazil: unstressed i./u. → optional glide (Ì, Ù); Portugal: e./i./o./u. before a vowel → glide | teatro | teatro /teˈa.tɾu/ | teatro /ˈtja.tɾu/ | The shown variant keeps the hiatus in Brazil |
| Portugal only: e.i → a.i (except after re-) | proteína | proteína /pɾo.teˈĩ.nɐ/ | proteína /pɾu.tɐˈi.nɐ/ | Portuguese ɐ |
| Stressed i + final o in Brazil → Ú | rio | rio /ˈʁi.u/ | rio /ˈʁi.u/ | Two variants i.u / iw are generated at stage 24; the app shows the first |
13. Vowel Placeholders and Nasalization
Every a, e, o becomes A, E, O (undetermined). Then, in order:
- Final unstressed Am becomes Ão.
- Portugal: final
nbecomes a true n and opens the preceding E/O. - põem: Brazil drops the m; Portugal inserts a hiatus. Portugal's circumflex -êm becomes a double nasal glide sequence. An acute on final -em/-ens is turned into a circumflex.
- Vowel + m/n in one syllable becomes a tilde; a non-high vowel gets a circumflex.
- A primary-stressed vowel before m/n/nh across a syllable boundary is circumflexed (both dialects)
and nasalized in Brazil (except
sbr); every vowel before nh is nasalized in Brazil. - Brazil: initial unstressed
êm-/ên-+ consonant becomes Ẽ.
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| -am → -ão | cantam | cantam /ˈkɐ̃.tɐ̃w̃/ | cantam /ˈkɐ̃.tɐ̃w̃/ | Unstressed final |
| V + m/n (same syllable) → V~ | lindo | lindo /ˈlĩ.du/ | lindo /ˈlĩ.du/ | Consonant disappears |
| Stressed V + m/n (next syllable) | cama | cama /ˈkɐ̃.mɐ/ | cama /ˈkɐ.mɐ/ | Brazil nasalizes; both close the vowel |
| Portugal final n | hífen | hífen /ˈi.fẽj̃/ | hífen /ˈi.fɛn/ | Portugal: true n, open vowel |
| Circumflex on final -em (Portugal) | têm | têm /ˈtẽj̃/ | têm /ˈtẽj̃.ẽj̃/ | Doubled nasal diphthong in Portugal only |
| Initial en-/em- + consonant (Brazil) | enxame | enxame /ẽˈʃɐ̃.mi/ | enxame /ẽˈʃɐ.m(ɨ)/ | Careful variant shown first |
14. Nasal and Oral Diphthongs
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| Ã + O → ã + nasal w; Ã + E → nasal j; Õ + E → nasal j; ũ + i → nasal j | mão, mãe, põe | mão /ˈmɐ̃w̃/, mãe /ˈmɐ̃j̃/, põe /ˈpõj̃/ | mão /ˈmɐ̃w̃/, mãe /ˈmɐ̃j̃/, põe /ˈpõj̃/ | The second letter becomes a glide |
| Final nasal e (-em, -ens) → ẽ + nasal j | bem, homens | bem /ˈbẽj̃/, homens /ˈõ.mẽj̃ʃ/ | bem /ˈbẽj̃/, homens /ˈo.mẽj̃ʃ/ | Regardless of stress |
| E/O + i/u/y/w → ê/ô | leite, boi | leite /ˈlej.t͡ʃi/, boi /ˈboj/ | leite /ˈlej.t(ɨ)/, boi /ˈboj/ | No accent needed in a diphthong |
| A + i/u/y/w → á | pai, mau | pai /ˈpaj/, mau /ˈmaw/ | pai /ˈpaj/, mau /ˈmaw/ | Always a |
15. Special Open/Closed o
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| [dtsS]O ˈ r# (and -ra, -res, -ras) → closed o | invasor, ganhadora | invasor /ĩ.vaˈzoʁ/, ganhadora /ɡɐ̃.ɲaˈdo.ɾɐ/ | invasor /ĩ.vɐˈzoɾ/, ganhadora /ɡɐ.ɲɐˈdo.ɾɐ/ | -dor, -tor, -sor and their feminine and plural forms |
| Oˈ.sO# → closed | gostoso | gostoso /ɡoʃˈto.zu/ | gostoso /ɡuʃˈto.zu/ | Masculine -oso |
| Oˈ.s[OA]s?# → open ɔ | gostosa, gostosos | gostosa /ɡoʃˈtɔ.zɐ/, gostosos /ɡoʃˈtɔ.zuʃ/ | gostosa /ɡuʃˈtɔ.zɐ/, gostosos /ɡuʃˈtɔ.zuʃ/ | Feminine and plural: open |
| Stressed O in hiatus → closed o | boa | boa /ˈbo.ɐ/ | boa /ˈbo.ɐ/ | In Portugal an optional regional w is generated at stage 24 |
16. Unstressed Vowels
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| Before final X: unstressed a/e/o opened | clímax | clímax /ˈklĩ.maks/ | clímax /ˈkli.maks/ | X is then replaced by ks |
Brazil: final unstressed e/o/a → i/u/ɐ (not in sbr) | dôce, bonito | dôce /ˈdo.si/, bonito /boˈni.tu/ | dôce /ˈdo.s(ɨ)/, bonito /buˈni.tu/ | Remaining unstressed vowels become a/e/o |
| Brazil: initial #Es + C → I (i or e) | estar | estar /iʃˈta(ʁ)/ | estar /(i)ʃˈtaɾ/ | Portugal: initial #Es → (i) |
| Portugal: [AEO] before final r or coda l → open | dólar, alface | dólar /ˈdɔ.lɐʁ/, alface /awˈfa.si/ | dólar /ˈdɔ.laɾ/, alface /alˈfa.s(ɨ)/ | The o before l becomes Ɔ (o/ɔ, first variant o) |
| Portugal: initial E → i; initial O → ɔ if the word contains another vowel; others → ɐ ɨ u | elefante, obrigado | elefante /e.leˈfɐ̃.t͡ʃi/, obrigado /o.bɾiˈɡa.du/ | elefante /i.lɨˈfɐ̃.t(ɨ)/, obrigado /ɔ.bɾiˈɡa.du/ | Unstressed ie becomes jɛ |
17. Final Vowel Qualities and the Error Check
Remaining A becomes a; a quality mark turns A/E/O into
a ɐ / ɛ e / ɔ o (acute / circumflex);
quality marks on i/u are ignored. Any E or O that is still undetermined triggers the
error "Stressed e or o not occurring nasalized or in a diphthong must be marked for quality using é/ê or ó/ô".
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| A + acute → a, A + circumflex → ɐ | pára, pâra | pára /ˈpa.ɾɐ/, pâra /ˈpɐ.ɾɐ/ | pára /ˈpa.ɾɐ/, pâra /ˈpɐ.ɾɐ/ | Only stress marks fix the quality |
| E/O + acute → ɛ/ɔ; + circumflex → e/o | féra, fêra | féra /ˈfɛ.ɾɐ/, fêra /ˈfe.ɾɐ/ | féra /ˈfɛ.ɾɐ/, fêra /ˈfe.ɾɐ/ | Open or closed |
| E or O still unresolved | governo | governo (error) | governo (error) | The error raised from one_term_ipa is caught by the app |
18. Epenthetic Glide, s/z and Shibilants
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| Brazil: V ˈ + final s/z → V ˈ Y s/z (not after i) | luz | luz /ˈlu(j)ʃ/ | luz /ˈluʃ/ | Y later becomes (j) |
| S# → s#, S → ç; z# → s# | passa | passa /ˈpa.sɐ/ | passa /ˈpa.sɐ/ | The ss spelling blocks voicing and epenthesis |
| trans + V → z; s between vowels or before a voiced consonant → z; z before voiceless → s | transar, casa | transar /tɾɐ̃ˈza(ʁ)/, casa /ˈka.zɐ/ | transar /tɾɐ̃ˈzaɾ/, casa /ˈka.zɐ/ | Not after a nasal vowel before a vowel (e.g. pensar) |
| Rio and Portugal: s/z before a consonant or at the end → ʃ/ʒ (not word-initial) | pasta, asma | pasta /ˈpaʃ.tɐ/, asma /ˈaʒ.mɐ/ | pasta /ˈpaʃ.tɐ/, asma /ˈaʒ.mɐ/ | Other Brazilian styles skip this rule |
| Identical sibilants merge; Rio also merges ʃ+s | nascêr | nascêr /naˈse(ʁ)/ | nascêr /nɐʃˈseɾ/ | Portugal keeps ʃs as the "careful" first variant (stage 24) |
19. R Sounds
| Rule | Example Input | Output (Brazil, phonetic) | Output (Portugal, phonetic) | Description |
|---|---|---|---|---|
| Initial r, or after ~ l s z ʃ ʒ → ʁ | honra | honra [ˈõ.χɐ] | honra [ˈõ.ʁɐ] | Brazil phonetic: ʁ becomes χ |
| Brazil: stressed [aɛei] + final r → optional (ʁ); other coda r → ʁ | cantar, pórta | cantar [kɐ̃ˈta(χ)], pórta [ˈpɔχ.tɐ] | cantar [kɐ̃ˈtaɾ], pórta [ˈpɔɾ.tɐ] | Other Brazilian styles use ɾ (sp) or ɻ (sbr) |
| Phonetic Rio: ʁ before voiced consonant stays ʁ, otherwise χ | bórdo | bórdo [ˈbɔʁ.du] | bórdo [ˈbɔɾ.ðu] | Other Brazilian styles: ɦ / h |
| All other r → ɾ | caro | caro [ˈka.ɾu] | caro [ˈka.ɾu] | Including Portugal coda r |
20. Profile-Specific Diphthong Rules
Brazil: eir, eij, eig, eix receive an optional (j). The following branches are
selected by exact style name and therefore never run in this app, because the app passes pt for
Portugal: spt deletes the glide of ei and ou; gpt lowers
e/ɛ before i, before j, and before other palatals to
ɐ.
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| Brazil: e(i) before r/j/g/x → e(j) | beijo, cadeira | beijo /ˈbe(j).ʒu/, cadeira /kaˈde(j).ɾɐ/ | beijo /ˈbej.ʒu/, cadeira /kɐˈdej.ɾɐ/ | Portugal (pt) keeps a normal diphthong |
21. Stops: Palatalization and Fricativization
| Rule | Example Input | Output (Brazil, phonemic) | Output (Portugal, phonetic) | Description |
|---|---|---|---|---|
| Brazil: [td] + i/Ì/y/Ɨ → ʧ/ʤ | tia, cidade | tia /ˈt͡ʃi.ɐ/, cidade /siˈda.d͡ʒi/ | tia [ˈti.ɐ], cidade [siˈða.ð(ɨ)] | Runs after the final vowel qualities, so raised final e is included |
| Portugal, phonetic only: [bdg] → [βðɣ], then back to stops at ## start, after a nasal, and ld | sabêr, mundo | sabêr /saˈbe(ʁ)/, mundo /ˈmũ.du/ | sabêr [sɐˈβeɾ], mundo [ˈmũ.du] | No fricativization in Brazil |
22. Glides, ou, Coda l, nh and Optional ɨ
| Rule | Example Input | Output (Brazil, phonetic) | Output (Portugal, phonetic) | Description |
|---|---|---|---|---|
| ou → o(w) | pouco | pouco [ˈpo(ʊ̯).ku] | pouco [ˈpo(w).ku] | Done before coda l, so ol stays ow |
| Coda l: Brazil → w; Portugal phonetic → ɫ | animal | animal [a.niˈmaʊ̯] | animal [ɐ.niˈmaɫ] | Portugal phonemic keeps l |
| Second element of a diphthong: i/j → j or ɪ̯; u/w → w or ʊ̯ (phonetic Brazil) | pai | pai [ˈpaɪ̯] | pai [ˈpaj] | Y → (j) in Brazil |
| Brazil phonetic: non-initial ɲ → j̃ | banho | banho [ˈbɐ̃.j̃u] | banho [ˈbɐ.ɲu] | Not in sbr; initial nh is unchanged: nhaca [ˈɲa.kɐ] |
| Portugal: final ɨ is optional, and elided before a vowel | tarde | tarde [ˈtaʁ.d͡ʒi] | tarde [ˈtaɾ.ð(ɨ)] | Output (ɨ); for final -le the word is split into two variants (see stage 24) |
23. Symbol Clean-Up
g is replaced with the IPA ɡ (U+0261); ʧ ʤ and tʃ dʒ become t͡ʃ d͡ʒ; every h is deleted (the temporary capital H used for Brazilian strong r is lowercased first).
| Rule | Example Input | Output (Brazil) | Output (Portugal) | Description |
|---|---|---|---|---|
| g → ɡ; ʤ → d͡ʒ | gato, dia | gato /ˈɡa.tu/, dia /ˈd͡ʒi.ɐ/ | gato /ˈɡa.tu/, dia /ˈdi.ɐ/ | Proper IPA characters |
24. Variant Expansion (call_one_term_ipa)
The phonemic and phonetic outputs are computed first. Then flatmap_and_sub_post splits every output that
contains an undecided symbol into two variants, each with a qualifier. The app only displays the first variant.
| Dialect | Symbol | First variant (shown) | Second variant (not shown) | Example (first variant) |
|---|---|---|---|---|
| Brazil | Ẽ (initial en-/em-) | ẽ (careful) | ĩ (natural) | enxame /ẽˈʃɐ̃.mi/ |
| Brazil | I (initial es-) | i | e | estar /iʃˈta(ʁ)/ |
| Brazil | Ú (stressed final -io) | .u | w / ʊ̯ | Bug: crashes, see Common Issues |
| Brazil and Portugal | Ì / Ù (hiatus i/u) | Full vowel | Glide ("faster pronunciation") | criança /kɾiˈɐ̃.sɐ/ |
| Portugal | ʃ + s, ʒ + z | Both kept ("careful") | Only the first ("natural") | nascêr /nɐʃˈseɾ/ |
| Portugal | Ɔ (o before l) | o | ɔ | solteiro /solˈtej.ɾu/ |
| Portugal | W (o in hiatus) | No glide | w ("regional") | boa /ˈbo.ɐ/ |
| Portugal | L (final -le) | With a full ɨ in its own syllable | Without it (one syllable fewer), ending in coda l / ɫ | Bug: crashes, see Common Issues |
25. Finalization (finalize_ipa)
| Rule | Example Input | Output (Brazil, phonetic) | Output (Portugal, phonetic) | Description |
|---|---|---|---|---|
| Brazil phonetic: i/u + syllable dot + vowel → ɪ/ʊ | ciúme | ciúme [sɪˈũ.mi] | ciúme [ˈsju.m(ɨ)] | Only after the glide variants have been expanded |
| Move ˈ/ˌ to the start of the syllable; drop the dot before it | saída | saída [saˈi.dɐ] | saída [sɐˈi.ðɐ] | Stress marks sit on the vowel until this point |
| All but the last primary stress of a word become secondary; stress in prefixes becomes secondary | guarda-chuva | guarda-chuva [ˌɡwaʁ.dɐˈʃu.vɐ] | guarda-chuva [ˌɡwaɾ.ðɐˈʃu.vɐ] | Compounds, -mente and -zinho |
Remove #, _, PSEUDOCONS, PREFIX_MARKER; recompose to NFC | d'água | d'água [ˈd‿a.ɡwɐ] | d'água [ˈd‿a.ɣwɐ] | Output is ready for the app |
Phonetic Transcription Process
There is no separate "apply phonetic rules" pass for Portuguese: one_term_ipa runs twice and the
phonetic flag changes only the rules below.
| Rule | Example | Description |
|---|---|---|
| Brazil: ʁ → χ (ʁ before a voiced consonant) | carro [ˈka.χu] | Rio's voiceless uvular fricative |
| Brazil: diphthong glides j, w → ɪ̯, ʊ̯ | pai [ˈpaɪ̯] | Short vowel-like glides |
Brazil: non-initial ɲ → j̃ (not sbr) | banho [ˈbɐ̃.j̃u] | Nasal glide |
| Brazil: hiatus i/u → ɪ/ʊ | viúva [vɪˈu.vɐ] | Lax vowels |
| Portugal: b d g → β ð ɣ (with exceptions) | obrigado [ɔ.βɾiˈɣa.ðu] | Fricativization, see stage 21 |
| Portugal: coda l → ɫ | animal [ɐ.niˈmaɫ] | Dark l |
Common Issues & Limitations
Known Transcription Problems
This table shows known issues where the automatic transcription fails or is wrong. "System Output" for a word that fails means the word is returned unchanged in the error style (see What the App Shows When It Fails).
| Input | System Output | Correct IPA | Cause | What to Do |
|---|---|---|---|---|
| governo, hoje, Europa | Error in both dialects: governo (error), hoje (error), Europa (error) | Brazil: govêrno /ɡoˈveʁ.nu/, hóje /ˈɔ.ʒi/, Európa /ewˈɾɔ.pɐ/ Portugal: govêrno /ɡuˈveɾ.nu/, hóje /ˈɔ.ʒ(ɨ)/, Európa /ewˈɾɔ.pɐ/ | Stressed e/o without é/ê/ó/ô and not in a rule context | Accent the stressed vowel (ê closed, é open) |
| exame, táxi, lixo | Error in both dialects: exame (error), táxi (error), lixo (error) | Brazil: ezame /eˈzɐ̃.mi/, tácsi /ˈtak.si/, lisho /ˈli.ʃu/ Portugal: ezame /iˈzɐ.m(ɨ)/, tácsi /ˈta.ksi/, lisho /ˈli.ʃu/ | x between vowels is ambiguous | Respell with z, cs, sh or ss |
| ritmo, advogado (Brazil) | ritmo /ˈʁit.mu/, advogado /ad.voˈɡa.du/ | Real Brazilian speech inserts an epenthetic i inside these clusters (described in words: after the first consonant, e.g. rit-i-mo) | The module only inserts it from the respelling notation i^/i*, which the app's input cleaning strips | Not possible in this app; the output is a simplification |
| shopping | Brazil: shopping /ʃoˈpĩ/ Portugal: shopping /ʃuˈpĩɡ/ | Brazil: shópping /ˈʃɔ.pĩ/ Portugal: shópping /ˈʃɔ.pĩɡ/ | Default stress goes on the last syllable of a word ending in a consonant, and Portugal keeps the g of -ng | Mark the stress yourself: shópping |
| pizza | Brazil: pizza /ˈpi.zɐ/ Portugal: pizza /ˈpi.zɐ/ | The usual pronunciation has ts: Brazil pítsa /ˈpit.sɐ/, Portugal pítsa /ˈpi.tsɐ/ | Doubled letters reduce to one, so zz is just z | Respell the loanword phonetically: pítsa |
| jazz | Brazil: jazz /ˈʒa(j)ʃ/ Portugal: jazz /ˈʒaʃ/ | Brazil: djézz /ˈd͡ʒɛ(j)ʃ/ Portugal: djézz /ˈd͡ʒɛʃ/ | English loanword spelled with j and a | Respell: djézz |
| whisky | Brazil: whisky /wiʃˈki/ Portugal: whisky /wiʃˈki/ | Brazil: uísque /uˈiʃ.ki/ Portugal: uísque /ˈwiʃ.k(ɨ)/ | Final-syllable default stress and wh passes through as w | Respell with an accent on the stressed syllable |
| internet | Error in both dialects: internet (error) | Brazil: internét /ĩ.teʁˈnɛt/ Portugal: internét /ĩ.tɨɾˈnɛt/ | Last syllable is stressed by default and its e is unmarked | Add the accent: internét |
| adjetivo (Portugal) | Phonemic adjetivo /ɐ.d͡ʒɨˈti.vu/ Phonetic adjetivo [ɐ.ðʒɨˈti.vu] | The two forms disagree: the phonemic form has a tie-barred affricate d͡ʒ, the phonetic form separates it into ð + ʒ (described in words; no respelling avoids it) | The fricativization rule of stage 21 also applies to the d of written dj | Treat the phonemic form as the reference, or check an external source |
| Brazil: email /e.maˈiw/ Portugal: email /i.mɐˈil/ | Brazil: imêiu /iˈme.iw/ Portugal: imêiu /iˈme.iw/ | Last syllable stressed by default (as for any word ending in l), and e, a are read as in Portuguese | Respell the loanword: imêiu | |
| os + amigos typed with a space | os /uʃ/, amigos /aˈmi.ɡuʃ/ | In connected speech the final s of os is voiced before a vowel; this cannot be reproduced (described in words) | The app transcribes each space-separated word separately, so cross-word rules never apply | Not possible in this app |
Other Limitations
- No stress or quality inference for e/o: by design the engine fails rather than guessing.
- Only the first variant is shown (see Multiple Pronunciation Variants).
- Punctuation and digits are removed before transcription; a word consisting only of such characters comes back as an error.
- Respelling notation (
^,.,+,:,*) cannot be typed, so optional vowels, forced syllable boundaries and component markers are not available. - Portugal is plain
pt: the module's general-Portugal rules (gpt) are not active.
Related Pronunciation Guides
Help pages for other languages in this tool:
For technical issues or suggestions, please visit our GitHub repository.