Epoch Converter

Paste a Unix timestamp to see when it is — or edit the date to get the timestamp. Also known as Unix time or POSIX time.

Paste a timestamp above, or type a date here.

What is a Unix timestamp?

Unix time (also known as POSIX time or epoch time) counts how much time has elapsed since the Unix epoch — January 1, 1970 at 00:00:00 UTC. It's the standard way computers represent time internally and is used across programming languages, databases, APIs, and system logs. Timestamps before 1970 are simply negative: -86400 is December 31, 1969.

Is a Unix timestamp in seconds or milliseconds?

There is no single answer — it depends on which ecosystem produced the value. Three conventions are in wide use, and mixing them up is the most common source of dates landing in 1970 or in the year 56,000. As a rule of thumb, count the digits: a present-day timestamp is 10 digits in seconds, 13 in milliseconds, 16 in microseconds and 19 in nanoseconds.

Which unit does my stack use?

Seconds — the specification unit

Used wherever a format is defined by a spec rather than a runtime: POSIX time_t, filesystem timestamps, date +%s, cron, Redis EXPIREAT, and JWT exp/iat/nbf, which RFC 7519 defines as NumericDate — always seconds. Also Python time.time(), Go Time.Unix(), PHP time() and PostgreSQL extract(epoch from ...).

Milliseconds — the runtime unit

What language runtimes hand you: JavaScript Date.now(), Java System.currentTimeMillis() and Instant.toEpochMilli(), Kotlin, Elasticsearch epoch_millis, Kafka record timestamps and MongoDB's BSON date. Because most JSON APIs are written in these stacks, milliseconds is what you'll usually find in a payload.

Nanoseconds — the observability unit

Used where ordering matters more than readability: OpenTelemetry's OTLP time_unix_nano, InfluxDB's default precision, Go time.UnixNano(), and Linux clock_gettime. Note that a nanosecond timestamp exceeds JavaScript's safe integer range, so it must be handled as a string or BigInt rather than a number.

Why does an epoch timestamp have no timezone?

An epoch timestamp represents an absolute instant — the same moment everywhere on Earth. It's always relative to UTC, so there's no timezone ambiguity. This is its key advantage over human-readable formats: 1721044800 means the exact same instant whether you're in Tokyo, London, or New York. The human-readable representation changes depending on timezone, but the epoch value does not. That's why the timezone selector above changes the date shown but never the timestamp itself.

Where will I run into epoch timestamps?

API responses

JSON created_at, expires_at fields

JWTs

iat, exp, nbf claims (epoch seconds)

Databases

PostgreSQL extract(epoch from ...), SQLite

Log files

syslog, nginx, application logs for sortability

Cron & scheduling

Task schedulers and rate limiters

File systems

mtime, ctime, atime on Unix

How many digits should a timestamp have?

PrecisionDigitsUsed by
Seconds10POSIX, JWT claims, cron, Python time.time()
Milliseconds13JavaScript Date.now(), Java, Kafka
Microseconds16Go time.UnixMicro(), ClickHouse
Nanoseconds19OpenTelemetry, InfluxDB, Go time.UnixNano()

Digit counts describe present-day timestamps only — they shift as time passes and break entirely for values before 2001 or after 5138. PostgreSQL is a common trap here: extract(epoch from ...) returns seconds, while its internal timestamp storage counts microseconds from 2000-01-01, a different epoch altogether.