Kavi is the oldest script of Javanese language, and is derived from the Indic Brahmi. A more recent script was Jawi. These scripts were used in the Singhasari kingdom of Java. The more recent scripts were extant in the Majapahit Empire of Java, Bali, Borneo and Sumatra.

The scripts are abugida which represent a syllable ending in a vowel, just as in the Sanskrit of Vedic times and Pali of Theravada times, thus annotation (virama) is needed to represent a pure consonant.

Kavi influenced baybayin in the Philippines.