How to use the epoch converter
- Current Unix time: the clock at the top ticks every second in seconds and milliseconds. Press Copy to grab the value, or Pause to freeze it.
- Timestamp to date: paste a Unix timestamp. The converter detects whether it is in seconds, milliseconds, microseconds or nanoseconds, and shows the date in UTC, your own time zone, ISO 8601, RFC 2822 and relative time ("3 hours ago"). Add any other time zone, such as Asia/Tokyo, to compare.
- Date to timestamp: pick a date, a time and a time zone (local, UTC or any IANA zone) to get the epoch time in seconds and milliseconds.
- Batch: paste a list of timestamps or dates, one per line, and download the results as CSV.
What is Unix time (epoch time)?
Unix time is the number of seconds since the Unix epoch, midnight UTC on 1 January 1970. It is a single integer with no time zone, so computers use it to store and compare moments in time: log files, databases, APIs, file systems and tokens. It is also called epoch time, POSIX time or simply a Unix timestamp.
Every day in Unix time is exactly 86,400 seconds long. Leap seconds are ignored, which keeps the arithmetic simple: add 3,600 for an hour, 86,400 for a day, 604,800 for a week.
Convert epoch to date
To convert a Unix timestamp to a date by hand, split it into whole days and the seconds left over:
- Divide by 86,400: 1,700,000,000 ÷ 86,400 = 19,675 whole days, with 80,000 seconds left over.
- Count 19,675 days forward from 1 January 1970: that lands on 14 November 2023.
- Turn the leftover seconds into a time: 80,000 s = 22 h 13 min 20 s, so 22:13:20 UTC.
- Apply a time zone offset if you need local time: New York is UTC−05:00 in November, which gives 17:13:20.
The converter does all of this, including daylight saving time, for any zone. Some useful reference points:
| Unix timestamp | UTC | New York |
|---|---|---|
0 | 1970-01-01 00:00:00 | 1969-12-31 19:00:00 (UTC−05:00) |
1000000000 | 2001-09-09 01:46:40 | 2001-09-08 21:46:40 (UTC−04:00) |
1234567890 | 2009-02-13 23:31:30 | 2009-02-13 18:31:30 (UTC−05:00) |
1700000000 | 2023-11-14 22:13:20 | 2023-11-14 17:13:20 (UTC−05:00) |
1790294400 | 2026-09-25 00:00:00 | 2026-09-24 20:00:00 (UTC−04:00) |
2000000000 | 2033-05-18 03:33:20 | 2033-05-17 23:33:20 (UTC−04:00) |
2147483647 | 2038-01-19 03:14:07 | 2038-01-18 22:14:07 (UTC−05:00) |
-1 | 1969-12-31 23:59:59 | 1969-12-31 18:59:59 (UTC−05:00) |
-2147483648 | 1901-12-13 20:45:52 | 1901-12-13 15:45:52 (UTC−05:00) |
Convert date to Unix timestamp
Going the other way, the same clock time gives a different timestamp in every time zone, so always say which zone a date is in. Midnight UTC on 25 September 2026 is 1790294400. 9:00 AM that morning in New York (UTC−04:00) is 1790341200, and 9:00 AM in India (Asia/Kolkata, UTC+05:30) is 1790307000.
Daylight saving time adds two traps. On 8 March 2026 New York skipped from 2:00 to 3:00 AM, so 2:30 AM never happened; the converter moves it forward to 3:30 AM EDT (1772955000) and tells you. On 1 November 2026 the clocks went back and 1:30 AM happened twice: first as EDT (1793511000), then an hour later as EST (1793514600). The converter uses the first and shows the second.
Seconds vs milliseconds
Different languages count in different units, and mixing them up is the most common timestamp bug: a millisecond value read as seconds lands tens of thousands of years in the future. The number of digits tells you which one you have:
| Digits | Unit | Same moment | Used by |
|---|---|---|---|
| 10 | Seconds | 1700000000 | Unix and Linux, C time(), PHP time(), JWT exp and iat claims |
| 13 | Milliseconds | 1700000000000 | JavaScript Date.now(), Java System.currentTimeMillis() |
| 16 | Microseconds | 1700000000000000 | BigQuery UNIX_MICROS(), many tracing and logging tools |
| 19 | Nanoseconds | 1700000000000000000 | Go UnixNano(), Python time.time_ns(), InfluxDB |
Auto-detect reads a number as seconds below 100,000,000,000 (the largest is 5138-11-16, far beyond any real date), then milliseconds, microseconds and nanoseconds at each further factor of 1,000. The one blind spot: millisecond timestamps from before 1973-03-03 are small enough to look like seconds, so choose the unit yourself for early-1970s data. Micro- and nanosecond inputs keep every digit, so the ISO 8601 output shows the full fraction, e.g. 2023-11-14T22:13:20.123456789Z.
The year 2038 problem
Older software stores Unix time in a signed 32-bit integer, whose largest value is 231 − 1 = 2147483647: 03:14:07 UTC on 19 January 2038. One second later the counter overflows to -2147483648, which reads as 1901-12-13. Linux, macOS, modern databases and languages now use 64-bit time, but embedded devices, old file formats and 32-bit builds can still break. The converter flags any timestamp outside the 32-bit range.
Negative timestamps work the same way in reverse: -1 is 23:59:59 UTC on 31 December 1969. The far limit is set by JavaScript, which handles dates up to the year 275760 and back to 271821 BC; anything beyond that gets a clear error instead of a wrong date.
Get the current timestamp in JavaScript, Python, SQL and Bash
JavaScript
Math.floor(Date.now() / 1000) // seconds
Date.now() // milliseconds
new Date(1700000000 * 1000).toISOString() // '2023-11-14T22:13:20.000Z'
Date.parse('2026-09-25T00:00:00Z') / 1000 // 1790294400Python
import time
from datetime import datetime, timezone
int(time.time()) # seconds
time.time_ns() // 1_000_000 # milliseconds
datetime.fromtimestamp(1700000000, tz=timezone.utc).isoformat()
# '2023-11-14T22:13:20+00:00'
int(datetime(2026, 9, 25, tzinfo=timezone.utc).timestamp())
# 1790294400SQL
-- PostgreSQL
SELECT EXTRACT(EPOCH FROM now())::bigint;
SELECT to_timestamp(1700000000); -- 2023-11-14 22:13:20+00 (UTC session)
-- MySQL (results are in the session time zone)
SELECT UNIX_TIMESTAMP();
SELECT FROM_UNIXTIME(1700000000);
-- SQLite
SELECT unixepoch(); -- 3.38+, or strftime('%s', 'now')
SELECT datetime(1700000000, 'unixepoch'); -- 2023-11-14 22:13:20Bash
date +%s # seconds
date +%s%3N # milliseconds (GNU date on Linux)
date -u -d @1700000000 # Linux: Tue Nov 14 22:13:20 UTC 2023
date -u -r 1700000000 # macOS and BSDOther developer and time tools
- JWT decoder: the
exp,iatandnbfclaims in a JSON Web Token are Unix timestamps in seconds. Decode a token to see when it expires. - JSON formatter and validator: pretty-print an API response to find the timestamp fields, then paste them into the batch converter.
- Time calculator: add or subtract hours, minutes and seconds, or find the time before or after a start time.
Frequently asked questions
What is the current Unix timestamp?
It changes every second, so the live clock at the top of this page shows it in seconds and milliseconds, with copy buttons. For reference, midnight UTC on 25 September 2026 was 1,790,294,400 (1790294400).
What is epoch time?
Epoch time, also called Unix time or POSIX time, is the number of seconds that have passed since the Unix epoch: 00:00:00 UTC on 1 January 1970. Timestamp 0 is that moment, 86400 is exactly one day later, and dates before 1970 are negative.
Is Unix time in UTC?
Yes. A Unix timestamp counts seconds from midnight UTC on 1 January 1970, so it has no time zone: the same instant has the same timestamp everywhere. Time zones only matter when you turn the number into a clock time, which is why the converter shows UTC, your local time and any other zone side by side.
Does Unix time include leap seconds?
No. Unix time treats every day as exactly 86,400 seconds and ignores the 27 leap seconds added to UTC since 1972. When a leap second happens, the Unix clock repeats a second or the time servers smear it over several hours, so the difference between two timestamps can be a second off from the true elapsed time.
How can I tell if a timestamp is in seconds or milliseconds?
Count the digits. Current dates have 10 digits in seconds, 13 in milliseconds, 16 in microseconds and 19 in nanoseconds. Any 10-digit seconds value falls between 2001-09-09 and 2286-11-20. The converter detects the unit from the size of the number and lets you override it.
Can a Unix timestamp be negative?
Yes. Negative timestamps are dates before 1970: -1 is 31 December 1969 at 23:59:59 UTC and -86400 is midnight on 31 December 1969. Most languages handle them, but some older systems and databases only accept positive values.
What happens to Unix time in 2038?
Systems that store the timestamp as a signed 32-bit integer run out of room after 2147483647 (2038-01-19 03:14:07 UTC). One second later the value wraps round to -2147483648, which reads as 1901-12-13. Modern systems use 64-bit time and are not affected.
How do I convert epoch time to a date in Excel or Google Sheets?
Divide the timestamp by 86,400 (the seconds in a day) and add the spreadsheet date for 1 January 1970: =A1/86400+DATE(1970,1,1). For milliseconds, divide by 86,400,000 instead. Format the cell as a date and time. The result is in UTC, so add or subtract your offset in hours divided by 24.
Is anything I enter sent to a server?
No. Every conversion runs in your browser with its built-in time zone data. Timestamps, dates and pasted lists are never uploaded or saved; only your unit and time zone choices are remembered on your device.