Javanese script

Updated 31 August, 2017 • tags scriptnotes, javanese

This page provides basic information about the Javanese script. It is not authoritative, peer-reviewed information – these are just notes I have gathered or copied from various places as i learned. For similar information related to other scripts, see the Script comparison table.

Clicking on red text examples, or highlighting part of the sample text shows a list of characters. Click on the vertical blue bar (bottom right) to change font settings for the sample text.

For more details see: Character notes Script links

Sample (Javanese)


Note: ZWSP has been added between orthographic syllables in the above text in order to allow the text to wrap. The major browsers don't wrap it automatically.

Key features

Javanese is an abugida, ie. consonants carry an inherent vowel sound that is overridden, where needed, using vowel signs.

The Javanese script characters in Unicode 10.0 are in a single block:

For more information see ScriptSource, Wikipedia, Omniglot, and the Unicode Standard.

Text direction

Javanese script is written horiztonally, left to right.


The Javanese block has 39 consonant letters, which can be grouped according to 4 types.

Nglegéna ꦏ ꦐ ꦒ ꦔ ꦕ ꦗ ꦚ ꦛ ꦝ ꦠ ꦢ ꦤ ꦥ ꦧ ꦩ ꦪ ꦫ ꦬ ꦭ ꦮ ꦱ ꦲ
Murda ꦑ ꦓ ꦖ ꦘ ꦟ ꦡ ꦦ ꦨ ꦯ
Mahaprana ꦙ ꦜ ꦞ ꦣ ꦰ
Vocalic ꦉ ꦊ ꦋ

The basic (nglegéna) set includes two special letters: [U+A990 JAVANESE LETTER KA SASAK] for writing the Kawi language; and [U+A9AC JAVANESE LETTER RA AGUNG] which is not used in modern text, but was used historically by some writers to address royal figures.

There are also 7 combining characters used for syllable medial and final consonants.

Murda letters

Murda forms can be viewed as a kind of capital letter for proper nouns (not sentence initial letters), used as honorifics. They are used to replace an ordinary letter form in the first syllable of the name. However, not all letters have a murda form, so if there is no letter in the first syllable that has a murda form, one is used for the next syllable in the name that has one.

Highly respected names may be all 'capitalized' if the corresponding murda are available.

Mahaprana letters

Mahaprana forms were originally aspirated consonants used in Sanskrit and Kawi transliterations (mahaprana means aspirated). They are rarely, if ever, found in modern text.

Vocalic letters

These three characters are treated as vowels in other scripts, such as Balinese, but as consonants in Javanese. They represent the sounds , and , rather than a consonant plus inherent vowel, and take no vowel signs, eg. ꦊꦩꦃꦊꦩ꧀ꦧꦸꦠ꧀ lemah lembut gentle.1 They do, however, have conjoint forms.

Consonant clusters

The absence of a vowel sound between two consonants shown as letters (ie. not involving medial or final consonant diacritics) is shown by altering and/or subjoining the second consonant. Since words are not separated by spaces, this process also works across word boundaries.

In Unicode text, the catalyst for this process is the inclusion of ◌꧀ [U+A9C0 JAVANESE PANGKON​] between the two letters.

In the following example, hak-hak kang, we see the combination kh, which alters the form of the second consonant without subjoining, and kk, which subjoins the second k with a slightly different shape.


Note, however, that the combination ngp near the end does not involve subjoining or shape changing, since the ng is expressed using a diacritic.

Medial (wyanjana) consonants

Three combining characters represent medial consonants,   ꦽ  ꦾ     ꦿ.

These indicate that the consonant doesn't start a new syllable, eg. ꦥꦿꦩꦸꦏ pramuka scout, ꦏꦾꦲꦶꦏꦤ꧀ꦗꦼꦁ kyai kanjeng, ꦕꦕꦶꦁꦏꦽꦩꦶ cacing kremi.

Word-final (seisigeg) diacritics

Four syllable-final consonant sounds are represented using combining characters , ꦀ  ꦁ  ꦂ  ꦃ, eg. ꦱꦼꦏꦺꦴꦭꦃ sekolah school, ꦥꦼꦫꦲꦸꦭꦪꦂ perahu layar sailboat, ꦥꦼꦠꦼꦁ peteng dark.

Representing foreign sounds

Javanese uses ◌꦳ [U+A9B3 JAVANESE SIGN CECAK TELU​] with a similar consonant to represent most foriegn sounds, particularly those from Arabic.

When consonants are subjoined there can be some ambiguity about which consonant the cecak telu applies to. For example, ꦏ꦳꧀ꦗ kza and ꦏ꧀ꦗ꦳ xja look identical.

Wikipedia has a set of Chinese sounds that are represented using some combining characters from a non-Javanese block.


There are two sets of vowels, independent letters and combining vowel signs.

Independent vowels

The normal way to represent independent vowels in Javanese is to combine a vowel sign with [U+A9B2 JAVANESE LETTER HA], eg. ꦲꦪꦸ ayu graceful. The independent vowel letters are used in Javanese to distinguish proper nouns or foreign words from ordinary words, eg. compare ꦄꦪꦸ Ayu, a personal name, with the previous example.2

There are 8 independent vowel letters (ꦄ ꦅ ꦆ ꦇ ꦈ ꦌ ꦍ ꦎ).

Modern Javanese uses [U+A986 JAVANESE LETTER I], and if a long vowel is needed [U+A987 JAVANESE LETTER II]. For Kawi, however, use [U+A985 JAVANESE LETTER I KAWI] and [U+A986 JAVANESE LETTER I] for short and long, respectively.1

Long versions of u and o vowels are written using ◌ꦴ [U+A9B4 JAVANESE VOWEL SIGN TARUNG​], ie. ꦈꦴ and ꦎꦴ.

dependent vowel signs

The Javanese block has 9 combining characters used as vowel-signs (ꦴ ꦵ ꦶ ꦷ ꦸ ꦹ ꦺ ꦻ ꦼ).

◌ꦴ [U+A9B4 JAVANESE VOWEL SIGN TARUNG​] is really a length mark, although it can be used alone to represent the long sound. Elsewhere it is used to lengthen not only dependent but also independent vowels. It is also used to produce a qualitative difference, for example the sound e is produced with ◌ꦺ [U+A9BA JAVANESE VOWEL SIGN TALING​], but ◌ꦺ + ◌ꦴ [U+A9BA JAVANESE VOWEL SIGN TALING​ + U+A9B4 JAVANESE VOWEL SIGN TARUNG​] produces o.

When a vowel-sign follows a subjoined consonant it appears above the stack. The following example shows the word kanthi, where the i appears above the n.


It is perhaps worth noting also, that a two-part vowel associated with a consonant cluster involving a conjoined (rather than subjoined) second consonant appears before and after the whole cluster, eg. see how the o surrounds the ns in mangan soto:


Two-part vowels

Unlike many other scripts, including Balinese, when vowels are created by adding multiple glyphs to a base character Javanese requires the user to type the parts separately. For example, the sound ko is represented by + ◌ꦺ + ◌ꦴ [U+A98F JAVANESE LETTER KA + U+A9BA JAVANESE VOWEL SIGN TALING​ + U+A9B4 JAVANESE VOWEL SIGN TARUNG​], eg.


Vowel absence

As described in the consonant section above, suppressed inherent vowels are indicated by either (a) changing the shape and/or position of the following character, (b) using a medial consonant diacritic, or (c) using a word-final consonant diacritic.

Where no letter follows the consonant where the vowel is silent, for example at the end of a sentence or isolated word or before a number, a visible ◌꧀ [U+A9C0 JAVANESE PANGKON​] is used, eg.


Occasionally ◌꧀ [U+A9C0 JAVANESE PANGKON​] may be visible in the middle of a word, eg. ꦧꦶꦱ꧀ꦠꦿꦤ꧀​ꦱ꧀ꦗꦏꦂꦠ bis transjakarta transjakarta bus. It's not clear from the Unicode Standard how to achieve this, however a zero width space works, and so does a zero width non-joiner.

Context-based rendering


Glyph shaping is required for Javanese. One principle area is that of subjoined or postfixed consonants, which often interact typographically with the preceding consonant.

In the following example, the two syllables to the right show how ◌ꦿ [U+A9BF JAVANESE CONSONANT SIGN CAKRA​] changes its shape to match the height of the syllable. The third syllable from the left shows [U+A98F JAVANESE LETTER KA] followed by a subjoined version of the same character; note how the bottom right of the subjoined glyph adapts to join with the syllable final glyphs that follow it in the syllables that are 2nd and 4th from the left.

ꦏꦿ ꦏ꧀ꦏꦿ  ꦏ꧀ꦏ ꦏ꧀ꦏꦾ

The next example show different renderings of the u vowel-sign after the second character in a consonant cluster.

ꦏꦿ ꦏ꧀ꦏꦿ  ꦏ꧀ꦏ ꦏ꧀ꦏꦾ

Not all fonts show the same shaping behaviours.

Glyph positioning

Obviously the principle of subjoining consonants requires rules about positioning, and those rules need to be disregarded for combinations where the second character of a cluster is not subjoined (though it usually changes shape).

In the following example we see ka with cecak telu on the left. In the middle syllable cecak telu has shifted slightly to the left to make room for the other diacritic. In the right-hand syllable the cecak telu has both moved and reduced in size to fit with the other diacritic.

ꦏꦿ ꦏ꧀ꦏꦿ  ꦏ꧀ꦏ ꦏ꧀ꦏꦾ

Another example of the need for special positioning occurs when a vowel-sign is pronounced after a subjoined consonant but appears above the previous consonant in the stack (see the example earlier).



Javanese uses native digits (꧐꧑꧒꧓꧔꧕꧖꧗꧘꧙), which are decimal-based and used in the same way as European numerals.

Several of the digits are identical to letters of the alphabet, so sometimes [U+A9C7 JAVANESE PADA PANGKAT] is used with numbers to indicate what they are.


Everson, on the other hand, says that [U+A9C8 JAVANESE PADA LINGSA] is used for this purpose, and gives the examples ꧈꧖꧈꧘꧈꧙꧈ 6 8 9 and ꧈꧒꧐꧐꧗꧈ 2007.5

Text layout

An orthographic syllable in Javanese can be described as {C F} C {{R}Y} {V{A}} {Z}, where C is a consonant (or consonant + ◌꦳ [U+A9B3 JAVANESE SIGN CECAK TELU​]), F is ◌꧀ [U+A9C0 JAVANESE PANGKON​], R is◌ꦿ [U+A9BF JAVANESE CONSONANT SIGN CAKRA​], Y is ◌ꦾ [U+A9BE JAVANESE CONSONANT SIGN PENGKAL​], V is a vowel-sign, A is ◌ꦴ [U+A9B4 JAVANESE VOWEL SIGN TARUNG​], and Z is one of the syllable-final consonants.

Text delimiters

Words are not separated by spaces.

For separators at the sentence level and below, the following are used, where the right column indicates approximate equivalences to Latin script.

comma [U+A9C8 JAVANESE PADA LINGSA]  This is not used after ◌꧀ [U+A9C0 JAVANESE PANGKON​].
sentence [U+A9C9 JAVANESE PADA LUNGSI]. The character [U+A9C8 JAVANESE PADA LINGSA] represents a full stop when used after ◌꧀ [U+A9C0 JAVANESE PANGKON​]

For higher level divisions of the text the following are used.

paragraph Typically begins with [U+A9CB JAVANESE PADA ADEG ADEG].
section ditto
general divider [U+A9CA JAVANESE PADA ADEG] 
parentheses Typically a pair of [U+A9CA JAVANESE PADA ADEG] characters are used.
Alternatively, the pair of characters [U+A9CC JAVANESE PADA PISELEH] and [U+A9CD JAVANESE TURNED PADA PISELEH] may be used.

Titles may be marked by a pair of rerenggan characters, ie. ꧁...꧂. The glyphs for these characters may vary substantially.

Letters may begin with ꧋꧆꧋ if the writer doesn't want to indicate a distinction regarding age or rank between themselves and the reader. Otherwise, for more formal letters, they can choose one of three alternatives provided as single characters in the Javanese Unicode block. [U+A9C5 JAVANESE PADA LUHUR] is used for letters to people of greater age or higher rank, [U+A9C4 JAVANESE PADA MADYA] for people of equal age/rank, and [U+A9C3 JAVANESE PADA ANDAP] for people of lower age/rank. The difference between these three is the height of the swash to the far left.

The end of a letter can be signaled using ꧉꧆꧉. This combination may also involve just ꧆꧉, or may be repeated with spaces between to fill the line, eg. ꧉ ꧆ ꧉ ꧆ ꧉ ꧆ ꧉ .5

In poetry ꧅ꦧ꧀ꦖ꧅ or ꧅ꦧ꧀ꦕ꧅ (purwapada) introduces a poem; ꧅ꦟ꧀ꦢꦿ꧅ (madyapada) introduces a new song within a poem; and ꧅ꦆ꧅ (wasanapada) indicates the end of a poem.

Optionally, [U+A9C9 JAVANESE PADA LUNGSI] can be added to the above with some space around it. The spaces should be non-breaking, since there should be no line-breaks between the constituent parts, eg. ꧅ ꧉ ꦧ꧀ꦖ ꧉ ꧅.5


To draw attention to text Javanese may use a paired set of [U+A9CA JAVANESE PADA ADEG] characters around the relevant text.

The two characters [U+A9CC JAVANESE PADA PISELEH] and [U+A9CD JAVANESE TURNED PADA PISELEH] can be used similarly, or sometimes just [U+A9CC JAVANESE PADA PISELEH] is repeated.


According to Everson [U+A9C8 JAVANESE PADA LINGSA] is used for acronyms, eg. ꧈ꦢꦺ꧈ꦲ꧈ꦌꦭ꧀꧈ DHL.

It is also used after initials in a name, eg. ꦫ꧈ꦩ꧈ꦯꦸꦭꦂꦠ R. M. Sularta.5

Correction marks

According to Wikipedia [U+A9DF JAVANESE PADA ISEN-ISEN] is used in handwriting to indicate a correction in Yogyakarta, eg. where a scribe wanted to write pada luhur but actually wrote pada wu.. they would use this mark as follows: ꦥꦢꦮꦸ꧟꧟꧟ꦭꦸꦲꦸꦂ.

In Yogyakarta they would use the character [U+A9DE JAVANESE PADA TIRTA TUMETES] instead.


Javanese text may use [U+A9CA JAVANESE PADA ADEG] for quotation marks.

Alternatively, the pair of characters [U+A9CC JAVANESE PADA PISELEH] and [U+A9CD JAVANESE TURNED PADA PISELEH] may be used.


A repeated syllable can be represented by [U+A9CF JAVANESE PANGRANGKEP], which is derived from the arabic-indic digit for 2, eg. ꦧꦸꦏꦸꧏ buku-buku books. It can be transcribed as buku2.

For 'ditto' marks in vertical lists, Javanese uses [U+A9C9 JAVANESE PADA LUNGSI] .

Line breaking

Like Tibetan, line breaking can occur after any full orthographic syllable. Hyphenation is not used.

In some printed material, when a new line begins with ◌ꦺ [U+A9BA JAVANESE VOWEL SIGN TALING], an additional spacing one is placed at the end of the previous line.


No information.

Use the control below to see how your browser justifies the text sample here.


Character lists by language

The following is an incomplete list of languages and the number of characters they use. Javanese script doesn't appear in version 31 of CLDR's lists of characters (exemplarCharacters).

Click on the links to see a list of characters with names.


Consonants ꦏ ꦑ ꦒ ꦓ ꦔ ꦕ ꦖ ꦗ ꦛ ꦚ ꦘ ꦠ ꦡ ꦢ ꦝ ꦤ ꦟ ꦥ ꦦ ꦧ ꦨ ꦩ ꦪ ꦭ ꦫ ꦱ ꦯ ꦮ ꦲ ꦰ ꦣ ꦞ ꦙ ꦜ ꦉ ꦊ 36
Medial consonants ꦽ ꦾ ꦿ 3
Diacritics ꦀ ꦁ ꦂ ꦃ ꦳ 5
Independent vowels ꦄ ꦆ ꦈ ꦌ ꦎ 5
Vowel signs ꦶ ꦸ ꦺ ꦼ ꦴ 5
Basic punctuation ꧊ ꧋ ꧌ ꧍ ꧈ ꧉ ꧇ ꧏ 8
Other punctuation ꧁ ꧂ ꧅ ꧄ ꧃ ꧆ 6
Total   68


  1. [Daniels] Peter T. Daniels and William Bright, The World's Writing Systems, Oxford University Press, ISBN 0-19-507993-0, pp477-480
  2. [Unicode] The Unicode Standard v10.0, Javanese, pp661-664.
  3. Wikipedia, Javanese alphabet.
  4. [Teguh] Teguh Budi Sayoga, Proposal for encoding the Javanese Script in the UCS (A900-A97F).
  5. [Everson] Michael Everson, Proposal for encoding the Javanese script in the UCS.
Last commit 2017-08-31 7:07 GMT.  •  Make a comment.  •  Licence CC-By © r12a.