RTGS

RTGS scheme (Royal Thai General System)

The rtgs scheme implements the 2002 revision of the Royal Thai General System of Transcription — the official romanization of the Royal Institute of Thailand. It is the system used on Thai road signs, government publications, transliterated place names, and most official English-language contexts.

RTGS is deliberately simple: plain ASCII Latin letters, no diacritics, no tone marks, and vowel length collapsed to a single spelling per vowel quality. It is designed as a reading aid for unfamiliar audiences rather than a reversible phonological notation.

from thaiphon import transcribe

transcribe("น้ำ", scheme="rtgs")
# 'nam'

transcribe("สวัสดี", scheme="rtgs")
# 'sawatdi'

transcribe("กรุงเทพ", scheme="rtgs")
# 'krungthep'

Format conventions

Convention Detail
Character set plain ASCII Latin — no diacritics, no IPA-extension letters
Tone not marked
Vowel length not marked — short and long map to the same spelling
Syllable separator none — syllables concatenate directly inside a word
Glottal stop not written — vowel-initial syllables start straight with the vowel letter
No slashes no /…/ wrapping

Because syllables concatenate without a separator, multi-syllable words become continuous strings: กรุงเทพ → krungthep, สวัสดี → sawatdi. Spaces between words are supplied at the sentence layer via transcribe_sentence.

from thaiphon import transcribe_sentence

transcribe_sentence("กรุงเทพ มหานคร", scheme="rtgs")
# 'krungthep mahanakhon'

Onset map (IPA → RTGS)

Aspirated stops are written with digraphs; the aspiration contrast for /tɕ/ vs /tɕʰ/ is neutralised — both render as ch.

IPA onset RTGS Note
k k unaspirated velar stop
kh aspirated
ch unaspirated palatal affricate
tɕʰ ch aspirated palatal affricate — same digraph
d d
t t
th aspirated
b b
p p
ph aspirated
f f
s s
h h
ʔ (none) glottal stop is never written
m m
n n
ŋ ng digraph
j y
r r
l l
w w

Aspiration neutralisation for /tɕ/ and /tɕʰ/: Unlike rtl, paiboon, and the Cyrillic schemes, RTGS does not distinguish the unaspirated and aspirated palatal affricates on the surface. จ and ช both render as ch.

transcribe("จาน", scheme="rtgs")   # 'chan'  — unaspirated /tɕ/
transcribe("ชา",  scheme="rtgs")   # 'cha'   — aspirated /tɕʰ/

Vowel map (IPA → RTGS)

Vowel length is not encoded. Short and long forms of each quality map to the same spelling. The close back unrounded /ɯ/ is written ue; the mid-central /ɤ/ is written oe. The open-mid back /ɔ/ and mid-back /o/ both surface as o — RTGS neutralises this contrast.

IPA quality RTGS Note
/a/ a short and long identical
/i/ i
/u/ u
/e/ e
/ɛ/ ae digraph
/o/ o
/ɔ/ o merges with /o/ — no surface distinction
/ɯ/ ue digraph
/ɤ/ oe digraph
/iə/ centring diphthong ia
/ɯə/ centring diphthong uea trigraph
/uə/ centring diphthong ua

Long /iː/ before a /w/ coda is written as the diphthong ia, so เขียว (green) renders as khiao rather than khio. This matches how the pattern เ-ียว is conventionally handled in RTGS output.

transcribe("เขียว", scheme="rtgs")   # 'khiao'
transcribe("เสือ",  scheme="rtgs")   # 'suea'
transcribe("ภาษา",  scheme="rtgs")   # 'phasa'

Coda map (IPA → RTGS)

Codas follow the standard six-way place-of-articulation merge. Foreign-origin coda phonemes that Thai phonotactics does not natively support collapse unconditionally to the nearest native segment. RTGS has no exception for modern loanwords, regardless of the active reading profile. Callers that want preserved foreign /f/ in output should use rtl, paiboon, or paiboon_plus.

IPA coda RTGS Note
m m
n n
ŋ ng
p
t
k
w (offglide) o
j (offglide) i ไทย → thai
f (loanword) p always collapses
s (loanword) t always collapses
l (loanword) n always collapses
transcribe("ไทย",   scheme="rtgs")   # 'thai'  — /j/ offglide → i
transcribe("ข้าว",  scheme="rtgs")   # 'khao'  — /w/ offglide → o
transcribe("ลิฟต์", scheme="rtgs")   # 'lip'   — /f/ collapses to p

Profile-insensitivity: Unlike the learner schemes, RTGS never preserves a foreign coda surface form. Passing profile="everyday" or profile="careful_educated" has no effect on coda output — the collapse is part of the RTGS specification, not a stylistic choice.

transcribe("ลิฟต์", scheme="rtgs", profile="everyday")         # 'lip'
transcribe("ลิฟต์", scheme="rtgs", profile="careful_educated") # 'lip'
transcribe("ลิฟต์", scheme="rtgs", profile="etalon_compat")    # 'lip'

RTGS vs other schemes

RTGS RTL Paiboon
Tone marks none combining diacritic on first vowel combining diacritic on first vowel
Vowel length collapsed doubled vowel letter doubled vowel letter
/tɕ/ vs /tɕʰ/ both ch c vs ch j vs ch
Foreign coda /f/ always p preserved for lexicon entries preserved for lexicon entries
Syllable separator (none) space hyphen

Use rtgs when you need the official form — for place names, government documents, geographic references, or whenever the intended reader is expecting Thai romanization in its standard published form. Use rtl or paiboon when tone information or vowel length matters to your reader.


Examples

All outputs are verified against the engine.

Thai Gloss RTGS
กา crow ka
ขา leg kha
ตา eye / grandfather ta
ทา to apply tha
ปา to throw pa
พา to bring pha
จาน plate chan
ชา tea cha
น้ำ water nam
ข้าว rice khao
รัก love rak
ปลา fish pla
สวัสดี hello sawatdi
ภาษาไทย Thai language phasathai
กรุงเทพ Bangkok krungthep
เขียว green khiao
เสือ tiger suea
เรือ boat ruea
ถุง bag thung
เด็ก child dek