Unix Timestamp Converter

Global tools

A Unix timestamp is a single number: the count of seconds since 1 January 1970 at 00:00 UTC, with no time zone inside it. Paste one here and you get back every form of the same instant — seconds, milliseconds, microseconds, nanoseconds, ISO 8601, the RFC 2822 form that HTTP `Date` headers use, and the wall clock in the zone you choose. Paste a date instead and you get the number back.

Seconds, milliseconds, microseconds or nanoseconds since 1970, an ISO 8601 date with or without a zone, or the word now.

Ten digits is seconds and thirteen is milliseconds; set this when the value is unusual, and the result will say what the other reading would have been. It only applies to a whole number - a date or `now` is already an instant, and the panel says so when the setting was not used.

Any IANA zone name - UTC, Europe/Berlin, America/New_York, Asia/Tokyo. UTC is the default so the values never depend on where the page is read.

Leave it blank for "timestamp.txt".

Results update as you type. Nothing leaves your device.

Read as seconds since 1970

1735689600 seconds

Wednesday, 1 January 2025 at 00:00:00 UTC. In UTC that instant is 2025-01-01 00:00:00 (UTC+00:00) on 2025-01-01.

Milliseconds
1735689600000
Weekday
Wednesday
ISO week
2025-W01
Time zone
UTC

Every form of the same instant

Unix seconds          1735689600
Unix milliseconds     1735689600000
Unix microseconds     1735689600000000
Unix nanoseconds      1735689600000000000
ISO 8601 (UTC)        2025-01-01T00:00:00.000Z
RFC 2822 / HTTP Date  Wed, 01 Jan 2025 00:00:00 GMT
Date and time in UTC  2025-01-01 00:00:00 (UTC+00:00)
Date only in UTC      2025-01-01
Weekday               Wednesday
ISO week              2025-W01
JavaScript            new Date(1735689600000)

Each line is a different way of writing the same moment - copy the one that fits, or use the copy button for all of them.

What the numbers do not say

  • seconds was chosen because the value has 10 digits, which is the usual length of a seconds timestamp.
  • Read as milliseconds instead, the same digits are 1970-01-21 02:08:09 UTC (1970-01-21T02:08:09.600Z). Ten digits and thirteen digits are one character apart and a thousand times apart in time, and that is the mistake this note exists for.
  • The zone rows are the same instant seen from UTC: 2025-01-01 there against 2025-01-01 in UTC, which differ whenever that zone is on the other side of midnight.
  • A timestamp names an instant, not a time of day. Everything here is absolute, so it reads the same whenever the page is opened - the only input that depends on the clock is the word now, which means the moment it was typed.
Converted in this browser tab, using the time zone data the browser already ships. Nothing was sent anywhere, and nothing about this page depends on where it is read from.

The part that catches people out is the unit: ten digits is seconds and thirteen is milliseconds, which is the difference between 2026 and 1970. This page names the reading it used, and says what the other reading of the same digits would have been — which is usually enough to see a mistake in one glance.

About this unix timestamp converter

Beneath every formatted date and time is a single integer, and this page moves between the two: it turns a timestamp into seconds, milliseconds, microseconds, nanoseconds, ISO 8601, the RFC 2822 form and the wall clock of any zone, and turns a date back into the number.

The conversion happens client-side, so a production log line that carries an identifier is not sent anywhere. The unit is read from the digit count and stated plainly - ten digits is seconds, thirteen is milliseconds - with the alternative reading shown beside it, because a thousandfold mistake lands a value in 1970 or in the year 56,000.

Unix time counts seconds and ignores leap seconds on purpose, so every day is exactly 86,400 seconds; that keeps the arithmetic simple and the wall clock occasionally a second from an official broadcast. This page converts and labels the reading it used; it does not decide which zone is correct for you.

How this unix timestamp converter works

What Unix time actually counts

Unix time is the number of seconds elapsed since 1970-01-01T00:00:00Z, a date chosen when the system was designed and kept ever since. It counts forwards too - a 64-bit count of seconds reaches the year 292 billion - and backwards, so 1969 and earlier are negative numbers rather than errors.

It also ignores leap seconds. UTC inserts a leap second now and then so that clocks stay in step with the earth’s rotation, and Unix time deliberately does not: every day is treated as exactly 86,400 seconds. That is why arithmetic on timestamps is so simple, and why a timestamp converted to a wall clock can be a second out from an official broadcast time.

A timestamp is an instant, not a time of day. There is no zone inside the number, so "1735689600" is not a moment in the morning or the evening: it becomes one only when somebody decides where they are standing. That is the whole reason this page asks for a zone instead of assuming one, and why UTC is the default - it is the reading everybody agrees on.

Seconds, milliseconds, microseconds and nanoseconds

Different tools chose different units and none of them says which one it used. Most APIs and every server-side language count seconds. JavaScript counts milliseconds (`Date.now()`), so a value from a browser is thirteen digits. Postgres, tracing systems and high-frequency logs carry microseconds, and some pipelines carry nanoseconds.

A thousandfold error is easy to miss and impossible to miss at the same time: read as seconds, a millisecond value lands in January 1970; read as milliseconds, a seconds value lands in the year 56,000 and is usually outside the range of dates a record can hold at all. This page reads the unit from the digit count, lets you override it, and states plainly which reading it used and what the other one would have been.

When the number is finer than a millisecond it is truncated for the date but kept in full in the number columns, so a nanosecond value copied back out is exactly the value that went in.

Time zones, offsets and daylight saving

The zone data comes from the browser’s own time-zone support, so `Asia/Tokyo` and `America/New_York` work with no extra download and no table of offsets to keep up to date. The offset printed is the one that applied at that particular instant rather than today’s: New York is -05:00 in January and -04:00 in July, and India is +05:30 all year.

That is also why "what time was this?" has more than one right answer near midnight: the same instant can be Monday in one zone and Tuesday in another, and the weekday row here follows the zone you chose. The same applies to the date at the top of the panel, which is the date in your zone, not in UTC.

Dates are read as ISO 8601 and nothing else. A local format like `12/25/2026` is not parsed at all, because it means the 12th of month 25 to half the world and would have to be guessed. A date string with no zone - `2026-09-16T12:00` - is read as UTC, and the results say so.

Worked examples

Each example below was run through the calculator on this page when the site was built, so the numbers match what you see when you enter the same inputs.

A ten-digit API timestamp

Timestamp or date: 1735689600 · Read a number as: Work it out from the number of digits · Show the wall clock in: UTC

Read as seconds since 1970

1735689600 seconds

Wednesday, 1 January 2025 at 00:00:00 UTC. In UTC that instant is 2025-01-01 00:00:00 (UTC+00:00) on 2025-01-01.

Milliseconds: 1735689600000 · Weekday: Wednesday · ISO week: 2025-W01 · Time zone: UTC

Ten digits is seconds, which is what this value reads as: 1 January 2025, midnight UTC. The rows below show the same instant as milliseconds, as an ISO date and as an HTTP Date header.

The same moment in milliseconds

Timestamp or date: 1735689600000 · Read a number as: Work it out from the number of digits · Show the wall clock in: UTC

Read as milliseconds since 1970

1735689600 seconds

Wednesday, 1 January 2025 at 00:00:00 UTC. In UTC that instant is 2025-01-01 00:00:00 (UTC+00:00) on 2025-01-01.

Milliseconds: 1735689600000 · Weekday: Wednesday · ISO week: 2025-W01 · Time zone: UTC

Thirteen digits is milliseconds, which is what JavaScript produces. The note under the results also shows what the value would have been if it had been seconds, because that is the mistake this tool sees most.

A date turned into a timestamp, in Tokyo

Timestamp or date: 2026-09-16T12:00:00Z · Read a number as: Work it out from the number of digits · Show the wall clock in: Asia/Tokyo

Read as an ISO 8601 date

1789560000 seconds

Wednesday, 16 September 2026 at 21:00:00 GMT+9. In Asia/Tokyo that instant is 2026-09-16 21:00:00 (UTC+09:00) on 2026-09-16.

Milliseconds: 1789560000000 · Weekday: Wednesday · ISO week: 2026-W38 · Time zone: Asia/Tokyo

The date carries its own zone (Z means UTC), and the wall clock rows are shown for Tokyo: the same instant is 21:00 there, on the same day.

A date with no zone, and a thirteen-digit value read as seconds

Timestamp or date: 2026-09-16 12:00 · Read a number as: Work it out from the number of digits · Show the wall clock in: Europe/Berlin

Read as an ISO 8601 date

1789560000 seconds

Wednesday, 16 September 2026 at 14:00:00 CEST. In Europe/Berlin that instant is 2026-09-16 14:00:00 (UTC+02:00) on 2026-09-16.

Milliseconds: 1789560000000 · Weekday: Wednesday · ISO week: 2026-W38 · Time zone: Europe/Berlin

A date string with no zone is read as UTC here and the results say so, while the Berlin rows show the offset that applies on that date. Switch the unit setting and the same digits can be read as seconds instead, which is what the unit override is for.

Frequently asked questions

What exactly is a Unix timestamp?

The number of seconds between 1 January 1970 at 00:00:00 UTC and the moment in question, with no time zone attached. It can be negative for earlier moments, and it deliberately ignores leap seconds, so Unix time treats every day as 86,400 seconds. That is why a timestamp can be converted in one step and why a wall clock derived from one can differ from an official broadcast time by a second.

Why is my converted date off by months or years?

Almost always because the unit is different from what this page assumed. Ten digits is seconds, thirteen is milliseconds (JavaScript), sixteen is microseconds and nineteen is nanoseconds. A millisecond value read as seconds lands in January 1970; a seconds value read as milliseconds lands in the year 56,000 and is usually outside the range of dates a record can hold at all. The unit setting overrides the reading, and the results always state which reading was used and what the other one would have been.

The date is right but the time is an hour out. Why?

Because of the zone, and this is usually daylight saving. New York is -05:00 in January and -04:00 in July; Berlin is +01:00 and +02:00; India is +05:30 all year. The offset printed here is the one that applied at that instant rather than today’s, so a July timestamp converted in the Europe/Berlin zone shows the summer offset. If a time looks an hour out, check the zone field and the offset on the row rather than the arithmetic.

What is the Year 2038 problem?

Plenty of software stores a timestamp as a signed 32-bit integer, which runs out at 2,147,483,647 seconds: 19 January 2038 at 03:14:07 UTC. The value is inside the range of a JavaScript date, so it converts here perfectly well - the problem is in the old software that can no longer hold it. Modern systems use 64 bits, which reaches the year 292 billion, and JavaScript uses milliseconds, which are safe until the year 275,760.

Should I store a timestamp or a date string?

Both have a job. A number is compact, sorts correctly, carries no zone ambiguity and arithmetic on it is trivial - which is why databases and APIs use it. A date string is readable by a person and self-describing, which is why they are used for interchange and logs. The mistake worth avoiding is a bare number whose unit is not written down anywhere: name the column for its unit (`created_at_ms` rather than `created`), because ten digits and thirteen digits look alike and mean wildly different things.

Why will this page not read 12/25/2026?

Because it cannot be read unambiguously. `12/25/2026` is Christmas in the United States and the 12th of the 25th month everywhere that writes the day first, and the browser would have to guess - which is exactly what `Date.parse` does, differently in different browsers. Dates here are ISO 8601: 2026-12-25, optionally with a time and a zone. It takes a moment longer to type and removes a whole class of bug.

Can I order events by timestamp?

Not safely on its own. A timestamp comes from a wall clock, and wall clocks are corrected: NTP can move a clock backwards by a fraction of a second, and a virtual machine coming back from a snapshot can move it back much further. For ordering within one machine, use a monotonic clock or a sequence number; for ordering across machines, use a timestamp plus a tiebreaker such as a logical clock or an identifier that embeds the time and a counter. Timestamps are for "when did this happen", not for "which came first".

Why can a leap second not be converted?

Because Unix time has no second number 60: a day is defined as 86,400 seconds, and the leap second is absorbed rather than counted. Stored data almost always writes 2016-12-31T23:59:60 as the first second of the next minute, which is what this page will accept and convert. If you have a value that genuinely says :60, it came from a broadcast time scale rather than from a Unix timestamp.

Assumptions and sources

  • Unix time counts seconds from 1970-01-01T00:00:00Z and is shown in ISO 8601 and RFC 3339 forms; time zones come from the IANA database in your browser.
  • A date without a zone is read as UTC and the page says so; a local format such as 12/25/2026 is refused with the shape to type instead.
  • Nothing is uploaded, so a timestamp copied from a log or an incident report stays private.

Last reviewed 2026-09-16. Runs locally on your device; keep backups; no financial advice applies. Read the full disclaimer.

Where a figure on this page comes from an official agency — HUD, IRS, FICO or a state body — the site keeps a dated snapshot of the source page in its sources library, and a scheduled job re-checks that snapshot, so the number can be traced back to the document it came from.