Persian Holidays
Look up official, religious, and cultural Iranian holidays for a single date, a range, or a whole calendar year. Jalali and Gregorian entries resolve to an exact date; Hijri (lunar) entries are resolved with a tabular approximation and flagged approximate: true, since Iran announces religious holidays by moon sighting.
Last updated August 12, 2026
Copied from BaseMax/persian-holidays-api.
- Trimmed the dataset to recurring month/day entries (dropped year-specific fields).
- Converted month names to numeric, 1-indexed month indices.
- Added a tabular Hijri→Gregorian resolution with approximate flagging for lunar entries.
- Added official/includeUnofficial filtering so callers can request only official days off.
Overview
Installation
$ npx shadcn@latest add https://ui.persian-labs.ir/r/persian-holidays.jsonUsage
import { getHolidays, isHoliday } from "@/lib/persian-holidays"
import { today } from "@/lib/persian-date"
const holidays1404 = getHolidays(1404) // Jalali year 1404
const isTodayOff = isHoliday(today())Examples
Lookup a date
isHoliday and getHolidayInfo check whether a specific date is a holiday, and list every matching entry.
Official vs. unofficial
By default only official days off are returned. Pass includeUnofficial: true to also list commemorative occasions.
Calendar grid
getHolidaysInRange over a month's boundaries makes it easy to color holiday cells in a calendar grid.
Hijri approximation
Lunar (hijri) holidays resolve through a tabular approximation and come back with approximate: true — treat these dates as a best-effort estimate, not an announcement.
RTL
Holiday titles are Persian text end-to-end, so this reads naturally inside right-to-left layouts without any extra direction handling.