Unix timestamps, in plain dates. Instantly.

Paste any epoch value — seconds, milliseconds, microseconds or nanoseconds — and see the date in UTC and your local time. Or pick a date and get the timestamp back.

  • Live ticking epoch clock
  • Seconds · ms · µs · ns
  • UTC + your local time
  • One-click copy, no sign-up

Current Unix time — ticking live

— s

— ms · —
—

Convert Unix timestamps to dates and dates to timestamps

Timestamp → date

Paste an epoch value. The unit is auto-detected from its length — or set it yourself.

Try:

Your converted date will appear here — UTC, local time, ISO 8601 and all four units.

Date → timestamp

Pick a date and time, and read off the epoch value in every unit.

Your timestamp will appear here — seconds, milliseconds, microseconds and nanoseconds.

Privacy you can verify, not just trust

Most online converters send every value you paste to their server before answering. This one can't: the conversion runs entirely in your browser, in plain JavaScript on your own device. Your timestamps and dates are never sent anywhere — the only requests to other sites are the site's own analytics, which count page views — and it uploads nothing, ever. Don't take our word for it:

External requests during processing: 0
  1. Press F12 to open developer tools, then the Network tab.
  2. Convert any timestamp above. Watch: apart from the site's analytics, no other request fires — no uploads, and no timestamp or date ever leaves your device.
  3. Extra credit: disconnect your internet after this page loads — conversion still works.

What epoch time is, and why developers keep tripping over it

A Unix timestamp — also called epoch time or POSIX time — is a single number: the seconds that have passed since 00:00:00 UTC on 1 January 1970, the moment known as the Unix epoch. That date was chosen in the early 1970s because it was a convenient round starting point for the first Unix systems, and it stuck. Today the same number turns up everywhere time is stored or sent between systems: API responses, JSON Web Tokens, database rows, log lines, file metadata and cache expiry headers. It is popular because it is unambiguous — a plain integer needs no date format, no month names and no timezone parsing — and because comparing two moments is just comparing two numbers.

The catch is that the number on its own tells you nothing about the unit. A timestamp is only meaningful once you know whether it counts seconds, milliseconds, microseconds or nanoseconds, and different ecosystems made different choices. That one missing fact is behind most timestamp bugs in the wild.

The seconds-vs-milliseconds pitfall: the most common timestamp bug

JavaScript's Date.now() returns milliseconds — 13 digits, currently starting 17… — while PHP's time(), Python's time.time(), Go's time.Now().Unix() and most databases return seconds — 10 digits. Mix them up and the result is wrong by a factor of 1,000, which is so large that the symptom is unmistakable once you know it. Feed a 13-digit millisecond value to code expecting seconds and you get a date thousands of years in the future. Feed a 10-digit second value to code expecting milliseconds and you land in January 1970, because 1,700,000,000 milliseconds is only about 20 days after the epoch — so a user born in 2023 suddenly has a birthday in 1970. The fastest diagnosis is the digit count: 10 digits is seconds, 13 is milliseconds, 16 is microseconds, 19 is nanoseconds. This converter counts the digits for you on Auto-detect, and the unit selector lets you override it when a value is ambiguous — short values such as 123456789 could be seconds in 1973 or milliseconds in 1970, and only the source system can settle that.

Worked examples

TimestampUnitWhat it is (UTC)
0seconds1 January 1970, 00:00:00 — the epoch itself. Every timestamp is measured from here.
1700000000seconds14 November 2023, 22:13:20. The same moment as 1700000000000 ms.
1735689600seconds1 January 2025, 00:00:00 — a clean round date, handy for testing year boundaries.
2147483647seconds19 January 2038, 03:14:07 — the largest value a signed 32-bit integer can hold (see below).
−1seconds31 December 1969, 23:59:59 — one second before the epoch. Negative timestamps count backwards.

Three more mistakes this converter catches

Treating a timestamp as if it had a timezone

A timestamp has no timezone: 1700000000 is one absolute moment, and it is 22:13 in London but 17:13 in New York on the same day. The timezone only appears when you display it. If two systems disagree about a time, check the display timezone first — the stored value is usually fine.

Losing precision on nanoseconds

A 19-digit nanosecond value is bigger than JavaScript's safe integer range, so ordinary Number arithmetic silently rounds it. This tool does its unit math with BigInt, so the seconds, milliseconds, microseconds and nanoseconds it shows are exact — the displayed date is still only precise to the millisecond, because that is all a calendar date can show.

Forgetting dates before 1970

Timestamps can be negative. Birth dates, historical records and anything before 1 January 1970 needs a minus sign — −315619200 is 1 January 1960. Code that rejects negative numbers, or stores timestamps in an unsigned type, corrupts every pre-1970 date it touches.

Assuming every day is 86,400 seconds

Unix time pretends every day is exactly 86,400 seconds and ignores leap seconds — the 27 extra seconds added since 1972 to keep atomic clocks aligned with the Earth's rotation. So a timestamp is about 27 seconds ahead of true solar time, and adding 86,400 to a timestamp does not always land on the same wall-clock time across a daylight-saving change.

Converting in code

If you would rather do it yourself than paste values here, the conversions are one line in most languages — the only thing to get right is the factor of 1,000:

// JavaScript — seconds to date, and back
const date = new Date(1700000000 * 1000);        // ms for the Date constructor
const seconds = Math.floor(Date.now() / 1000);  // Date.now() is milliseconds

# Python — timestamp to UTC date, and back
from datetime import datetime, timezone
dt = datetime.fromtimestamp(1700000000, tz=timezone.utc)
seconds = int(dt.timestamp())

The equivalent one-liners are date -u -d @1700000000 on Linux (date -u -r 1700000000 on macOS), SELECT FROM_UNIXTIME(1700000000) in MySQL and SELECT to_timestamp(1700000000) in PostgreSQL.

Leap seconds and the Year 2038 problem

Unix time ignores leap seconds by design, which keeps the arithmetic simple but means timestamps drift from astronomical time — about 27 seconds so far. For almost all software that drift is irrelevant; only astronomy and satellite systems need to care. The Year 2038 problem matters more: systems that store timestamps as a signed 32-bit integer max out at 2,147,483,647, which is 19 January 2038 at 03:14:07 UTC, and one second later the counter wraps to a large negative number — the system believes it is December 1901. Modern 64-bit systems store time in 64 bits and will not hit their limit for billions of years, but old embedded devices, legacy databases and 32-bit software still carry the risk. Try 2147483647 in the converter above to see the exact moment.

Frequently asked questions

What is a Unix timestamp?

A Unix timestamp — also called epoch time or POSIX time — is the number of seconds that have passed since 00:00:00 UTC on 1 January 1970, the moment known as the Unix epoch. Timestamp 0 is that exact moment, 1700000000 is 14 November 2023 at 22:13:20 UTC, and negative numbers count backwards to dates before 1970. Because a timestamp is just a count of seconds from one fixed point, it means the same moment everywhere on Earth — it carries no timezone of its own, so the same value renders as a different wall-clock time in New York and in Tokyo.

How do I convert a Unix timestamp to a date?

Paste the number into the timestamp field above. The converter auto-detects whether it is seconds, milliseconds, microseconds or nanoseconds from its length, and shows the matching date in UTC, in your local timezone, as ISO 8601 and as RFC 2822, plus the same moment in all four units — each with a copy button. To go the other way, pick a date and time in the second panel and read off the timestamp in seconds, milliseconds, microseconds and nanoseconds.

Why does my timestamp show a date in January 1970?

Almost always because the value is in milliseconds but was read as seconds, or the other way round. JavaScript's Date.now() returns milliseconds (13 digits, e.g. 1700000000000), while most backends, databases and APIs expect seconds (10 digits, e.g. 1700000000). Feed a 13-digit millisecond value to code expecting seconds and you get a date thousands of years in the future; feed a 10-digit second value to code expecting milliseconds and you land in January 1970, because 1,700,000,000 milliseconds is only about 20 days after the epoch. Check the digit count first: 10 digits is seconds, 13 is milliseconds, 16 is microseconds, 19 is nanoseconds — or leave this converter on Auto-detect and let it count for you.

What is the difference between seconds, milliseconds, microseconds and nanoseconds?

They are the same count from the same epoch, at different precision: one second equals 1,000 milliseconds, 1,000,000 microseconds and 1,000,000,000 nanoseconds. Seconds (10 digits today) are the classic Unix format used by PHP, Python, Go and most databases. Milliseconds (13 digits) are the JavaScript and Java standard — Date.now() and System.currentTimeMillis(). Microseconds (16 digits) appear in databases and logging systems that need finer timing, and nanoseconds (19 digits) in high-resolution timers and distributed databases such as Cassandra. The date is identical in every unit; only the number of trailing zeros changes.

What is the Year 2038 problem?

Many older systems store Unix timestamps as a signed 32-bit integer, whose largest value is 2,147,483,647 — 19 January 2038 at 03:14:07 UTC. One second past that, the counter wraps around to a large negative number and the system thinks it is December 1901. It is the same class of bug as Y2K, and it mainly threatens old embedded devices, legacy databases and 32-bit software. Modern 64-bit systems store time in 64 bits and will not hit the limit for billions of years. Try 2147483647 in the converter above to see the exact moment.