Leap years in the Persian and Gregorian calendars
Both the Gregorian (Miladi) and the Persian Solar Hijri (Shamsi or Jalali) calendars add an extra day every few years to keep the calendar aligned with the seasons. They do it in different ways, and understanding the difference explains two dates that often confuse people: 30 Esfand in the Persian calendar and 29 February in the Gregorian calendar.
The Gregorian leap-year rule
The Gregorian rule is purely arithmetic and easy to state:
- A year is a leap year if it is divisible by 4.
- Except years divisible by 100, which are not leap years.
- Except years divisible by 400, which are leap years.
So 2024 is a leap year (divisible by 4), and 2000 was a leap year (divisible by 400). But 1900 and 2100 are not, because they are divisible by 100 but not by 400. In a Gregorian leap year, February gains a 29th day.
The Persian leap-year rule
The Persian calendar keeps the year tied to the spring equinox, so its leap years do not follow the simple Gregorian formula. This converter uses the jalaali-js library, which applies the well-established 33-year arithmetic cycle. Across each cycle, eight years are leap years, distributed so that the calendar stays in step with the seasons over the long term.
In a Persian leap year, the last month, Esfand, gains a 30th day. In an ordinary year Esfand has 29 days; in a leap year it has 30. That is why a date such as 30 Esfand 1399 only exists in leap years, and 30 Esfand 1399 corresponds to 20 March 2021.
Persian month lengths
| Months | Days |
|---|---|
| Farvardin, Ordibehesht, Khordad, Tir, Mordad, Shahrivar | 31 |
| Mehr, Aban, Azar, Dey, Bahman | 30 |
| Esfand (ordinary year) | 29 |
| Esfand (leap year) | 30 |
The year begins on Nowruz (1 Farvardin), which falls around 20–21 March. For more detail on each month, see the guide to the Persian months.
Recent Persian leap years
Both 1399 and 1403 are leap years, so each had a 30 Esfand. Because Persian leap years follow the 33-year cycle rather than a fixed every-fourth-year pattern, the gap between leap years is not always four years. The safest approach is never to assume: enter the date into the converter and it will tell you whether the date is valid.
Why this matters for conversion
A leap day in one calendar does not line up with a leap day in the other. For example, 30 Esfand 1399 maps to 20 March 2021, an ordinary day in the Gregorian calendar. This is exactly the kind of edge case where doing the maths by hand goes wrong.
The converter handles it for you. It validates each date by construction: a date is accepted only if both calendars agree it exists and the matching year falls within the supported range (Jalali years 1–1700 and Gregorian years 622–2322). The result is cross-checked against the browser's built-in Intl Persian calendar. If you type a non-existent date such as 30 Esfand in an ordinary year, the converter rejects it rather than guessing.
All of this runs entirely in your browser, with no server and no network call for the conversion itself. It also works offline once installed — see the offline and install guide. If you are checking a birthday or an official document, the birth-date guide and the list of common mistakes may also help.
← Open the converter