CalcOpenly

Leap year checker

Leap year checker: whether a year has 366 days under the Gregorian rule, which test decides it, and the previous and next leap years.

Updated Checked against 5 worked examples

Try
Result
Common year
Result: Common year
Rule that decides it
Not divisible by 4
Days in the year
365
Days in February
28
Previous leap year
2024
Next leap year
2028

2026 is a common year (not divisible by 4), so February has 28 days. The previous leap year is 2024 and the next is 2028; the Gregorian rule gives 97 leap years every 400 years.

Leap years 2017–2040 shaded, 2026 outlined

201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040
How it's calculated S
  1. Divisible by 4?

    2026 mod 4=22026 \bmod 4 = 2

    No year entered, so this checks the current year, 2026.

    No — a common year.

  2. Divisible by 100?

    2026 mod 100=262026 \bmod 100 = 26

    No — the century rule doesn't apply.

  3. Divisible by 400?

    2026 mod 400=262026 \bmod 400 = 26

    No.

About the leap year checker

Under the Gregorian rule a year is a leap year if it is divisible by 4, except century years, which are leap years only if they are also divisible by 400. The checker applies the three tests in order, reports the one that decides, and gives the days in the year and in February and the nearest leap years either side.

Century years are where the rule catches people out. 1900 was a common year because it is divisible by 100 but not by 400, while 2000 was a leap year because it is divisible by 400. The next skipped year is 2100, so the leap year after 2096 is 2104, eight years later.

The rule gives 97 leap years in every 400, an average year of 365.2425 days, about 27 seconds longer than the mean tropical year of 365.24219 days. Years before 1582 are checked with the Gregorian rule extended backwards.

Worked examples

2024

Year
2024
Result
Leap year
Rule that decides it
Divisible by 4 but not by 100
Days in the year
366
Previous leap year
2020
Next leap year
2028

Checked against: Python calendar.isleap(2024) = True

1900, a century year

Year
1900
Result
Common year
Rule that decides it
Divisible by 100 but not by 400
Days in February
28
Next leap year
1904
Previous leap year
1896

Checked against: Python calendar.isleap(1900) = False (Gregorian century rule)

2000, divisible by 400

Year
2000
Result
Leap year
Rule that decides it
Divisible by 400
Days in February
29

Checked against: Python calendar.isleap(2000) = True

Leap years skip 2100

Year
2096
Result
Leap year
Next leap year
2104
Previous leap year
2092

Checked against: Python: first x > 2096 with calendar.isleap(x) is 2104

Questions

Why is 2100 not a leap year?

Because century years must be divisible by 400 to be leap years, and 2100 ÷ 400 = 5.25. February 2100 will have 28 days, and there will be no leap year between 2096 and 2104. The same rule made 1700, 1800 and 1900 common years, while 1600 and 2000 were leap years. The next century leap year is 2400.

Why do we have leap years?

The year of the seasons, the tropical year, is about 365.2422 days, so a 365-day calendar would slip by almost a day every 4 years and about 24 days a century. The Julian calendar's leap day every fourth year overcorrected by about 11 minutes a year; by 1582 the March equinox had drifted 10 days, which the Gregorian reform removed and the century rule prevents from recurring.

When was the Gregorian calendar adopted?

Pope Gregory XIII decreed it in the bull Inter gravissimas of 24 February 1582. Italy, Spain, Portugal and Poland switched that October, when 4 October was followed by 15 October. Britain and its colonies changed in September 1752, dropping 11 days; Russia in February 1918, dropping 13; and Greece in 1923, also dropping 13.

When is the next leap year?

2028. The leap years after it are 2032 and 2036, and 29 February falls on a Tuesday in 2028, a Sunday in 2032 and a Friday in 2036. Every year divisible by 4 up to 2096 is a leap year, because the first century year in that run that fails the 400 test is 2100.

How accurate is the leap year checker?

Accuracy depends on your inputs and the method's assumptions. Decimal arithmetic uses 50 significant digits, but estimates, numerical methods and source data can be less precise; the displayed rounding does not remove those limits. It is checked against 5 worked examples whose answers come from independent sources; for example, “2024” is checked against Python calendar.isleap(2024) = True.

Where does the method come from?

Pope Gregory XIII, Inter gravissimas (1582) — the Gregorian leap-year rule; US Naval Observatory — Leap years.

About this calculator

leap  ⟺  (y mod 4=0∧y mod 100≠0)∨y mod 400=0\text{leap} \iff (y \bmod 4 = 0 \land y \bmod 100 \ne 0) \lor y \bmod 400 = 0

Sources

  1. Pope Gregory XIII, Inter gravissimas (1582) — the Gregorian leap-year rule
  2. US Naval Observatory — Leap years

Checked against references

5 worked examples with independently sourced answers ship with this calculator. They run in the test suite; you can run them here too.

Related calculators

Allow optional Google Analytics to measure page visits? Calculators work either way. Privacy and choices

Optional analytics: off.