ToolConvoyToolConvoyv2.6
DEV

Epoch to Date — Convert Unix Timestamps to Readable Dates

Convert Unix timestamps to human-readable dates in your local timezone or UTC. Seconds, milliseconds, and nanoseconds, all in your browser.

● LOCAL · GENERATED IN YOUR TAB0 network requests from tools since page load

Epoch to Date

Convert Unix epoch timestamps to human-readable dates. Works entirely in your browser — no uploads.

Epoch-to-Date is the inverse of Date-to-Epoch, and the conversion is just as mechanical — divide the timestamp by the precision (1000 for milliseconds, 1_000_000 for microseconds, 1_000_000_000 for nanoseconds), add the Unix epoch (00:00:00 UTC on January 1, 1970), and you have a date. The reason a tool exists for what is effectively new Date(timestamp * 1000) is the precision question: a timestamp of 1749936000 could be seconds (2026-06-16), milliseconds (1970-01-21), or any other unit depending on what the source emits. Getting the precision wrong produces a date that is off by 55 years or by 18 months, and the bug is silent — the output is a valid date, just the wrong one.

The non-obvious thing about Epoch-to-Date is the auto-detection. The tool here uses the magnitude of the number to guess the precision: 10-digit numbers are seconds, 13-digit are milliseconds, 16-digit are microseconds, 19-digit are nanoseconds. The detection is heuristic — a 10-digit number in 2286 would be milliseconds, not seconds, and the tool would mis-detect. For ambiguous inputs (timestamps near a precision boundary, dates far in the future), the tool shows the detected unit and lets you override. The output is in your browser’s local timezone by default, with a UTC toggle for the same instant in UTC.

For a final hand-off: if the timestamp came from a Unix C API, a Bash date +%s, or a Python time.time() call, the precision is seconds. If it came from JavaScript’s Date.now(), Java’s System.currentTimeMillis(), or a log file with millisecond precision, the precision is milliseconds. If it came from Go’s time.Now().UnixNano() or a high-resolution telemetry source, the precision is nanoseconds. The tool’s auto-detection handles the common case; for ambiguous inputs, the precision toggle in the output panel lets you try each variant and pick the one that gives a plausible date.

Advertisement

How to use

  1. Enter a timestamp

    Type or paste a Unix timestamp into the input. The tool auto-detects the precision (seconds, milliseconds, microseconds, nanoseconds) from the magnitude of the number and shows the detected unit in the output.

  2. Pick a display timezone

    Default is your browser's local timezone. Toggle to UTC for the same instant in Coordinated Universal Time. The output shows the date in both formats with the timezone abbreviation in parentheses.

  3. Copy the formatted date

    Copy the date as an ISO 8601 string (the right pick for APIs and config files), as a locale-formatted string (the right pick for human reading), or as a Unix timestamp in the original precision (for round-tripping).

Frequently asked

How does the tool detect the timestamp precision?

By magnitude. Timestamps from 1970 to 2038 are seconds (10 digits). Timestamps from 1970 to year 1970 + 274,000 years are milliseconds (13 digits). Microseconds are 16 digits, nanoseconds are 19 digits. The tool picks the largest unit that still gives a date in the plausible range.

What timezone is the date in?

The default is your browser's local timezone. The 'UTC' toggle shows the same instant in Coordinated Universal Time. The output labels each format with the timezone abbreviation (PST, EST, JST, etc.) so you can verify the conversion.

Why is the date off by one day from what I expected?

Two common causes: the timestamp is in seconds and the tool auto-detected milliseconds (or vice versa), or the timezone is different from what you assumed. Check the detected unit and the timezone toggle, then re-run.

Can I convert a negative timestamp?

Yes — negative Unix timestamps represent dates before 1970 (the Unix epoch). The tool handles negative values from approximately year -271,821 (about 271,000 years before 1970) up to year 275,760. Dates outside that range are not supported by JavaScript's Date object.

Is there a maximum timestamp the tool can handle?

JavaScript's Date object supports up to ±275,760 years from 1970. In epoch-seconds that is about 8.7 × 10^12. For nanosecond precision, that is about 8.7 × 10^21. The tool follows JavaScript's limit and reports dates outside the range as Invalid Date.

Limitations

  • JavaScript Date rangeThe tool uses JavaScript's `Date` object internally, which handles dates from approximately -271,821 to +275,760. Timestamps outside that range produce `Invalid Date`. For pre-historic or far-future timestamps, use a Python or Java tool with a longer date range.
  • DST transitions can be confusingJavaScript's `Date` object handles DST transitions correctly for the local timezone, but the conversion between UTC and local time on the transition day can be ambiguous. The output shows both formats so you can verify the result.
  • No lunar or sidereal timeThe tool works in solar (Gregorian) time. It does not convert to/from lunar calendars, sidereal time (used in astronomy), or TAI (International Atomic Time, which differs from UTC by leap seconds). For astronomical calculations, use a dedicated library.

Platform notes

macOS
macOS Terminal: `date -r 1749936000` (or `date -r @1749936000` on newer BSD coreutils) is the CLI equivalent. The browser tool is the right pick for quick conversions where opening a terminal is not worth the setup time.
Windows
PowerShell: `[DateTimeOffset]::FromUnixTimeSeconds(1749936000).ToString('o')` is the .NET equivalent. The browser tool is the right pick for cross-platform consistency — the same input produces the same output on every platform.
Linux
GNU coreutils: `date -d @1749936000` is the CLI equivalent. The browser tool is the right pick for content pasted from a chat, an email, or a log file where retyping is impractical.
CLI
The same conversion logic is available in every language's standard library: Python's `datetime.fromtimestamp()`, Ruby's `Time.at`, Go's `time.Unix()`. The browser tool is the right pick for ad-hoc conversions that do not warrant a script.
Web
Runs entirely client-side. Works offline once the page has loaded. The conversion uses JavaScript's `Date` object, which has known quirks around DST boundaries — for critical conversions, verify the result against a reference clock.
Advertisement

Related tools

Advertisement