The Thai Vowels (Sara): Forms and How to Type Them
Thai vowels, called สระ (sara), are written around the consonant rather than in a line after it. A single vowel sound can sit before, above, below, or after its consonant — or surround it on several sides at once. On the keyboard that wrapping is a keystroke order, not a drawing problem: you press keys left to right in a fixed sequence, and the operating system stacks the marks. This is the part of Thai typing that feels strangest at first, and the part that rewards a little structure.
ThaiTyper’s skill track splits the sara into three atoms for that reason: trailing-vowels (า ะ ำ), stacked-vowels (ิ ี ึ ื ั ุ ู), and preposed-order (เ แ โ ใ ไ). Those twelve characters, plus ็ on Shift+H and ์ on Shift+N, are almost the whole working set. The positions below are Kedmanee positions from CHARS.kedmanee. If your OS is on Pattachote, none of the home-row claims in this article will match your fingers.
ThaiTyper’s cluster walk in lib/typing/clusters.ts is not a style guide. It is the same grouping the trainer uses to decide what Backspace deletes. A pre-posed vowel starts a cluster and swallows the next base. Combining marks attach to that base. Trailing ะ า ำ sit after it. If you treat the on-screen wrap as the typing order, Backspace will feel like it is deleting the wrong piece, which is exactly the failure the input-order article in this library exists to explain.
Four positions around the consonant
Vowels attach in four places: pre-posed (before the consonant on the line), above it, below it, and trailing (after it on the line). Some written vowels combine two or more of those positions to write one sound, so the consonant ends up wrapped on several sides. The typist’s job is not to draw the wrap. It is to emit the code points in the order the input engine expects.
The trainer’s cluster rules, in lib/typing/clusters.ts, are the ones to practise: a pre-posed vowel เ แ โ ใ ไ is typed first and absorbs the following base consonant; then any nonspacing marks — stacked vowels, tone marks, thanthakhat ์, maitaikhu ็ — stack onto that base; then trailing vowels such as ะ า ำ follow. Visual order on screen is not a reliable guide to that sequence, because เ prints to the left of ก in เก even though เ was the first key.
- Pre-posed, on the line to the left: เ แ โ ใ ไ. Typed first.
- Above the consonant: ิ ี ึ ื ั, plus the four tone marks and ็ ์ ํ when they appear.
- Below the consonant: ุ ู, and ฺ in the rare cases you need it (Shift+B on Kedmanee).
- Trailing, on the line to the right: ะ า ำ, and the second half of surrounding vowels such as the า in เา.
- The displayed cluster is one unit. Backspace removes code points from the end of the sequence, not “the mark you are looking at.”
Pre-posed vowels: เ แ โ ใ ไ
These five vowels are written to the left of the consonant even though they are pronounced as part of the same syllable after the initial sound. This is the single most important typing rule in Thai: you press the pre-posed vowel first, then the consonant. ThaiTyper’s preposed-order atom exists to make that sequence automatic. If you type ก then เ, the engine commits ก as its own cluster and then starts a new one with เ — you see กเ, which is not เก, and Backspace must remove both pieces.
Frequency is not evenly spread across the five. เ is the workhorse: เด็ก, เก, เดิน, เมือง, เป็น, เล่า. แ appears in แม่, แต่, แบบ, และ. โ in โต, โดย, โรง. ไ and ใ write the same /ai/ sound in different words — ไม่ ไป ไทย versus ใจ ใหม่ ใคร — and must be memorised as spelling, not sounded out. The pre-posed-first rule is identical for all five; the spelling choice between ไ and ใ is vocabulary.
ThaiTyper will not tell you which of ไ and ใ a word uses — that is spelling, not a keystroke rule. What it will do is fail the cluster if you type ไ on W when the prompt shows ใ, because those are different code points on different keys. ใ is period, right ring, bottom row. ไ is W, left ring, top row. The only reliable drill is a closed list: ไม่ ไป ไทย for ไ, ใคร ใจ ใหม่ for ใ, named keys, until the finger, not the ear, chooses the key.
- เก is เ then ก. If you see กเ, you typed the consonant first.
- ไม่ is ไ then ม then ่. Three keys, one of the most common words in Thai.
- ไป is ไ then ป. ป is on X (bottom row, left ring), ไ is on W (top row, left ring) — same finger, opposite rows.
- เด็ก is เ then ด then ็ (Shift+H) then ก. Maitaikhu is a stacked mark, so it comes after the consonant, not before เ.
- แก is แ then ก. และ is แ then ล then ะ — pre-posed, consonant, trailing.
Where they live on the keyboard
On Kedmanee the pre-posed vowels are spread across both hands but lean left. เ sits on G, home row, left index — no reach, the most common of the five, which is why the vowel-first habit gets practised every time you type เป็น or เด็ก. แ is on C, bottom row, left middle, one key down from ก on D. ไ is on W, top row, left ring, above ห on S. ใ is on period, bottom row, right ring, below ส on L. โ is Shift+F: the F key, which holds ด on its base, with right Shift held by the right pinky.
The physical logic is that the left index owns both เ on G and โ on Shift+F, two adjacent keys. แ on C belongs to the left middle, the same finger that types ก on D. ไ on W belongs to the left ring, above ห. ใ is the odd one out: it is the only pre-posed vowel on the right hand, on the period key, so a word such as ใจ is right-ring ใ then left-middle จ (Digit0) — a long jump, which is why ใ-words feel slower than ไ-words even though the sound is the same.
โ is the Shift of ด, not a neighbour of เ. Learners who think the long /o/ must live near เ on G will look at H or at F’s base and miss it. The chord is right Shift plus F; the left index stays on the F bump. Same-hand Shift — left Shift plus F — is how you get a delayed ด or a dropped Shift and no โ at all. The skill track’s shift-layer atom is later than preposed-order, so you meet เ แ ไ ใ as base keys first and โ as a Shift chord second. That split is intentional.
- Type เ ten times on G without looking. Left index, home row. Do not double-tap; the rest position is the same key.
- Type แ on C, returning the left middle to D (ก) after each press.
- Type ไ on W, returning the left ring to S (ห).
- Type โ as right Shift plus F, never left Shift plus F. Same-hand Shift is how ด appears instead of โ.
- Type ใ on period with the right ring, then a left-hand consonant, to feel the handoff.
Above and below
Vowels like ◌ิ ◌ี ◌ึ ◌ื and ◌ั sit above the consonant, while ◌ุ and ◌ู sit below. These are combining marks: you type the consonant first and the vowel stacks onto it. A tone mark, if the syllable has one, goes on after the stacked vowel — consonant, then vowel, then tone. กี่ is ก then ี. กิ่ is ก then ิ then ่. Do not put the tone on before the stacked vowel; the orthography checker in the platform layer flags a mark-order issue when that happens.
Kedmanee positions, from the same table. Above: ั on Y (top row, right index), ี on U (top row, right index one step right), ึ on Digit7 (number row, right index), ื on N (bottom row, right index), ิ on B (bottom row, left index). Below: ุ on Digit6 (number row, right index), ู on Shift+Digit6. A notable pattern: the right index is responsible for ั ี ุ ึ — four of the seven stacked vowels. Training that one finger pays outsized dividends, which is why the stacked-vowels atom exists as its own skill rather than being mixed into reaches.
The pair that collides visually is ิ and ี. They look like the same stroke with a length mark on the latter, and they live on opposite sides of the keyboard: ิ on B (left index, down), ี on U (right index, up). Heatmaps that show both KeyB and KeyU hot are almost always this swap. ุ versus ู is a Shift-state error on the same physical key, Digit6: forget Shift and you get the short vowel, hold Shift with the wrong hand and you fumble the chord. Pause before any number-row Shift.
Mai han-akat ั on Y is not a short ะ. กัน is ก then ั then น — D, Y, O. กะ is ก then ะ — D, T. The two marks sit on adjacent top-row keys: T is left index (above เ on G), Y is right index. They write different syllables. Heatmaps that light KeyT and KeyY together are usually this swap, not a random number-row problem. ํ, nikkhahit, is Shift+Y on the same physical key as ั; the specials atom (ำ ั ์ ํ) exists because those four marks are easy to mix once stacked vowels are in play.
- ี on U, ั on Y: two right-index top-row keys, one step apart. นี้ uses ี then ่.
- ิ on B: left index down. คิด is ค (Digit8) then ิ then ด. Do not reach for U.
- ุ on Digit6, ู on Shift+Digit6. Opposite-hand Shift: left Shift, right index up to 6.
- ึ on Digit7, ื on N. Same right index, number row versus bottom row. มือ uses ื.
Trailing and surrounding vowels
Trailing vowels such as ◌ะ, ◌า, and ◌ำ follow the consonant on the line, so keystroke order matches the page: consonant, then the sara. า sits on K, right middle, home row — the gentlest vowel in the language. ะ sits on T, top row, left index — the same finger as ด on F, one column right, sitting above เ on G. ำ sits on E, top row, left middle, above ก on D. กา is D then K, both home keys. กะ is D then T. กำ is D then E.
Surrounding vowels combine a pre-posed part and a trailing part around the same consonant. เา (as in เรา, เขา, เสา) is เ, then the consonant, then า. แะ is แ, consonant, ะ. เีย (as in เสีย, เรียน) is เ, consonant, ี, ย. เือ (as in เรือ) is เ, consonant, ื, อ. You still lead with the pre-posed piece. The trailing piece is just another key after the base, not a new kind of input. Learners get lost when they try to type the whole visual wrap as a picture instead of as this sequence.
- กา มา นา หา สา วา: consonant plus า on K, until the right middle is automatic.
- กะ กะ กำ: ะ on T versus ำ on E, both left-hand top row, different fingers.
- เรา: เ on G, ร on I, า on K. Pre-posed, consonant, trailing.
- เสีย: เ, ส on L, ี on U, ย on P. Four keys, one syllable shape.
A note on ำ (sara am)
ำ is a single key that writes the sound /am/ — it bundles a short /a/ and a final nasal into one keystroke, sitting after the consonant. It feels special because one press produces what looks like two marks; treat it as the single character it is. On Kedmanee it lives on E, left middle, top row. กำ is ก then ำ. ทำ is ท on M then ำ. สำคัญ starts with ส ำ.
The common mistake is to type ะ then ม, or ั then ม, when the word is spelled with ำ. Those are different written syllables and they take a different tone pattern. กำ is not กะม, and it is not กัม. If the prompt shows ำ and you produce two characters, you used the wrong keys. The reverse error is pressing E for ำ when the word is actually ัม — look at the glyph: ำ is a single composed form on one key, not ั plus ม.
The keystroke order, in one place
Put the rules in the order the engine actually consumes them. First, if the syllable has a pre-posed vowel, press it. Second, press the base consonant. Third, press any above or below vowel (ิ ี ึ ื ั ุ ู). Fourth, press the tone mark if there is one (่ ้ ๊ ๋, all right index on Kedmanee). Fifth, press any trailing vowel (ะ า ำ) and any following consonant that belongs to the same written syllable, such as the ย in เีย or the ว in ข้าว.
Examples with named keys. เก: G then D. ไม่: W, comma, J. กี่: D, U. กิ่: D, B, J. ข้าว: minus (ข), H (้), K (า), semicolon (ว). เด็ก: G, F, Shift+H, D. การ: D, K, I. ที่: M (ท), U (ี), J (่). If a drill fails, name which slot in this sequence broke. “I missed the word” is not a diagnosis. “I typed the consonant before เ” is.
- No pre-posed vowel, no tone: กา = D, K.
- No pre-posed vowel, tone: ก่า = D, J. ก้า = D, H.
- Stacked vowel plus tone: ที่ = M, U, J.
- Pre-posed plus tone: ไม่ = W, comma, J.
- Pre-posed plus stacked mark: เด็ก = G, F, Shift+H, D.
Pairs that collide on the board
Several vowel pairs share a look, a finger, or a row, and those are the pairs that stall progress after the home row. ิ (B) versus ี (U) is visual. ุ (Digit6) versus ู (Shift+Digit6) is Shift state. ไ (W) versus ใ (period) is spelling, same sound, opposite hands. เ (G) versus แ (C) is left-index home versus left-middle bottom, and they are not interchangeable: เป็น is เ, แบบ is แ. ะ (T) versus ำ (E) versus ั (Y) are three different /a/-family marks on three keys.
Drill the collision, not the whole vowel set. If the heatmap names KeyB and KeyU, type กิ กี กิ กี until the diagonal contrast — left down versus right up — is obvious. If ไ and ใ swap, stop sounding them and attach each to a word: ไม่ and ไป for ไ on W, ใจ and ใหม่ for ใ on period. If โ comes out as ด, you used same-hand Shift on F. The stacked-vowels and preposed-order atoms in the skill track exist so these pairs can fail in isolation.
- ิ / ี: กิ กี on B versus U, left index down versus right index up.
- ุ / ู: Digit6 versus Shift+Digit6, left Shift, check the Shift state before the reach.
- ไ / ใ: ไม่ ไป versus ใจ ใหม่, W versus period, do not guess from the sound.
- เ / แ: เป็น versus แบบ, G versus C.
- ะ / ำ / ั: กะ on T, กำ on E, กัน on Y then น. Three keys, three spellings.
Practising whole clusters
Because Thai builds these pieces into one written syllable, ThaiTyper’s later skills drill complete clusters — consonant, vowel, and tone in the right keystroke order — instead of isolated keys. The syllable-clusters atom sits behind preposed-order and tone-stacking in the prerequisite graph, so you should not meet แก้ว as your first task. When you do meet it, the sequence is แ (C), ก (D), ้ (H), ว (semicolon): pre-posed, consonant, tone, trailing consonant. If that sequence is automatic, isolated แ and isolated ้ were finished earlier.
The twelve-skill track opens trailing-vowels (า on K, ะ on T, ำ on E) before stacked-vowels, and stacked-vowels before preposed-order. That is not the order a linguist would teach sara. It is the order of motor difficulty: home-row า first, then the combining marks on B, U, Y, N, and Digit6, then the left-of-consonant rule. If you skip to ไม่ on day one, you are stacking three atoms — ไ on W, ม on comma, ่ on J — before any of them is automatic.
A practical cluster session is short. Pick one shape. Repeat it with spaces: ไม่ ไม่ ไม่. Alternate with a neighbour: ไม่ ไป ไม่ ไป. Put it in a phrase: จะไม่, ไม่ได้. Put it in a sentence. If hesitation returns, drop back to the isolated shape. This is the same rising-difficulty pattern the bigram guide uses; the vowel article’s contribution is that the shape is defined by keystroke order and named keys, not by a picture of a wrapped consonant.
Related guides

Kedmanee is the Thai keyboard layout on nearly every device; Pattachote is faster on paper but rarely the default. Here is how their home rows compare and which one to learn.

A practical reference and drill guide for seldom-used Thai consonants on the Kedmanee keyboard, especially the letters that live on the Shift layer. Learn which letters are obsolete, which still appear in real words, and how to practise them without turning each one into a search.

A practical guide for learners who use a mechanical or laptop keyboard without Thai legends. Compare Thai keycaps, stickers, overlays, and blank keys, then choose the setup that supports real touch typing instead of constant key hunting.