Epoch time conversion

Timestamp to date, and date to timestamp

Paste one value or convert a batch. Select a unit yourself when the source system documents it, or use automatic detection as a practical starting point.

Loading the Unix timestamp converter…

Enable JavaScript to convert timestamps and copy exact results.

A reliable three-step check

How to convert a Unix timestamp

The arithmetic is simple only after the unit and timezone meaning are clear. Use these steps to avoid the two most common failures: choosing the wrong scale and interpreting a local wall-clock value as UTC.

  1. 1

    Paste the epoch value

    Enter an integer or supported decimal timestamp. For a log, database export, queue message, or API response, copy the original token rather than a value already opened and rounded in a spreadsheet.

  2. 2

    Confirm its unit

    Choose seconds, milliseconds, microseconds, or nanoseconds from the producing system’s documentation. Auto-detection uses the value’s magnitude, so treat it as a hint rather than a contract.

  3. 3

    Read the right date

    Use UTC for protocols, logs, signatures, and cross-region comparisons. Use local time for human context, and retain the numeric timestamp when sub-millisecond precision matters.

One instant, one numeric offset

What is a Unix timestamp?

A Unix timestamp represents elapsed time relative to the Unix epoch: 1970-01-01 00:00:00 UTC. A positive value names an instant after the epoch, zero names the epoch itself, and a negative value represents an instant before it. The value is independent of a viewer’s country or timezone. Timezone formatting changes the displayed calendar fields, not the underlying instant.

The word “timestamp” does not identify a unit. Traditional Unix time is counted in seconds, while JavaScript and many web APIs commonly use milliseconds. Databases, telemetry pipelines, and operating-system interfaces may expose microseconds or nanoseconds. The values 1754208000, 1754208000000, 1754208000000000, and 1754208000000000000 can all describe the same instant at different scales.

Common Unix/POSIX time handling also does not count leap seconds as distinct numbered seconds. It is excellent for exchanging ordinary application instants, but it is not a complete representation of civil-time policy, calendar intent, or a future recurring schedule. Store the timezone identifier and business rule separately when an event must remain at “09:00 in Seoul” or “08:30 in New York” after rules change.

Epoch
1970-01-01 00:00:00 UTC, represented by zero.
UTC
A global reference used to format the instant without a regional offset.
Local time
The same instant rendered with the browser’s current timezone rules.
Precision
The smallest stored unit: seconds, ms, µs, or ns.

Scale matters

Seconds vs milliseconds vs microseconds vs nanoseconds

Each step is a factor of one thousand. Around the 2020s, the number of digits is a useful clue for positive modern timestamps, but it is not proof: older dates, far-future dates, padded strings, negative values, and application-specific epochs break simplistic digit rules.

UnitTypical modern shapeWhere it commonly appears
Seconds (s)1754208000Unix tools, Python timestamps, many SQL date functions, JWT iat and exp NumericDate values.
Milliseconds (ms)1754208000000JavaScript Date, browser events, many JSON and analytics APIs.
Microseconds (µs)1754208000000000Database internals, tracing systems, data warehouses, high-resolution event records.
Nanoseconds (ns)1754208000000000000Go and Rust services, Linux tooling, observability pipelines, exchange and sensor data.

Do not round event identity

Exact conversion for large timestamp integers

A current nanosecond timestamp is roughly nineteen decimal digits. That is far beyond JavaScript’s largest exactly representable consecutive integer, 9007199254740991. If an application first converts the token to a floating-point Number, several adjacent nanosecond values may collapse to the same number before date conversion begins. Sorting, deduplication, latency measurement, and event correlation can then produce false results.

LiveParse keeps integer timestamp arithmetic exact while changing scale. Whole seconds and the fractional remainder are separated without passing the original long token through binary floating point. Its ISO and UTC outputs are serialized directly from that exact value and can preserve as many as nine fractional digits. Local-time, RFC-style, and native Date projections use the browser’s millisecond date model, so use the exact ISO/UTC or epoch output when microsecond or nanosecond identity matters.

Precision and range are separate concerns. A value may be a valid integer but outside the calendar range supported by the browser date model. In that case the timestamp can still be rescaled arithmetically, yet no trustworthy browser date should be invented. Similarly, an auto-detected unit can be arithmetically valid while semantically wrong. The producer’s schema remains the best authority.

Exact input
The original decimal token is retained instead of becoming a rounded float.
Remainder
Sub-second digits remain in exact ISO/UTC and epoch output, up to nanoseconds.
Range check
Dates outside the browser-supported interval are reported rather than guessed.
Negative time
Pre-1970 values keep the correct sign and fractional relationship.

The instant does not move

UTC, local time, offsets, and daylight saving time

Use UTC for machine exchange

An ISO 8601-style value ending in Z is explicitly UTC. UTC makes logs from different hosts comparable and avoids the repeated or missing wall-clock hours created by daylight saving transitions.

Use local time for human context

The local view uses the browser’s timezone. It is convenient for answering “what time was that for me?” but another user in another zone will see different calendar fields for the same epoch value.

Include an offset in date input

2026-08-03T09:00:00+09:00 identifies an instant. 2026-08-03 09:00:00 alone does not; it needs a documented zone or an explicit decision to interpret it as local time.

Keep zone rules for schedules

An epoch stores one instant, not a recurring civil-time rule. Persist an IANA zone such as Asia/Seoul with the schedule when future “same local time” behavior matters.

Logs and exports

Convert multiple timestamps without mixing units silently

Batch conversion is useful when a log excerpt, database column, or event list contains more than one timestamp. Paste one value per line and review the detected or selected unit beside each output. Mixed-unit data deserves special attention: a seconds field copied next to a millisecond field can look like a plausible list of integers even though one result lands thousands of years away.

For production migrations, preserve the raw column, add a separate normalized column, and record the transformation rule. Reject or quarantine rows whose unit, range, or timezone meaning is unknown. A convenient converter is a review aid; it cannot recover metadata that the source system never recorded.

When timestamps are embedded in JSON, check the field’s schema before extracting them. JSON itself has no timestamp type, so a number named createdAt could be seconds or milliseconds, while a string could be ISO text or a numeric token. Use the JSON formatter and validator to inspect payload structure, and the JSON comparison tool to verify that a migration changed only intended fields.

Keep raw
Retain the source token for audit, rollback, and precision checks.
Normalize
Choose one documented target unit and UTC representation.
Validate
Set acceptable date ranges and reject implausible conversions.
Document
Name units in schemas and column names, such as created_at_ms.

Range, not format

The Year 2038 problem explained

The Year 2038 problem affects systems that store Unix seconds in a signed 32-bit integer. The maximum value, 2147483647, represents 2038-01-19T03:14:07Z. Adding one second overflows that representation. The timestamp text is not inherently broken, and Unix time does not end in 2038; the limitation belongs to that particular integer storage type and to software that depends on it.

A signed 64-bit seconds field has vastly more range than ordinary civil applications need. Migrating is not only a database-column change: serialized messages, file formats, foreign-function interfaces, firmware, caches, validation rules, and client libraries may still assume 32 bits. Test dates across the boundary and verify the entire path from input through storage to display.

Do not “solve” 2038 by changing seconds to milliseconds inside the same 32-bit field; multiplying by one thousand makes the range much smaller. Choose an appropriately wide type, specify the unit, and test. For code in several languages, see the Unix timestamp conversion examples.

Max int32
2147483647 seconds.
Boundary
2038-01-19T03:14:07Z.
Failure
The next value cannot fit in a signed 32-bit integer.
Remedy
Use a reviewed wider representation across every system boundary.

Common workflows

When an epoch converter is useful

Debug application logs

Translate numeric event times into UTC, compare services in different regions, and keep exact sub-second values available for ordering requests inside a busy trace.

Inspect JWT claims

Read NumericDate claims such as iat, nbf, and exp as seconds since the epoch. The focused checker applies exact boundaries and explicit leeway; neither conversion nor decoding verifies the token’s signature.

Review database exports

Check whether a column is stored in seconds, milliseconds, microseconds, or nanoseconds before importing, rescaling, or building a date index.

Investigate API payloads

Confirm that timestamps from different endpoints refer to the expected instants and that a frontend has not mistaken seconds for the milliseconds expected by JavaScript.

Questions answered

Unix timestamp converter FAQ

How can I tell whether a timestamp is in seconds or milliseconds?

For a positive date near the present, seconds usually have 10 digits and milliseconds 13. That is only a magnitude heuristic. Confirm the field definition, SDK, database schema, or producer code whenever possible, especially for historical dates and custom epochs.

Why does my converted date show 1970?

A millisecond value may have been interpreted as seconds after division, or a seconds value may have been passed to an API that expects milliseconds without multiplying by 1,000. Confirm both the input unit and the receiving function’s unit.

Are Unix timestamps always UTC?

A Unix timestamp identifies an instant relative to a UTC epoch and does not carry a timezone. It can be formatted in UTC or any local zone. A date typed without an offset, however, needs an interpretation before it can be converted to an instant.

Can a Unix timestamp be negative?

Yes. Negative values represent instants before 1970-01-01T00:00:00Z. Some legacy systems or APIs reject them even though the representation is meaningful, so check the target system’s supported range.

Which outputs preserve microseconds and nanoseconds?

LiveParse’s exact ISO/UTC and epoch outputs preserve as many as nine fractional digits. Local-time, RFC-style, and native browser Date projections are millisecond-based, so use an exact output when sub-millisecond identity matters.

Is the converter private?

Yes. Conversion runs in the current browser tab; the timestamp values you enter are not sent to a conversion API. The site’s privacy page explains this processing model and remaining device-level considerations.