Four rules
Apply them in this order and most words come out right.
Every syllable has a vowel nucleus
a, e, o are strong; i, u are weak. y counts as a vowel word-finally (rey, Uruguay).
One consonant between vowels goes with the next
ca-sa, me-sa, a-mi-go. The consonant becomes the onset of the following syllable — Spanish disfavours closed syllables.
Two consonants: can they be an onset together?
If yes (stop/fricative + l or r: bl br cl cr dr fl fr gl gr pl pr tr) they go together: ha-blar, le-tras. If not, the first stays as a coda: es-tar, cam-po. ★ /s/ + consonant always splits: es-cri-tu-ra, pi-las-tra.
ch / ll / rr count as one unit
They are digraphs and cannot be split: pe-rro (not per-ro), co-che, ca-lla-ba. gu / qu before e, i are also one unit with a silent u: gui-ta-rra, que-so.
Diphthong or two syllables
This is where syllabification goes wrong most often, and it decides the syllable count — which decides where the stress falls.
One syllable (diphthong)
- strong + weak — ai · au · ei · eu · oi · ou
- ai-re, cau-sa, pei-ne
- weak + strong — ia · ie · io · iu · ua · ue · uo
- puer-ta, tiem-po, agua
- weak + weak — iu · ui
- ciu-dad, muy
Two syllables (hiatus)
- two strong vowels — a/e/o adjacent
- po-e-ta, le-er, a-é-re-o
- accented weak + strong — í/ú + a/e/o
- dí-a, pa-ís, ba-úl
- strong + accented weak — a/e/o + í/ú
- o-í-do, re-ír
Same letters, one accent mark apart
Six pairs below are spelled identically apart from the accent. When the accent lands on a weak vowel it splits the two vowels into two syllables — the word gains a syllable, and usually a beat.
| Spelling | Split | Syllables |
|---|---|---|
| seria | se-ria | 2 |
| sería | se-rí-a | 3 |
| sabia | sa-bia | 2 |
| sabía | sa-bí-a | 3 |
| hacia | ha-cia | 2 |
| hacía | ha-cí-a | 3 |
| varia | va-ria | 2 |
| varía | va-rí-a | 3 |
| continua | con-ti-nua | 3 |
| continúa | con-ti-nú-a | 4 |
| aun | aun | 1 |
| aún | a-ún | 2 |
Which syllable carries the stress
Split first, then apply three rules. Written accents override everything.
How this page computes the split
The reference is not ours. The server side uses the open-source pylabeador library, which implements exactly the maximum-onset principles above.
Why a second implementation exists. The site is fully static (no backend), so typing a word and getting an instant answer means computing it in the browser.
That creates a real consistency risk, and it fails quietly. If the two implementations differ anywhere, the page gives a wrong answer and still looks fine. ⇒ The build generates expected values with pylabeador, runs the front-end implementation under node, and compares word by word; any difference fails the build.
Coverage. 270 words, including boundary cases for each rule (diphthongs, triphthongs, hiatus, clusters, rr/ch/ll) plus every real word appearing in the corpus.
Not covered. Loanwords, proper nouns, and words whose spelling has drifted from their pronunciation (like whisky) are extrapolated from the rules and may be off. The result shown is "the split by these rules", not an authoritative answer.