Unix ↔ ISO 8601

Unix timestamp converter

Turn Unix seconds or milliseconds into ISO 8601, UTC and local time — and back — with the unit always explicit and the offset always shown.

The unit is never guessed from the length.

Strict ISO 8601 is best: 2024-03-03, 2024-03-03T10:30:00Z, 2024-03-03T16:00:00+05:30.

Conversion uses your browser's date and Intl APIs. Nothing about the time, your time zone or your device is sent to a server.

Short answer: put a number in the timestamp box and choose seconds or milliseconds; or type an ISO date. Either way you get the ISO 8601 string, the UTC and local renderings, both Unix forms, the weekday, the offset and the UUIDv7 hex prefix.

Unix time in one paragraph

Unix time counts from 1970-01-01T00:00:00Z. It has no time zone: it is a count of elapsed seconds (or milliseconds), which is why two devices in different countries show different clock times for the same value. Every conversion here starts from that instant, then renders it in UTC, in your local zone and as the raw numbers.

Why the unit is a setting, not a guess

Many converters look at the digit count: 10 digits means seconds, 13 means milliseconds. That heuristic breaks for dates far from now — 1973 in milliseconds also has 10 digits, and a 12-digit value is ambiguous. Making you choose costs one click and removes an entire class of silently wrong results. The result always shows both Unix forms so you can confirm which reading you meant.

Reading the rows

Decoding a token instead? The JWT decoder readsexp, iat and nbf with the same maths applied to the claims.

Timestamp questions

How do I convert a Unix timestamp to a date?

Paste the number, choose whether it is seconds or milliseconds, and the date appears as ISO 8601, UTC and your local time. The unit matters: 1700000000 is 14 November 2023, while 1700000000000 milliseconds is the same instant only when read as milliseconds — the same digits in the other unit give a date in 1970 or in the far future.

How do I convert a date to a Unix timestamp?

Type an ISO 8601 value such as 2024-03-03T10:30:00Z into the date field. Both Unix forms are shown for that instant: seconds and milliseconds. Include Z or an offset so the time is unambiguous; without one the browser assumes local time.

Why does the same timestamp show a different local time here?

Unix time is an absolute instant; the local rendering depends on your device time zone and daylight-saving rules. That is why the result lists UTC, your local time and the numeric offset separately — the instant never changes, only its presentation.

What is the difference between seconds and milliseconds?

Unix time in seconds counts from 1970-01-01T00:00:00Z in whole seconds, which is what most APIs and JWT claims use. Milliseconds (13 digits today) are what JavaScript Date.now() returns. Mixing them is the single most common timestamp bug, which is why this page never guesses.

What is the UUIDv7 prefix in the result?

A UUIDv7 starts with the same 48-bit millisecond timestamp, printed as 12 hex characters. Seeing the hex prefix next to the date makes it easy to read the time out of a v7 identifier, or to check that the identifier you are looking at really is time-ordered.

Does this page handle dates before 1970?

Yes. Negative timestamps and ISO dates before the epoch convert normally. The limit is JavaScript's own range, about ±8.64 × 10¹⁵ milliseconds, and values outside it are rejected with an explanation rather than shown as Invalid Date.

Related tools