End of the Leap Second: What Changes for Your NTP Servers by May 2027
The leap second is coming to an end. The last one will remain that of 31 December 2016: IERS Bulletin C 72 (6 July 2026) announces "NO leap second […] at the end of December 2026", and recalls that a leap second is only introduced "at the end of the months of December or June". The next such date, 30 June 2027, falls after the effective date. TAI − UTC therefore stays at 37 seconds.
For the history of the mechanism, the outages it caused and the details of the vote, see our leap second page. This article answers a different question: what should the administrator of an NTP server check by May 2027? What we say about chrony and ntpd comes from their documentation and their current source code. As of 16 October 2026, neither project has announced what it will do with its leap second code, and we do not guess.
1. What the resolution says, and what it does not
Resolution 5, "On the technical actions needed to ensure the continuity of UTC", comes down to two decisions: continuous UTC from 20 May 2027, and a |UT1-UTC| difference raised to 3,600 seconds, "ensuring the long term continuity for UTC for several centuries". It welcomes the commitment of the IERS "to take all necessary measures to change its operational provision for, and its announcement of, leap seconds".
It says nothing about NTP, the leap-seconds.list file or software. Among its grounds, one
passage speaks directly to time operators: "the use of different mitigation methods for leap second
introductions by global service providers in their server systems, in order to avoid time steps, leads
to inconsistency in timing between different systems". That is smearing, practised notably by Google
and AWS, which our leap second page covers in detail.
2. What remains: the Leap Indicator
The two Leap Indicator bits stay in every NTP packet: the resolution does not touch the protocol, defined by RFC 5905 (§7.3).
| Value | Meaning | After 20 May 2027 |
|---|---|---|
| 00 | No warning | The normal value, permanently |
| 01 | Last minute of the month has 61 seconds | To be treated as an anomaly: no leap second can be announced any more |
| 10 | Last minute of the month has 59 seconds | Never used; likewise to be treated as an anomaly |
| 11 | Clock unsynchronized | Unchanged: the alarm keeps its use |
"Of the month" follows the field's definition (RFC 5905, §7.3) and RFC 8633 (§3.7), under which the second is only applied on the last day of a month; Figure 9 of RFC 5905 says "last minute of the day" (details).
This matters because the local list is not a barrier on its own. The
chrony documentation says so:
if a majority of time sources announce a leap second on the last day of June or December, "it will be
accepted even if it is not included in the timezone". On the ntpd side, the code
(ntp_proto.c and ntp_leapsec.c) accepts an announcement carried by more than half
of its surviving sources, but only if its local table has expired. Two habits follow: keep sources that
follow the IERS list, and monitor the leap status.
# chrony: the expected status is "Normal"
chronyc tracking | grep 'Leap status'
Leap status : Normal
# ntpd or NTPsec: leap=00
ntpq -c 'rv 0 leap'
3. leap-seconds.list: the 28 June 2027 expiry
The leap-seconds.list
file, maintained by the IERS and redistributed by the IANA tz database (the tzdata package),
carries an expiry date on its #@ line, in seconds since 1900. The current version expires on
28 June 2027, five weeks after continuous UTC takes effect. To read it on a server:
date -u -d @$(( $(awk '/^#@/{print $2}' /usr/share/zoneinfo/leap-seconds.list) - 2208988800 )) +%F
2027-06-28
What the software does with an expired list, according to its current code:
- chrony (
leapdb.c): once the expiry has passed, it logs "Leap second list … needs update" and keeps using the file's content. The last entry, TAI − UTC = 37 s from 1 January 2017, remains correct. - ntpd (
ntp_util.c) and NTPsec (ntp_util.c): one warning a day during the 28 days before the expiry ("will expire in less than N days"), then one error a day afterwards ("expired N days ago"). With an expired table, ntpd again accepts a majority announcement from its sources (section 2).
What happens next depends on the IERS. On 15 October 2026, the tz database coordinator, Paul Eggert, wrote to the director of the IERS centre that maintains the file; he expects the expiry to be dropped or moved far into the future. As of 16 October, no new version has been published.
4. chrony's leapsectz: check that it reads something
chrony knows two local sources. leapsectz right/UTC queries a tz time zone that contains the
leap seconds; leapseclist, added in chrony 4.6
(NEWS), reads
leap-seconds.list directly. On Debian 13, right/UTC is absent by default (as we found on our servers): the
right/ zones moved to the tzdata-legacy package, not installed by default
(tzdata
changelog, version 2023c-7), and the chrony.conf shipped by Debian already uses
leapseclist on leap-seconds.list
(chrony
changelog, version 4.6~pre1-1). An older or separately managed configuration that keeps
leapsectz right/UTC then reads nothing, and chrony discards it at startup with "Timezone
right/UTC failed leap second check, ignoring".
The documentation gives the test, to run on every server that keeps leapsectz:
TZ=right/UTC date -d 'Dec 31 2008 23:59:60'
Wed Dec 31 23:59:60 UTC 2008 # the time zone contains leap seconds
# otherwise, replace with (chrony 4.6 or later):
leapseclist /usr/share/zoneinfo/leap-seconds.list
A local source stays useful after May 2027. According to the documentation, it also matters when the
system clock must carry the correct TAI − UTC offset (the kernel only gets it with
leapsecmode system), which counts for applications reading CLOCK_TAI. And it is
what lets a server recognise an erroneous announcement (section 2). Our own
configuration is described in the policy of our servers.
5. Is smearing still useful?
Smearing only applies around a leap second. Google says so of its service: "Before and after this period, smeared clocks and time service agree with clocks" that follow UTC (Google Public NTP, Leap Smear). With no leap second after 20 May 2027, there is no smear period left.
- Smearing sources (
time.google.com, Amazon Time Sync): the risk of mixing them with compliant sources only existed during the window. Nothing to remove; the leap second page covers this point. - chrony:
smoothtime … leaponlyonly smooths leap seconds and will have nothing left to smooth. Withoutleaponly, the directive keeps a separate documented use: softening large corrections of the server's clock for its clients, for example after a long outage. - ntpd:
leapsmearintervalremains an experimental option, only present if ntpd was built with--enable-leap-smear(ntpd documentation).
6. What the administrator should check
- The local source exists. The
leapseclist(chrony) orleapfile(ntpd) directive points to a file that is present, and chrony logs "Using leap second list …" at startup; ntpd, "leapsecond file (…): loaded, expire=…". - No orphaned leapsectz. The
TZ=right/UTCtest from section 4 answers 23:59:60, or the directive is replaced. - The tzdata update is planned before 28 June 2027, with an alert on "needs update" (chrony) and on "will expire in less than" (ntpd, NTPsec) in the logs.
- The leap status is monitored.
Leap status : Normalorleap=00; after 20 May 2027, any value other than 00 or 11 should be handled as a source incident, since no leap second can be announced any more. - Applications have nothing to change for the current time: Unix time has never counted leap seconds. To convert old timestamps, the table is still needed; the timestamp converter gives the TAI − UTC offset in force on a given date.
7. Timeline
| Date | Event | Source |
|---|---|---|
| 31 December 2016 | 27th and last leap second; TAI − UTC = 37 s | IERS |
| 6 July 2026 | Bulletin C 72: no leap second at the end of December 2026 | IERS |
| 15 October 2026 | Resolution 5 adopted by the 28th CGPM | BIPM |
| 20 May 2027 | Continuous UTC takes effect | BIPM |
| 28 June 2027 | Current version of leap-seconds.list expires | IANA |
Sources
- BIPM, Resolution 5 of the 28th CGPM (2026) — the French text is authoritative
- IERS, Bulletin C 72 (6 July 2026)
- leap-seconds.list (IANA) — expiry on 28 June 2027
- tz mailing list, 15 October 2026 — request to the IERS on the file's expiry
- chrony.conf documentation (4.8) and leapdb.c
- ntpd documentation (leapfile), ntp_util.c and NTPsec
- RFC 5905 — NTPv4, Leap Indicator field (§7.3)
- Google Public NTP, Leap Smear
- Internal — The leap second in NTP: history, incidents, step vs smear, our policy