One day is added to the calendar every four years, except when it is not. The rule has a few surprising exceptions, and they exist because a year is not an exact number of days. Here is the full story.
The problem: a year is not a whole number of days
The Earth takes about 365.2422 days to go around the sun, measured from one spring equinox to the next. A calendar year of 365 days is therefore almost a quarter of a day too short. After four years the calendar would be nearly a whole day ahead of the seasons, and after a century about 24 days.
Adding an extra day every fourth year fixes most of the drift. This gives an average year length of 365.25 days, which is close, but not close enough.
The Julian calendar
Julius Caesar introduced the leap day in 45 BC with the Julian calendar. Every fourth year had an extra day, and the average year was exactly 365.25 days. The difference from the real year, about 11 minutes, seems small, but it adds up to a day every 128 years.
By the 16th century, the calendar was about ten days off. The spring equinox fell around March 11 instead of March 21, which was a problem for the church because Easter is tied to the equinox.
The Gregorian calendar and the 400-year rule
In 1582 Pope Gregory XIII introduced a reform. Ten days were removed from the calendar, so that Thursday, October 4 was followed by Friday, October 15, and the leap year rule was changed. The rule is now:
- A year divisible by 4 is a leap year,
- except that a year divisible by 100 is not a leap year,
- except that a year divisible by 400 is a leap year again.
So 1900 was not a leap year, but 2000 was. 2100, 2200 and 2300 will not be leap years, and 2400 will be. This skips three leap days every 400 years, which gives 97 leap years in 400 and an average year of 365.2425 days.
How accurate is the calendar now?
The Gregorian average of 365.2425 days is very close to the true 365.2422. The difference is about 27 seconds a year, which adds up to a single day in roughly 3,000 years. Nobody has settled how to correct that, and there is plenty of time to decide.
Remember that the actual length of the year also changes slightly over time, so no fixed rule can be perfect forever.
When different countries switched
The reform was adopted gradually. Catholic countries such as Italy, Spain and Portugal changed in 1582. Denmark and Norway changed in 1700, when February 18 was followed by March 1. Sweden had a strange transition between 1700 and 1753, and Britain and its colonies changed in 1752, skipping from September 2 to September 14. Russia changed in 1918 after the revolution, and Greece in 1923.
That is why historical dates are sometimes given in two ways, as Old Style and New Style, and why you may see two dates for the same event.
The next leap years
Leap years from the current period are 2028, 2032, 2036, 2040 and 2044. February 29 will fall on a Tuesday in 2028 and on a Sunday in 2032. The year 2100 is a century year not divisible by 400, so it will not be a leap year, and many programs and spreadsheets get this rule wrong even today.
To check a year yourself, divide it by 4. If it divides, look at whether it is a century year, and if so divide by 400.
Born on February 29
About one person in 1,461 is born on a leap day. These people, known as leaplings or leapers, celebrate their birthday on February 28 or March 1 in common years. Legal systems differ on which date counts as their birthday, for instance for driving licenses and voting age.
There are even clubs for leap-day babies, and the number of actual birthdays can be a point of humor: someone born on February 29, 2000 has had only six true birthdays by 2024, although they are 24 years old.
Leap years in software
Leap years are a classic source of programming errors. A program that only tests whether the year is divisible by 4 will treat 2100 as a leap year and add a day that does not exist. Date errors on February 29 have caused outages in payment systems and travel booking in the past.
The tools on this site follow the full rule, so you can use them to check dates, count days between two dates or find the day of the week for any date.