Also available in: Español · Português · Français · العربية
Leap Seconds: The Complete List
Every leap second ever inserted, why they are ending, and why no JavaScript date can hold one.
What is a leap second?
A leap second is an extra second added to the world's clocks to keep them in step with the Earth's rotation. Atomic clocks keep a perfectly steady second; the planet does not spin at a perfectly steady rate. When the two drift more than about 0.9 seconds apart, a second is inserted at the end of a day, and that day's final minute has 61 seconds instead of 60 — 23:59:59, then 23:59:60, then midnight.
There have been 27 of them, all since modern UTC began in 1972, and they are all listed above. The running total matters as much as the individual dates: atomic time is now 37 seconds ahead of the clock on your wall, being the 10 seconds UTC started behind plus one for each leap second since.
Every one so far has added a second. Removing one is permitted by the same rules and has never been needed — although the Earth has been spinning slightly fast in recent years, which makes the first ever negative leap second a genuine possibility rather than a footnote.
How to read this page
- Check the running offset. TAI minus UTC is the number most systems actually need. It is 37 seconds and has been since the start of 2017.
- Look at the gap. The page computes how long it has been since the last one, live. That figure is now the longest gap in the entire record.
- Read the demonstration. Underneath, your own browser is asked to parse a real leap second. Watching it fail is the point — see below.
Why your computer cannot represent one
POSIX time, which is what almost every computer counts in, defines every day as exactly 86,400 seconds. There is no room in that definition for a day with 86,401. So the leap second is not stored wrongly — it has nowhere to be stored at all.
The consequences are visible on this page and are worth seeing rather than being told. Asking JavaScript to parse 2016-12-31T23:59:60Z returns NaN: the instant is not merely unusual, it is unrepresentable. And measuring from 23:59:59 to the following midnight gives one second, though two really elapsed. A leap day and an ordinary day are indistinguishable to the clock.
That is also the answer to why the same string is legal in some standards and not others. RFC 3339's grammar explicitly permits a seconds value of 60, precisely so a timestamp can record a leap second; the format JavaScript defines stops at 59. A timestamp that is valid on the wire can be unparseable by the language reading it, which is a real source of bugs in log processing.
Software that genuinely needs elapsed time — measuring a duration, ordering events, timing a network round trip — uses a monotonic clock or TAI rather than UTC, for exactly this reason. If you have ever seen a duration come out one second short across New Year, this is why.
They are being abolished, and the replacement is not decided
In November 2022 the General Conference on Weights and Measures passed Resolution 4, which resolved that the maximum permitted difference between UT1 and UTC will be increased in, or before, 2035. Increasing that tolerance is what ends the leap second: they exist only to hold the difference under 0.9 seconds, and a larger tolerance means decades pass before any correction is needed.
What the resolution notably does not do is say what the new maximum will be. It asks the CIPM to propose a value and to draft a resolution for agreement at the 28th meeting of the CGPM, in 2026. So the decision to stop is settled and the thing that replaces it is still open, which is an unusual state for a reference page to describe and the reason this one says so plainly rather than rounding it to “leap seconds end in 2035”.
The data had already been heading that way before any vote. There were nine leap seconds in the 1970s, six in the 1980s, seven in the 1990s, two in the 2000s, three in the 2010s, and none at all since the end of 2016. Whether the Earth cooperates until 2035 is not something anyone can promise, which is why the list above is generated from the authoritative tables rather than typed out.
Where the data comes from
Two sources, cross-checked against each other. IANA publishes leap-seconds.list, which ships inside the tz database that nearly every operating system uses, keyed on NTP timestamps. The IERS Earth Orientation Centre at the Paris Observatory publishes its own table in a completely different format, keyed on Modified Julian Date. They are produced by different institutions and agree on every row, which is worth more than either alone.
One trap is worth mentioning because it is easy to fall into. Neither file lists the leap seconds directly — each row records the moment the offset changed, which is the midnight after the leap second. Reading those dates as the leap second dates puts every entry in the wrong month: the row dated 1 July 1972 is the leap second at the end of 30 June. That is also why 28 rows describe 27 leap seconds, since the first row is the 1972 starting offset rather than an insertion.
The IANA file carries its own expiry date, which is the maintainers telling you when to stop trusting a stale copy — a good habit that most published tables lack.
Why is it free?
The whole list is a couple of kilobytes shipped with the page, and the demonstration runs in your browser. Nothing is uploaded, nothing is logged, and there is no account to make.
No sign-up, no limits, and no watermark on anything you copy out.