Timestamp Converter
Translate between Unix seconds, milliseconds, ISO 8601 strings and calendar dates in your local or UTC time zone. See the relative time (“2 hours ago”) and round-trip precision instantly. Fully offline.
Type a value and the tool auto-detects whether it is seconds, milliseconds, microseconds or an ISO date, then shows every representation plus relative time against a live-ticking 'now' readout.
Convert a timestamp
Conversions follow JavaScript's Date semantics and your device's locale. The “now” readout ticks live so you can observe the epoch in motion. All local.
Learn more
What the Unix epoch actually is
A Unix timestamp is simply a count of seconds that have elapsed since 00:00:00 UTC on January 1st, 1970 — a moment referred to as "the epoch." That specific date has no deep technical significance; it was picked as a convenient, round reference point by the early Unix developers in the early 1970s, and it stuck as the universal standard well beyond Unix itself, into JavaScript, most databases, and effectively every modern programming language.
The appeal of representing a moment in time as a single, ever-increasing integer is that it sidesteps every ambiguity a calendar date carries: no timezone, no locale-specific formatting, no ambiguity about which came first. Two systems that both store timestamps as Unix seconds can compare, sort, and do arithmetic on them trivially, which is exactly why it became the default storage format across so much unrelated software.
Seconds, milliseconds, and telling them apart by digit count
Unix time is defined in seconds, but JavaScript's Date.now() and many logging systems use milliseconds instead, and some high-resolution systems go further to microseconds or nanoseconds. Since a timestamp is just a number with no built-in unit label, the practical way to tell them apart is by digit count at today's date: 10 digits means seconds (the range roughly spans the year 2001 through 2286), 13 digits means milliseconds, and 16 means microseconds — each unit adds exactly 3 digits because each is 1000× the previous one.
Getting this wrong produces a very specific, recognizable bug: treating a millisecond timestamp as seconds lands you on a date around the year 45,138 (roughly 1000× too far in the future), while treating a seconds timestamp as milliseconds lands you sometime in 1970, just after the epoch. Both are instantly recognizable red flags that a unit mismatch happened somewhere in the pipeline.
The Year 2038 problem
Many older and embedded systems store a Unix timestamp as a signed 32-bit integer, which can only represent values up to 2^31 − 1, or 2,147,483,647 — a second count that runs out at 03:14:07 UTC on January 19th, 2038. After that instant, a system using a genuinely 32-bit signed timestamp would overflow the same way an odometer rolls over, wrapping around to a negative number that represents a date in 1901 instead of 2038, corrupting any date comparison or arithmetic that relies on time moving forward.
Most modern systems and databases have already moved to 64-bit timestamps, which push the same problem out roughly 292 billion years — effectively solved for any practical purpose. The real risk is concentrated in legacy and embedded systems that were built assuming 32-bit time and are hard or impossible to update: older filesystems, some IoT and industrial hardware, and old file formats that baked in a 32-bit timestamp field at design time.
Why ISO 8601 became the interchange standard
ISO 8601's YYYY-MM-DD format exists specifically to remove the date-order ambiguity that plagues locale-specific formats — 03/04/2025 means March 4th in the US and April 3rd almost everywhere else, but 2025-03-04 is unambiguous everywhere. A full ISO 8601 timestamp (2025-03-04T14:30:00Z) also carries explicit precision down to seconds (or fractional seconds) and an explicit timezone offset, or a trailing Z to mean UTC specifically — nothing about the string's meaning depends on the reader's location or assumptions.
A quieter but genuinely useful property: because the format goes from largest unit (year) to smallest (second), ISO 8601 strings sort correctly as plain text in exactly chronological order, with no date-parsing required — a useful property for log filenames, database keys, or anywhere you want "sort alphabetically" and "sort by time" to be the same operation.
A quirk worth knowing: Unix time ignores leap seconds
Earth's rotation is gradually slowing and irregular enough that international timekeepers occasionally insert a leap second into UTC to keep clock time aligned with the planet's actual rotation. Unix time, by definition, does not count these — every day is defined as exactly 86,400 seconds, full stop, so when a leap second occurs, POSIX time either repeats a second or (depending on the system's leap-second handling strategy) smears it invisibly across the surrounding hours rather than ever showing a 61-second minute.
In practice this rarely matters for everyday conversions, but it's the reason Unix time and true astronomical/UTC time drift apart by a handful of seconds over the decades, and it's why systems that need genuine leap-second accuracy (some scientific and financial applications) use a different time standard (like TAI) internally rather than relying on Unix time directly.
Frequently asked questions
Is 1726994321 seconds or milliseconds?
By digit length: 10 digits are seconds, 13 are milliseconds, 16 are microseconds. This tool detects all three automatically.
Why do local and UTC times differ?
Your device's time zone shifts the wall-clock representation. The UTC readout is the ground truth that other systems share.
What does the relative time like '2 hours ago' come from?
It's computed live against your device's current clock, updating as you watch — handy for sanity-checking whether a timestamp is recent or stale.