Why do festival dates change every year?
Hindu festivals follow the lunar calendar (tithis), which does not line up with the solar English calendar.
Most Hindu festivals are fixed by tithi, the lunar day. A tithi is the time it takes the Moon to move 12 degrees ahead of the Sun, so there are 30 tithis in a lunar month — 15 in the bright half (śukla pakṣa) and 15 in the dark half (kṛṣṇa pakṣa). A tithi can be shorter or longer than a day, and it can begin at any hour.
Twelve lunar months make about 354 days, roughly 11 days shorter than the solar year. So a festival like Dīpāvalī (Kārtika Amāvasyā) shifts earlier by about 11 days each year, until an extra month (Adhik Māsa) is added and it jumps later again. This keeps the festivals in their seasons over the long run.
A few festivals follow the Sun instead, such as Makara Saṅkrānti (around 14–15 January), which is why its date is almost fixed. Our Today page shows the current tithi and upcoming festivals.
Source: Sūrya Siddhānta; pañcāṅga practice · Lunar year ≈ 354 days
Dharma Q&A — vratas, festivals & temples · Ask a Jyotishi your own question