Home / What is Y2038

Explainer

What is the Year 2038 problem?

It is an integer overflow. Unix time counts seconds since 00:00:00 UTC on 1 January 1970. When that count is stored in a signed 32-bit integer, the last valid value is 2,147,483,647 — 03:14:07 UTC on 19 January 2038.

Ad slot

One second later the two’s-complement value wraps to −2,147,483,648. Systems that interpret that as a Unix time read 20:45:52 UTC on 13 December 1901. Clocks jump backward 136 years. Certificates look expired. Schedulers refuse to run. Files look older than the disk that holds them.

The arithmetic

QuantityValue
Unix epoch1970-01-01 00:00:00 UTC
INT32_MAX seconds2,147,483,647
Last good second2038-01-19 03:14:07 UTC
Overflow second2038-01-19 03:14:08 UTC
Wrapped interpretation1901-12-13 20:45:52 UTC
Unsigned 32-bit ceiling2106-02-07 06:28:15 UTC
Signed 64-bit ceilingyear 292,277,026,596

It is not Y2K

Y2K was a decimal encoding: two digits for the year. Y2038 is a binary width: 31 magnitude bits plus a sign bit. The fix is also different. You cannot slap a century window on a 32-bit time_t without breaking either pre-1970 dates or the ABI of every library that passes time values.

It can fail before 2038

Any code that adds a duration to “now” and stores the result in 32 bits will overflow early. The textbook case is AOLserver on 13 May 2006: a one-billion-second timeout landed past 2038, the expiry became a date in the past, and the process crashed. Pension calculators, lease systems, certificate generators and 15-year maintenance plans hit the same wall as soon as they look forward far enough.

That forward look is what this site calls Backwards Risk.

What is actually still at risk

64-bit desktops, phones and servers already use 64-bit time_t. The remaining exposure is narrower and harder:

See affected systems, Linux, filesystems and databases.

The neighbouring deadlines

Unix Y2038 is one rollover in a cluster. NTP era 0 ends on 7 February 2036. DVB-SI 16-bit dates roll on 23 April 2038. The legacy GPS week number rolls on 20 November 2038. Those are different representations. They just land in the same two-year band.