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.

Worked examples

  • 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.

Related tools

The countdown is a fixed instant, see it in any timezone with the Unix timestamp to date converter (paste 2147483647), or reference the boundary in hex on the Unix hex timestamp converter.

First published · Last reviewed · Maintained and developed by the Real Epoch Converter team · [email protected] · Contact · Methodology

More timestamp tools

Need the plain Unix timestamp instead of this format? The epoch time converter on the home page converts dates to Unix timestamps and back — seconds, milliseconds, or microseconds — with batch conversion, and the Unix timestamp to date converter handles one value at a time.

Prefer reading? The guides explain Unix time, timestamp formats, and common bugs in depth, and the methodology page documents exactly how this site handles negative timestamps, fractional seconds, leap seconds, and daylight-saving transitions.

Copied