Real Epoch Converter logo realepochconverter
year 2038 countdown

Year 2038 Problem. Live Countdown to the 32-Bit Overflow

At 03:14:07 UTC on January 19, 2038, a signed 32-bit seconds counter has nowhere left to count, it wraps around to 1901. This page counts down to that instant, live.

countdown

The Year 2038 problem, live.

When the seconds-since-1970 counter overflows 32 bits, signed 32-bit clocks roll over to 1901. This countdown shows exactly how much room is left.

00000

days

00

hours

00

minutes

00

seconds

32-bit maximum
2,147,483,647
overflow moment (UTC)
—
current epoch seconds
—
headroom
—

Updating every second, in your browser (no timers on a server, no network calls.

The math behind the overflow

A signed 32-bit integer holds values from -2,147,483,648 to 2,147,483,647. Unix time is seconds since 1970, so the counter can represent every second up to 2,147,483,647, which is 2038-01-19 03:14:07 UTC. One second later the counter wraps to -2,147,483,648, which reads as 1901-12-13 20:45:52 UTC. The same arithmetic bug as Y2K, just on a 32-bit integer instead of a two-digit year.

Who is actually affected

  • Legacy embedded systems, industrial controllers, routers, and IoT devices still compiled with 32-bit time_t and never updated.
  • Old file systems and firmware, ext2/ext3-style 32-bit on-disk timestamps, FAT timestamps on embedded storage, and NTP-firmware variants that store seconds in 32 bits.
  • Databases with 32-bit epoch columns, anything storing INT epoch seconds instead of BIGINT or a real date type.
  • Modern platforms are safe, every mainstream OS and language runtime moved time_t to 64 bits years ago, so macOS, Windows, Linux, iOS, and Android apps are unaffected. The risk is the software nobody rebuilt.

The boundary, worked through

  • 2,147,483,647 → Jan 19, 2038 03:14:07 UTC, the last valid second.
  • 2,147,483,648 → wraps to −2,147,483,648 → Dec 13, 1901, the bug, in one line.
  • 1,000,000,000 → Sep 9, 2001 01:46:40 UTC, a third of the way there, historically.
  • In hex the boundary is neat: 0x7FFFFFFF is the maximum, and the wrap lands on 0x80000000.

How to check your own systems

  • Linux: getconf LONG_BIT tells you the pointer size; date +%s shows the live counter. 64-bit systems display it fine.
  • Code review: search for time_t, int32_t epochs, and %ld date prints in C/C++.
  • Databases: look for integer columns holding epoch seconds, they should be 64-bit or a native timestamp type.

First published · Last reviewed · Maintained and developed by the Real Epoch Converter team · Email · Contact · Methodology

Copied