Persian words and sentences run from right to left, but not every item inside a Persian line reverses. Numbers keep their own internal order, and a Latin expression such as an email address remains left to right. Learning to separate reading direction, character storage order, and screen layout prevents most early confusion.
These principles are register-neutral: the same direction rules apply in a novel (literary), a government form (formal), a university article (academic), and a text message (informal). What changes across registers is vocabulary and style, not the underlying direction of the script.
Start at the right edge
The first Persian word of a normal line appears at the right. Continue leftward word by word. Within each word, the first letter is likewise the rightmost letter. Thus کتاب ketâb is logically the sequence ک + ت + ا + ب, even though the completed word occupies space from right toward left.
کتاب اینجاست.
ketâb injâst.
The book is here.
من فارسی میخوانم.
man fârsi mi-khânam.
I study Persian.
In the second example, begin with من at the right, then فارسی, then میخوانم, and finally the period at the left edge. English readers often move their eyes correctly over a Persian word but then jump back to the wrong side for the next word. Keep one consistent right-to-left sweep across the whole clause.
Logical order is not visual order
Computers store text in logical order: the order in which the characters are read. You type ک first, then ت, then ا, then ب. A Unicode-aware program applies the bidirectional algorithm and displays the word right to left. You should never type the last visible letter first to compensate for the screen.
This distinction matters when moving a cursor. Depending on the editor, the visual left and right arrow keys may follow screen position, while deletion acts on the next logical character. Selection can also look discontinuous when a line contains both Persian and Latin. That is layout behavior, not a reversal of the stored Persian word.
| Intended text | Logical input sequence | What the renderer supplies |
|---|---|---|
| کتاب | ک, then ت, then ا, then ب | Right-to-left placement and contextual joining |
| سلام | س, then ل, then ا, then م | The displayed cursive word |
The same principle explains letter shapes. A font chooses an isolated, initial, medial, or final glyph from the neighboring characters; the typist enters the basic letter once. The joining forms page shows how this works.
سلام، حال شما چطور است؟
salâm, hâl-e shomâ chetor ast?
Hello, how are you?
Punctuation follows the Persian line
Sentence-final punctuation belongs at the visual left end of a Persian sentence. Persian uses ؟ for a question mark and ، for a comma. A full stop has the familiar shape ., but its location follows the right-to-left sentence. The Persian semicolon is ؛.
چای میخواهید یا قهوه؟
chây mi-khâhid yâ qahve?
Would you like tea or coffee?
نان، پنیر و میوه خریدیم.
nân, panir va mive kharidim.
We bought bread, cheese, and fruit.
The romanization is an English-direction reading aid, so it uses an ordinary comma and question mark. That does not license those Latin punctuation marks inside Persian target text. A dedicated Persian punctuation page covers typography in more depth.
Numbers are left-to-right islands
Persian sentences flow right to left, while the digits inside a multi-digit number keep their familiar place-value order. In ۱۴۰۵, the thousands digit ۱ remains the first digit of the number; you read the numeral as one left-to-right unit embedded in the larger right-to-left line. Do not reverse the digits when typing.
جلسه ساعت ۱۰ شروع میشود.
jalase sâ'at-e dah shoru' mi-shavad.
The meeting starts at ten o'clock.
شمارهی اتاق ۲۱۴ است.
shomâre-ye otâq-e devist-o-chahârdah ast.
The room number is 214.
Punctuation around a number can make cursor behavior surprising, especially with parentheses or a colon. Read the whole number as an island, then resume the Persian line to its left. Persian target text uses Persian digits ۰۱۲۳۴۵۶۷۸۹ (written-standard); the separate Persian digits page teaches their shapes and naming.
Latin text inside a Persian line
Latin words, model numbers, URLs, and email addresses also form left-to-right islands. In an HTML page or modern editor, Unicode normally lays them out automatically. For example, the logical string represented below begins with the Persian word on the right, contains an LTR product name, and then resumes Persian:
| Mixed line | How to scan it |
|---|---|
| نسخهی PDF آماده است. | Read Persian to PDF, read PDF left to right, then resume Persian. |
| مدل X200 موجود است. | Keep X200 internally left to right. |
| به info@example.com ایمیل بزنید. | Read the address as one left-to-right island. |
Mixed text can look different when copied into a weak editor because neutral characters—spaces, parentheses, slashes, hyphens, and punctuation—take their direction from context. The underlying character order may still be correct. Avoid “fixing” a display problem by reversing letters or adding random spaces. In publishing or software, direction-aware markup provides the reliable solution.
Spaces, ZWNJs, and visible gaps
A visible gap does not always mean “new word.” An ordinary space is a true word boundary. A ZWNJ, or half-space, is an invisible code point that prevents joining inside one orthographic word, as in میروم and خانهها. Finally, one of the seven non-connecting letters can create a visible gap inside a word without any space character at all.
او هر روز به دانشگاه میرود.
u har ruz be dâneshgâh mi-ravad.
He or she goes to the university every day.
The gap inside دانشگاه after a non-connecting letter is not a boundary; the ZWNJ in میرود is a controlled internal boundary; the spaces around به separate words. Their appearance may be similar, but their data and grammatical roles differ. See The Seven Non-Connecting Letters before using appearance alone to divide words.
Common Mistakes
1. Entering a word backward to make it “look RTL”
❌ ملاس
Incorrect for salâm: the letters were entered in reverse logical order.
✅ سلام!
salâm!
Hello!
2. Entering sentence-final punctuation before the sentence
❌ .علی دیروز آمد
Incorrect logical order: the full stop was entered before the sentence.
✅ علی دیروز آمد.
Ali diruz âmad.
Ali came yesterday.
3. Reversing the digits of an embedded number
❌ کلاس ساعت ۰۱ شروع میشود.
Incorrect for ten o'clock: ۰۱ represents 01, not 10.
✅ کلاس ساعت ۱۰ شروع میشود.
kelâs sâ'at-e dah shoru' mi-shavad.
The class starts at ten o'clock.
4. Using a Latin question mark in Persian text
❌ شما کجا هستید?
Incorrect Persian typography: the question mark is the Latin form.
✅ شما کجا هستید؟
shomâ kojâ hastid?
Where are you?
5. Treating every visible gap as a space
❌ من به دا نشگاه میروم.
Incorrect: the natural gap after alef in dâneshgâh is not a word boundary.
✅ من به دانشگاه میروم.
man be dâneshgâh mi-ravam.
I go to the university.
Key Takeaways
- Read Persian lines from the right edge toward the left, and type letters in logical reading order.
- Fonts handle visual reordering and contextual joining; do not reverse the stored letters yourself.
- Persian punctuation follows the RTL sentence, while numbers and Latin strings are internally LTR islands.
- A visual gap may come from a space, a ZWNJ, or a non-connecting letter; those are three different structures.
Now practice Farsi
Reading grammar gets you part of the way. The exercises are where it sticks — free, no signup needed.
Start learning Farsi →Related Topics
- Persian Script: What the Abjad RecordsA1 — Learn what Persian spelling writes explicitly, what it normally leaves unmarked, and how readers recover the intended word.
- Joining Forms: Isolated, Initial, Medial, FinalA1 — Learn why one Persian letter changes shape according to its cursive connections and how fonts choose each form.
- The Seven Non-Connecting LettersA1 — Recognize alef, dâl, zâl, re, ze, zhe, and vâv as letters that break the following cursive join inside Persian words.
- Persian Punctuation: ، ؛ ؟ and MoreA2 — Use Persian commas, semicolons, question marks, quotation marks, and brackets correctly in right-to-left text.
- Persian Digits ۰۱۲۳۴۵۶۷۸۹A2 — Read and type Persian digits, keep multi-digit numbers in place-value order, and use Persian decimal and thousands separators.