Reading epoch times from logs and databases
Unix time counts the seconds since 1970-01-01 00:00:00 UTC, and it turns up everywhere: database columns, JWT exp and iat claims, Kafka offsets, log lines, API responses and file metadata. A raw number like 1789475200 says nothing to a human, so you convert it to check when a token expires, line up events from two systems, or debug an off-by-one-hour bug.
Seconds, milliseconds, microseconds or nanoseconds
Different systems count in different units: Unix tools and most databases use seconds, JavaScript’s Date.now() and Java use milliseconds, Python’s time.time_ns() and Go’s UnixNano use nanoseconds, and some tracing systems use microseconds. The unit is detected from the size of the integer part:
- below 100,000,000,000 → seconds (covers dates up to the year 5138),
- below 10^14 → milliseconds,
- below 10^17 → microseconds,
- anything larger → nanoseconds.
The detected unit is printed next to each value, so you can spot a wrong guess immediately. The one ambiguity: a millisecond timestamp from before March 1973 is small enough to look like seconds.
Decimals are accepted (1789475200.5 is half a second later), negative values count back from 1970 (-14182940 is the Apollo 11 landing), and every digit is kept down to the nanosecond. Digits finer than that are dropped with a warning.
Time zone
UTC is always shown. The Time zone option adds a second line with the same instant in another zone: type an IANA name such as Asia/Singapore, America/New_York or Europe/Berlin, or local to use this device’s zone. The default is UTC.
Offsets come from the time-zone database built into your browser, including daylight saving time and historical changes. Converting -14182940 with Asia/Singapore shows +07:30, the offset Singapore actually used in 1969, not today’s +08:00. Output does not depend on your computer’s zone unless you pick local.
What each result shows
For every timestamp you get:
- UTC in ISO 8601 with a
Zsuffix, e.g.2026-09-15T12:26:40.000Z, with extra digits when the input had microseconds or nanoseconds. - The chosen zone in ISO 8601 with its numeric offset (when the zone is not UTC).
- A readable line such as
Tuesday, 15 September 2026, 20:26:40 GMT+8. - A relative description such as
3 years agoorin 2 hours.
With a single timestamp, an info panel also lists the value in seconds and milliseconds, handy for converting between units.
Many timestamps at once
Paste a column copied from a spreadsheet or a log: values can be separated by line breaks, spaces, commas or semicolons, and text after # on a line is ignored, so you can annotate values. Anything that is not a number is reported with its line and column while the rest still convert. The reverse direction is the date to Unix timestamp converter. No timestamp leaves your browser.
Examples
Mixed units
The same instant written in seconds, milliseconds, microseconds and nanoseconds; each unit is detected and the extra precision appears in the ISO output.
1789475200
1789475200123
1789475200123456
17894752001234567891789475200 (seconds)
UTC 2026-09-15T12:26:40.000Z
Readable Tuesday, 15 September 2026, 12:26:40 GMT
Relative 21 days ago
1789475200123 (milliseconds)
UTC 2026-09-15T12:26:40.123Z
Readable Tuesday, 15 September 2026, 12:26:40 GMT
Relative 21 days ago
1789475200123456 (microseconds)
UTC 2026-09-15T12:26:40.123456Z
Readable Tuesday, 15 September 2026, 12:26:40 GMT
Relative 21 days ago
1789475200123456789 (nanoseconds)
UTC 2026-09-15T12:26:40.123456789Z
Readable Tuesday, 15 September 2026, 12:26:40 GMT
Relative 21 days ago
Historical date in Singapore time
A negative timestamp before 1970, shown with the +07:30 offset Singapore used at the time; the comment after # is ignored.
-14182940 # Apollo 11 landing-14182940 (seconds)
UTC 1969-07-20T20:17:40.000Z
Asia/Singapore 1969-07-21T03:47:40+07:30
Readable Monday, 21 July 1969, 03:47:40 GMT+7:30
Relative 57 years ago
JWT claims in New York time
Two comma-separated claims from a token convert one hour apart, with the daylight-saving offset applied; the label after # is ignored.
1789475200, 1789478800 # iat, exp1789475200 (seconds)
UTC 2026-09-15T12:26:40.000Z
America/New_York 2026-09-15T08:26:40-04:00
Readable Tuesday, 15 September 2026, 08:26:40 GMT-4
Relative 21 days ago
1789478800 (seconds)
UTC 2026-09-15T13:26:40.000Z
America/New_York 2026-09-15T09:26:40-04:00
Readable Tuesday, 15 September 2026, 09:26:40 GMT-4
Relative 20 days ago
Common errors and how to fix them
| Error | Cause | Fix |
|---|---|---|
"2026-09-14" is not a Unix timestamp | The input is a date string, not a number of seconds since 1970. | Use the date to Unix timestamp converter for dates; this page expects numbers. |
Unknown time zone "EST5" | The Time zone option is not a valid IANA zone name. | Use a name such as America/New_York, Europe/London or UTC, or “local” for your device’s zone. |
This timestamp is outside the supported range (about ±275,760 years from 1970) | The number is too large for any calendar date, often several timestamps concatenated without a separator. | Separate the values with spaces or line breaks and check for extra digits. |
Digits finer than a nanosecond were dropped | A warning: the decimal part has more digits than nanosecond precision allows. | Nothing to do unless you expected a different unit. |
Frequently asked questions
How does it know whether my timestamp is in seconds or milliseconds?
From its magnitude: values below 10^11 are seconds, below 10^14 milliseconds, below 10^17 microseconds, and larger ones nanoseconds. The detected unit is shown next to each result.
Does Unix time include leap seconds?
No. Unix time assumes every day has exactly 86,400 seconds, so leap seconds are not counted and never appear in the output.
Can I convert negative timestamps?
Yes. Negative values are instants before 1 January 1970 and are converted with the correct historical offsets.
What does "local" do in the Time zone box?
It uses the time zone your browser reports for this device. Any other value must be an IANA name such as Asia/Tokyo.
Is anything sent to a server?
No. Unit detection, zone maths and formatting all run in your browser.