How to use the converter
- Timestamp to date: paste a number into the first box. The converter works out whether it is in seconds, milliseconds, microseconds or nanoseconds (or pick the unit yourself) and shows the moment in UTC, in your own time zone and in any other zone you type, such as
America/New_YorkorAsia/Tokyo. - Date to timestamp: pick a date and time and the time zone they are in, or paste a date string. You get the timestamp in seconds and milliseconds.
- Every result has a Copy button, and the current time at the top updates live.
How Unix time works
Unix time (also called epoch time or POSIX time) counts the seconds that have passed since the Unix epoch, 00:00:00 UTC on Thursday 1 January 1970. Right now it is a 10-digit number a little under 1.8 billion. Because it is a single number with no time zone, it is easy to store, sort and subtract: the difference between two timestamps is simply the number of seconds between them.
Unix time treats every day as exactly 86,400 seconds and ignores leap seconds. When a leap second is added to UTC, Unix time does not count it, so a timestamp maps to a date and time by plain arithmetic. The cost is that a small number of real seconds have no distinct timestamp. For almost every application this does not matter.
Seconds, milliseconds, microseconds and nanoseconds
The classic Unix timestamp is in seconds, but many systems use finer units. JavaScript's Date.now()
and Java's System.currentTimeMillis() return milliseconds; some databases and tracing systems use
microseconds; Go's UnixNano() returns nanoseconds. The quickest way to tell them apart is the
number of digits for a present-day date:
| Unit | Digits today | Example (17 Oct 2026, 00:00 UTC) |
|---|---|---|
| Seconds | 10 | 1792195200 |
| Milliseconds | 13 | 1792195200000 |
| Microseconds | 16 | 1792195200000000 |
| Nanoseconds | 19 | 1792195200000000000 |
When Detect is selected, the converter treats numbers below 100 billion as seconds (good until the year 5138), below 100 trillion as milliseconds, below 100 quadrillion as microseconds, and anything larger as nanoseconds. If you are converting a very old or far-future date, choose the unit yourself.
ISO 8601 and RFC 2822
The results include two standard text formats. ISO 8601 (as profiled by RFC 3339) writes dates from largest
to smallest unit, such as 2026-10-17T14:30:00Z, where Z means UTC, or
2026-10-17T10:30:00-04:00 with an offset. It sorts correctly as text and is the usual choice for
APIs and JSON. RFC 2822 is the format used in email headers, such as
Sat, 17 Oct 2026 14:30:00 +0000.
Time zones and daylight saving time
Time zone names like Europe/Paris come from the IANA time zone database, which your browser uses to
apply each zone's history of offsets and daylight saving changes. When you convert a date to a timestamp, two awkward cases
can happen. In spring, clocks skip an hour, so a time such as 02:30 does not exist that day; the converter moves it forward
by the size of the gap and tells you. In autumn, an hour repeats, so 01:30 happens twice; the converter uses the first one
and tells you the other.
The Year 2038 problem
Many older programs store Unix time in a signed 32-bit integer (the C type time_t on
32-bit systems). The largest value it can hold is 2,147,483,647, which is 03:14:07 UTC on Tuesday 19 January
2038. One second later the counter overflows and wraps to -2,147,483,648, which those programs read as 20:45:52 UTC
on Friday 13 December 1901. Try 2147483647 and -2147483648 in the converter
to see both.
The fix is to use 64-bit time, which lasts for about 292 billion years. Most current operating systems, languages and
databases already do: 64-bit Linux, macOS and Windows use 64-bit time, the Linux kernel added 64-bit time support for 32-bit
platforms in version 5.6 (2020), and the GNU C library lets 32-bit programs opt in from version 2.34. The risk is in places
that are hard to update: embedded devices, old file formats and network protocols with 32-bit time fields, and database
columns or code that store timestamps in 32-bit integers. MySQL's TIMESTAMP type, for example, is
documented as ending at 2038-01-19 03:14:07 UTC. Some systems use an unsigned 32-bit counter instead, which lasts until
06:28:15 UTC on 7 February 2106 but cannot hold dates before 1970.
This converter uses JavaScript dates, which count milliseconds in a 64-bit floating-point number and can represent any moment within 100 million days of the epoch, roughly the years -271821 to 275760.
Troubleshooting
- The date is in 1970. You probably entered milliseconds but chose Seconds (or the other way round gives a date tens of thousands of years away). Switch the unit to Detect.
- The time is off by a few hours. The timestamp is right; the time zone is not. Check which zone the date you are comparing with was written in.
- "Unknown time zone". Use an IANA name such as
America/Chicago, not an abbreviation like CST, because abbreviations are ambiguous. Start typing a city and pick from the list. - A pasted date is not recognized. ISO 8601 is the most reliable. Browsers also read RFC 2822, but other formats like 17/10/2026 are ambiguous and are rejected.
Related tools
Scheduling across zones? The meeting planner finds a time that works in several cities. Version 7 UUIDs carry a millisecond timestamp too: decode one with the UUID generator. To read timestamps inside API responses, tidy them first with the JSON formatter, and for timing things live there is the online stopwatch.