Holidays

India Public Holidays Calculator

India's national holidays for any year — a short, fixed list, since most religious and regional observances are deliberately left to individual states.

Only three truly national holidays

India officially designates just three "national holidays" observed uniformly across every state: Republic Day, Independence Day, and Gandhi Jayanti. That's a deliberately short list for a country of India's religious and cultural diversity — nearly everything else (Diwali, Eid, Holi, Christmas, and dozens of regional and state-specific observances) is classified as a "gazetted holiday," officially declared each year but not uniform nationwide.

Why the rest varies so much by state

Each state government publishes its own list of gazetted and "restricted" holidays annually, reflecting the dominant religious and cultural makeup of that specific state — which is why an employee in Kerala and one in Punjab can have almost entirely different holiday calendars for the same year, aside from these three shared national dates. See Diwali Dates and the Islamic holiday estimator for two of the most widely observed gazetted holidays specifically.

Related

Related tools

function indiaHolidays(year){ const raw = [ ['Republic Day', new Date(Date.UTC(year,0,26))], ['Independence Day', new Date(Date.UTC(year,7,15))], ['Gandhi Jayanti', new Date(Date.UTC(year,9,2))], ]; 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 = indiaHolidays(year); table.innerHTML = rows.map(r => `
${r.name}${fmt(r.date)}
`).join(''); } yearSelect.addEventListener('change', render); render();