The Year 2038 Problem
At 2038-01-19 03:14:07 UTC, signed 32-bit Unix time reaches its maximum value of
2,147,483,647 seconds. One second later, systems still storing time in a 32-bit time_t
wrap around to 1901-12-13 20:45:52.
Unix time right now, as a signed 32-bit integer
seconds — the red bit is the sign bit. When it flips, the date becomes 1901.
Epoch milestones
| Seconds | UTC date | What | When |
|---|
Who is actually affected?
Modern 64-bit operating systems already use a 64-bit time_t, which is good for about
292 billion years. The remaining risk lives in embedded systems, old 32-bit firmware, file formats and
databases that serialized a 32-bit timestamp, and protocols with 32-bit time fields. Linux gained full
64-bit time_t support on 32-bit architectures in kernel 5.6 (2020), and Debian completed its
64-bit time transition in 2025 — but the long tail of routers, meters, vehicles and industrial
controllers deployed today will still be running in 2038.
Related trivia: unsigned 32-bit time runs out in 2106, NTP’s 32-bit seconds rolled over in 2036’s era
boundary, and JavaScript’s Number can represent exact milliseconds until the year 287396.
We’ll worry about that one later.