Holidays
Full list 2026: 17 national holiday, 8 collective leave
- 1 JanuaryNew Year's Day
- 16 JanuaryIsra Mi'raj of the Prophet Muhammad
- 16 FebruaryChinese New Year
- 17 FebruaryChinese New Year
- 18 MarchDay of Silence (Nyepi)
- 19 MarchDay of Silence (Nyepi)
- 20 MarchEid al-Fitr
- 21 MarchEid al-Fitr
- 22 MarchEid al-Fitr
- 23 MarchEid al-Fitr
- 24 MarchEid al-Fitr
- 3 AprilGood Friday
- 5 AprilEaster Sunday
- 1 MayInternational Labour Day
- 14 MayAscension Day
- 15 MayAscension Day
- 27 MayEid al-Adha
- 28 MayEid al-Adha
- 31 MayVesak Day
- 1 JunePancasila Day
- 16 JuneIslamic New Year
- 17 AugustIndependence Day
- 25 AugustProphet Muhammad's Birthday
- 24 DecemberChristmas Day
- 25 DecemberChristmas Day
Full list 2027: 18 national holiday, 8 collective leave
- 1 JanuaryNew Year's Day
- 5 JanuaryIsra Mi'raj of the Prophet Muhammad
- 5 FebruaryChinese New Year
- 6 FebruaryChinese New Year
- 8 MarchDay of Silence (Nyepi)
- 9 MarchEid al-Fitr
- 10 MarchEid al-Fitr
- 11 MarchEid al-Fitr
- 12 MarchEid al-Fitr
- 15 MarchEid al-Fitr
- 25 MarchGood Friday
- 26 MarchGood Friday
- 28 MarchEaster Sunday
- 1 MayInternational Labour Day
- 6 MayAscension Day
- 17 MayEid al-Adha
- 18 MayEid al-Adha
- 19 MayVesak Day
- 20 MayVesak Day
- 1 JunePancasila Day
- 6 JuneIslamic New Year
- 15 AugustProphet Muhammad's Birthday
- 17 AugustIndependence Day
- 24 DecemberChristmas Day
- 25 DecemberChristmas Day
- 26 DecemberIsra Mi'raj of the Prophet Muhammad
National holidays and collective leave come from the joint ministerial decrees (SKB 3 Menteri) for each year, including every amendment, plus presidential decrees that added election days. Coverage is 2020 to 2027 and grows as new decrees are published.
Functions
Section titled “Functions”| Go | TypeScript | Returns |
|---|---|---|
holiday.Years() |
holiday.years() |
{ from, to }: the covered years |
holiday.InYear(year) |
holiday.inYear(year) |
All entries in a year, by date |
holiday.Between(from, to) |
holiday.between(from, to) |
Entries in an inclusive date range |
holiday.On(date) |
holiday.on(date) |
Entries on one date (usually zero or one) |
Dates are strings in YYYY-MM-DD format, never Date objects, so time zones cannot shift them.
Holiday fields
Section titled “Holiday fields”| Field (JSON) | Example | Notes |
|---|---|---|
date |
2026-08-17 |
|
kind |
national |
national or collective_leave |
name |
Proklamasi Kemerdekaan |
Indonesian name from the decree |
nameEn |
Independence Day |
English name |
basis |
SKB 1497/2/5 Tahun 2025 |
The decree the entry comes from |
Errors
Section titled “Errors”date (not a YYYY-MM-DD date), range (a year without data, or from after to).
Example
Section titled “Example”package main
import ( "fmt"
"github.com/haikalmumtaz233/nusaindex/holiday")
func main() { coverage := holiday.Years() fmt.Println(coverage.From, coverage.To)
all, err := holiday.InYear(2026) if err == nil { fmt.Println(len(all), all[0].Date, all[0].NameEN) }
august, err := holiday.Between("2026-08-01", "2026-08-31") if err == nil { for _, h := range august { fmt.Println(h.Date, h.Kind, h.Name) } }
christmas, err := holiday.On("2026-12-25") if err == nil { fmt.Println(len(christmas), christmas[0].Basis) }}import * as holiday from "nusaindex/holiday";
const coverage = holiday.years();console.log(coverage.from, coverage.to);
const all = holiday.inYear(2026);if (all.ok) { console.log(all.value.length, all.value[0]?.date, all.value[0]?.nameEn);}
const august = holiday.between("2026-08-01", "2026-08-31");if (august.ok) { for (const h of august.value) { console.log(h.date, h.kind, h.name); }}
const christmas = holiday.on("2026-12-25");if (christmas.ok) { console.log(christmas.value.length, christmas.value[0]?.basis);}2020 202725 2026-01-01 New Year's Day2026-08-17 national Proklamasi Kemerdekaan2026-08-25 national Maulid Nabi Muhammad S.A.W.1 SKB 1497/2/5 Tahun 2025© 2026 Haikal Mumtaz