Indonesia Long Weekends 2027 and Counting Working Days in Code
Indonesia's 2027 long weekends from the official joint decree, bridge days, working days per month (250 or 242), and JavaScript to count them via API.

Indonesia has six long weekends in 2027 that need no extra leave, and the longest runs 10 days in a row from 6 to 15 March 2027 (Nyepi, Eid al-Fitr and collective leave). On a Monday to Friday week, 2027 has 261 weekdays, which drops to 250 working days after public holidays, or 242 if the collective leave days (cuti bersama) are also taken off. All figures are computed from the 26 rows of the official 2027 joint ministerial decree (SKB 3 Menteri) served by API Indonesia.
Source: joint decree of the Minister of Religious Affairs, Minister of Manpower and Minister of State Apparatus No. 1205/2026, No. 3/2026, No. 2/2026, signed 15 September 2026 (KemenPANRB press release): 18 public holidays and 8 collective leave days. Computed 29 October 2026.
Long weekends in 2027 (no leave needed)
| Dates | Length | Why |
|---|---|---|
| Fri 1 to Sun 3 January | 3 days | New Year 2027 |
| Fri 5 to Sun 7 February | 3 days | Collective leave (5 Feb) + Chinese New Year (Sat 6 Feb) |
| Sat 6 to Mon 15 March | 10 days | Nyepi (8), collective leave (9), Eid al-Fitr (10-11), collective leave (12 and 15) |
| Thu 25 to Sun 28 March | 4 days | Collective leave (25), Good Friday (26), Easter (28) |
| Sat 15 to Thu 20 May | 6 days | Eid al-Adha (17), collective leave for Eid al-Adha (18) and Vesak (19), Vesak (20) |
| Fri 24 to Sun 26 December | 3 days | Collective leave (24), Christmas (25), Isra Mi'raj 1449 AH (26) |
Bridge days: take one day off
| Day off | Resulting break | Total |
|---|---|---|
| Mon 4 January | 1 to 5 January (Isra Mi'raj on Tue 5 Jan) | 5 days |
| Fri 7 May | 6 to 9 May (Ascension Day Thu 6 May) | 4 days |
| Fri 21 May | 15 to 23 May | 9 days |
| Mon 31 May | 29 May to 1 June (Pancasila Day on Tue) | 4 days |
| Mon 16 August | 14 to 17 August (Independence Day on Tue) | 4 days |
Seven 2027 public holidays fall on a weekend: Chinese New Year (6 Feb), Easter (28 Mar), Labour Day (1 May), Islamic New Year (6 Jun), the Prophet's Birthday (15 Aug), Christmas (25 Dec) and Isra Mi'raj 1449 AH (26 Dec).
Working days per month in 2027 (Monday to Friday)
| Month | Weekdays | Public holidays on weekdays | Collective leave | Working days (leave days worked) | Working days (leave days off) |
|---|---|---|---|---|---|
| January | 21 | 2 | 0 | 19 | 19 |
| February | 20 | 0 | 1 | 20 | 19 |
| March | 23 | 4 | 4 | 19 | 15 |
| April | 22 | 0 | 0 | 22 | 22 |
| May | 21 | 3 | 2 | 18 | 16 |
| June | 22 | 1 | 0 | 21 | 21 |
| July | 22 | 0 | 0 | 22 | 22 |
| August | 22 | 1 | 0 | 21 | 21 |
| September | 22 | 0 | 0 | 22 | 22 |
| October | 21 | 0 | 0 | 21 | 21 |
| November | 22 | 0 | 0 | 22 | 22 |
| December | 23 | 0 | 1 | 23 | 22 |
| Total | 261 | 11 | 8 | 250 | 242 |
For private employers, collective leave follows company policy and is usually deducted from annual leave, which is why both columns are shown.
Counting working days in code
Fetch the year's holidays once, keep them in a Set, then count Monday to Friday dates that are not in it.
curl "https://use.apiindonesia.id/api/v1/libur?tahun=2027" \
-H "x-api-key: YOUR_API_KEY"
async function holidaySet(year, { collectiveLeaveOff = true } = {}) {
const r = await fetch(`https://use.apiindonesia.id/api/v1/libur?tahun=${year}`, {
headers: { 'x-api-key': process.env.API_INDONESIA_KEY },
});
const { data } = await r.json();
return new Set(
data.filter((h) => collectiveLeaveOff || !h.is_joint_leave).map((h) => h.date)
);
}
function workingDays(from, to, holidays) {
let n = 0;
for (let d = new Date(from + 'T00:00:00Z'); d <= new Date(to + 'T00:00:00Z'); d.setUTCDate(d.getUTCDate() + 1)) {
const dow = d.getUTCDay();
if (dow !== 0 && dow !== 6 && !holidays.has(d.toISOString().slice(0, 10))) n++;
}
return n;
}
const holidays = await holidaySet(2027);
console.log(workingDays('2027-03-01', '2027-03-31', holidays)); // 15
The same function covers delivery SLAs ("3 working days"), invoice due dates and prorated salaries. For payroll, pair it with the minimum wage (UMP) API.
Tips:
- Call once per year and cache. A year of holidays is only 26 rows.
- Keep collective leave separate. Use
is_joint_leaveortype: "cuti_bersama"so each company's policy can be configured. - Iterate dates in UTC so results don't shift with the server's timezone.
The response fields are in Indonesian (date, name, type, is_joint_leave, source). More on the endpoint in Indonesia public holidays API for HR and payroll.
FAQ
How many working days are there in Indonesia in 2027? 250 on a Monday to Friday week after the 11 public holidays that fall on weekdays. If the 8 collective leave days are also off, 242.
When is the longest long weekend in 2027? 6 to 15 March 2027, 10 consecutive days, because Nyepi, Eid al-Fitr 1448 AH and collective leave fall together.
Can the Eid dates change? Yes. The decree says Islamic holiday dates follow the Ministry of Religious Affairs' isbat decision. If they change, the API data is updated and the counts follow.
What about a Monday to Saturday week?
Change the check to exclude only Sundays (dow !== 0). The holiday data stays the same.
Get started
Sign up at dashboard.apiindonesia.id/register for an API key and a one-time bonus of 3,000 credits. Each successful request costs 2 credits (Rp2), failed requests are free.
