The Sinhala script is used for writing the Sinhala language, spoken by approximately 15,500,000 people in Sri Lanka, and for transcribing the ancient Pali and Sanskrit languages. The script is derived from Brahmi, and shows close similarities to the Grantha script which was used in southern India until the 16th century. Sinhala is a diglossic language, that is, the spoken and written forms of the language show considerable variation. The main differences are that retroflex [ɭ] and [ɳ] are represented in writing but have assimilated to alveolar [l] and [n] in speech, that three vowel sounds [ə], [a] and [ā] are represented by only two letters, the pronunciation of which is generally predictable from a set of contextual rules, and that there are two letters transcribed ṣ and ś but both pronounced [ʃ]. Additionally, spelling conventions do not always reflect current pronunciation.

There are two forms of the Sinhala script. The standard, 'pure', form which is taught in schools is called eḷu hōḍiya or śuddha hōḍiya. This system contains twenty consonant and twenty vowel letters and can be used to represent the sounds of the spoken language almost perfectly. However, to adhere to current spelling conventions - some of which represent archaic pronunciations - and to accurately transcribe Sanskrit, Pali, Hindi and English loanwords, a wider set of letters is needed. This set is called 'mixed alphabet' miśra hōḍiya and contains an additional eighteen consonant letters, many of which are aspirated equivalents of existing letters.

The Sinhala script is an abugida. Each letter represents a consonant+vowel syllable, with the vowel 'a' being inherent in each syllable. This vowel can be changed by means of diacritics written above, below, to the left or to the right of the base consonant, or in a combination of positions. Examples of vowel diacritics with the consonant m are shown below:

There are two additional diacritic marks, both called hal kirīma which can be written above a consonant letter to silence the vowel altogether. The selection of one hal kirīma over the other is determined by the shape of the consonant letter. The hal kirīma with p and b respectively is shown in red below:

Vowels which occur at the start of a word, so not preceded by a consonant, are written with independent vowel letters. Unusually for Indian languages, Sinhala has distinct signs (short and long) for the low front vowel [æ].

Spoken Sinhala is different from most Indian languages in that it uses a set of prenasalized stops which are distinct from nasal+stop combinations, and are represented differently in writing. So there is a single letter for representing the prenasalized sound [ɳɖ] in the word [aɳɖa] 'sound', but in the word [aɳɖa] 'egg', the ɳ and the ɖ are written using two separate letters.

There are some conjunct letters for writing consonant clusters, including  geminates (long consonants). Generally, these are formed by attaching a full form of the second letter to a truncated form of the first. Some conjuncts are used which are not so easily decomposable into their parts. Special conjunct symbols also exist for combining r either before or after another consonant, and for combining y after a consonant. The hal kirīma sign can also be used to write two consecutive consonants with no intermediate vowel.

A set of Sinhala digits existed, representing numbers 0-9, multiples of 10 up to 100, and the number 1000. However, these are no longer used, having been replaced by Latin digits. The old Sinhala punctuation mark kunddaliya, which was previously used as a full stop, has also been supplanted by the Latin punctuation set.