The Gujarati script is used for writing the Gujarati and Chodri languages, together spoken by almost 47 million people. It is also used alongside the Devanagari script for writing a number of languages used by the Bhil people, one of India's largest indigenous groups. The script is related to Devanagari, with modifications to some of the letters, and without the headstroke which characterizes most of the Nagari scripts. The loss of the headstroke reflects the script's origins in informal writing; until the mid-19th century it was used primarily for bookkeeping and personal correspondence, but since printing facilities have become widely available to Gujarati speakers the script is used in schools, for printing books and newspapers, in government offices and public signage, and is one of the official scripts of India.

Gujarati is written from left to right. It is an abugida, that is, every consonant letter contains an inherent vowel. There are forty-five basic symbols; thirty-four consonants and eleven vowels. Despite the loss of the headstroke, letters are still aligned as from a hanging  baseline.

Ten of these vowels have two forms, an independent form for use when the vowel is not preceded by a consonant and a diacritic form which is written above, below or alongside a preceding consonant to modify the inherent vowel. One vowel, 'a' [ə], only has an independent form; this is the vowel which is inherent in a consonant letter, so does not need to be written separately when following a consonant. Vowels are classified as 'short' hrasva or 'long' dīrgha according to the weight they historically assigned to syllables in traditional verse. The syllabic consonant [r̩u] is grouped with the short vowels. Four of the 'long' vowel symbols represent diphthongs. These are written in their full forms by using the 'a' letter as a vowel carrier and modifying it with diacritics.

Consonants are ordered according to the principles of articulatory phonetics, that is, the place and manner in which they are articulated. In sequence, the consonant subgroups by place are: velar, palatal, retroflex, dental and labial. Within each subgroup, consonants are ordered by manner, beginning with unaspirated voiceless, followed by aspirated voiceless, unaspirated voiced, aspirated voiced, and nasal. The first twenty-three consonants are ordered in this way. Following these are four sonorants, three sibilants, ha, ḷa and two conjuncts kṣa and jña.

There are many other conjunct symbols used in Gujarati writing. Many consonant letters are written with a vertical line on their right side. The general rule for writing conjuncts is that those letters lose the vertical line in initial or medial position and only the last letter in the cluster retains it. Letters which are not written with a vertical line in their isolated form are represented using special conjuncts when they are part of a consonant cluster. The letter sa takes a variant form when followed by any of the letters va, la, na, ra or ca. Special conjunct forms also exist for combinations of ha with ya, ma or ra, and for combinations of da with ya, va, dha or ma. The  geminates (long consonants) ṭṭa, ṭhṭha, ḍḍa, ḍhḍha ṭṭha and ḍḍha combine in vertical stacks.

The letter ra takes three variant forms depending whether it precedes another consonant, or follows one of the letters ṭa, ṭha or ḍa, or follows another consonant.

Special conjunct forms also exist for combinations of ra with ha, da, ta, u and ū.

There are three non-alphabetic diacritics. A virama symbol is a slanted stroke written below consonants to silence the inherent vowel therein. So ટ represents [ʈə] but ટ્ represents [ʈ]. Consonants which have been marked in this way are called khoḍo 'lame'. Consonant clusters not covered by the conjuncts noted above can be represented using this symbol. There is also a visarga symbol written as two vertically stacked dots, a relic of Sanskrit phonology which has no phonetic content in Gujarati writing and is rarely used. The third symbol, anusvara, is written as a dot centrally above a letter and has two related functions. It can either nasalize a vowel as in the word [hũ] 'I', or represent a nasal consonant pronounced at the same place in the mouth as the following consonant as in the word [rəŋg] 'colour'. In Latin transcription, anusvara is represented by the letter ṃ.

Gujarati writing is essentially phonetic, with some exceptions as follows: Conjuncts are not always used to write consonant clusters at a morpheme break. For example the word કાતરે ka+ta+re, meaning '(he) carves' is pronounced [katre], even though the full form of ta is used, rather than a ta + ra conjunct. The full forms of both ta and re are used, rather than the tre conjunct, because the consonant cluster crosses the morpheme boundary between person and verb. Murmured vowels (the vocalic equivalent of aspirated consonants) are not represented in writing despite being distinctive in speech. The same sometimes applies to the open/close vowel distinction; the same letters were traditionally used for [e] and [æ], and for [o] and [ɔ]. In recent years, however, it has become more common to represent [æ] and [ɔ] by inverting the diacritics for [e] and [o] respectively, particularly in English loan words.