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

CreditsModifiedPublished

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.json

Usage

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.

API Reference

persian-holidays

GetHolidaysOptions

ResolvedHoliday

Low-level Hijri helpers