Holidays

Netherlands Public Holidays Calculator

The Netherlands' public holidays for any year, calculated live from the actual rules.

King's Day's one weekend-shift rule

King's Day is fixed at April 27 — except in the specific case where the 27th falls on a Sunday, when it shifts to April 26 instead (this happened in 2014, and won't happen again until 2036 given the calendar cycle). It's a narrower, more specific rule than most countries' general weekend-substitution systems, applying to exactly one holiday and one weekend day.

Liberation Day: a holiday most people don't actually get off

May 5th (Liberation Day) is only a mandatory paid day off for public-sector employees every year; for most private-sector workers, it's a full public holiday only once every five years (on the "lustrum" years, most recently 2025), leaving it as a working day the other four years even though it's marked as a national holiday.

Related

Related tools

function computeEaster(year){ const a = year % 19; const b = Math.floor(year/100); const c = year % 100; const d = Math.floor(b/4); const e = b % 4; const f = Math.floor((b+8)/25); const g = Math.floor((b-f+1)/3); const h = (19*a + b - d - g + 15) % 30; const i = Math.floor(c/4); const k = c % 4; const l = (32 + 2*e + 2*i - h - k) % 7; const m = Math.floor((a + 11*h + 22*l)/451); const month = Math.floor((h + l - 7*m + 114)/31); const day = ((h + l - 7*m + 114) % 31) + 1; return new Date(Date.UTC(year, month-1, day)); } function netherlandsHolidays(year){ const easter = computeEaster(year); const easterMonday = new Date(easter); easterMonday.setUTCDate(easter.getUTCDate()+1); const ascension = new Date(easter); ascension.setUTCDate(easter.getUTCDate()+39); const whitMonday = new Date(easter); whitMonday.setUTCDate(easter.getUTCDate()+50); let kingsDay = new Date(Date.UTC(year,3,27)); if(kingsDay.getUTCDay() === 0) kingsDay = new Date(Date.UTC(year,3,26)); const raw = [ ['New Year\'s Day', new Date(Date.UTC(year,0,1))], ['Good Friday', new Date(easter.getTime()-2*86400000)], ['Easter Monday', easterMonday], ['King\'s Day', kingsDay], ['Liberation Day (full holiday every 5 years)', new Date(Date.UTC(year,4,5))], ['Ascension Day', ascension], ['Whit Monday', whitMonday], ['Christmas Day', new Date(Date.UTC(year,11,25))], ['Boxing Day (2e Kerstdag)', new Date(Date.UTC(year,11,26))], ]; return raw.map(([name,date]) => ({name, date})); } const now = new Date(); for(let y = now.getFullYear()-1; y <= now.getFullYear()+3; y++){ const opt = document.createElement('option'); opt.value = y; opt.textContent = y; if(y === now.getFullYear()) opt.selected = true; document.getElementById('hlYear').appendChild(opt); } const yearSelect = document.getElementById('hlYear'); const table = document.getElementById('hlTable'); function fmt(d){ return d.toLocaleDateString('en-US',{weekday:'short', month:'long', day:'numeric'}); } function render(){ const year = parseInt(yearSelect.value,10); const rows = netherlandsHolidays(year); table.innerHTML = rows.map(r => `
${r.name}${fmt(r.date)}
`).join(''); } yearSelect.addEventListener('change', render); render();