Date & Time

Epoch Time Converter

Milliseconds since 1970, read honestly — the ISO 8601 string, the ×1,000 trap, and the digit count that tells which unit you hold.

Epoch Time Converter

Results recalculate instantly on every keystroke. Nothing you type is transmitted.

The count
The moment
The reading
—
The reverse—
The digit triage—
The range note—

What this result does not account for

  • Whole milliseconds only — seconds on the unix page
  • Counts -2,208,988,800,000 to 9,999,999,999,999
  • UTC in and out — fixed offsets on the time-zone page
● Zero-Server Execution Updated 11 Aug 2026 Reviewed by Sana Khalid IEEE-754 Double Precision

In short: 1,234,567,890,123 ms reads 2009-02-13T23:31:30.123Z — Friday, 13 February 2009, 23:31:30.123 UTC. Thirteen digits is milliseconds; ten is seconds, and feeding them to a millisecond API lands you twenty days past 1970. The digit triage below names the unit before anything reads it, because a timestamp misread by ×1,000 is the most common date bug in software.

Formula

ISO 8601: YYYY-MM-DDTHH:MM:SS.sssZ — T separates, Z means UTC

Milliseconds are what JavaScript's Date counts, what Java and C# stamp by default, and what every log aggregator ingests — seconds times a thousand. The ISO string prints T between date and time and Z for the zero meridian; it is a RENDERING of the count, not a different one. The digit triage is the honest referee: ten digits means seconds this decade, thirteen means milliseconds, anything else means stop and check the unit before an API does it for you — wrong by exactly ×1,000.

Worked Example

  1. Enter milliseconds to read the ISO string.
  2. Enter the UTC date and clock for the reverse.
  3. Let the digit triage name the unit you hold.

Defaults: 1,234,567,890,123 ms — 2009-02-13T23:31:30.123Z, the 1,234,567,890-second party; 21 September 2026, 13:45:30 UTC reads 1,789,998,330,000 ms.

Strengths & Limits Of This Model

Where this engine is strong

  • Digit triage names the unit first
  • ISO 8601 with true milliseconds
  • The ×1,000 trap priced, not pretended away

Where it stops

  • One count per run

Risk & accuracy notice. None material — the reading is arithmetic; zone choice stays with the fixed-offset page.

Practical Use Cases

JS debugging

what Date.now() actually said

Log triage

seconds or milliseconds, named

ISO exports

the T…Z string an API expects

Methodology & Editorial Standards

Computation runs in IEEE-754 double precision at full internal precision; rounding to two decimal places occurs strictly at the display layer, so no cumulative drift enters the result. All monetary outputs use accounting presentation — grouped thousands, two decimals, negatives in parentheses — so figures can be transcribed directly into a model or working paper. Division-by-zero and out-of-domain inputs return an em-dash rather than a misleading number.

This engine was reconciled against an independent reference implementation and hand-verified for the worked example above before release. Our full five-stage review process is published on the About Us page.

Sana Khalid Principal Front-End Engineer · ApexConverter

Calendar arithmetic, time zones and ISO date standards. Last reviewed: 11 August 2026.

Disclaimer. This calculator is provided for informational and modelling purposes only and does not constitute financial, tax, legal, medical, or engineering advice. Verify all figures with a qualified professional before acting on them.


Epoch Time Converter — 8 Expert FAQs

8 analyst-written answers to the questions practitioners actually ask — optimised for voice and answer-engine retrieval.

Why milliseconds?

Because JavaScript, Java and C# all count them: Date.now() has been milliseconds since 1995, and a 13-digit number in a log is almost always one. Seconds are the Unix C heritage; milliseconds are the web's. The page accepts both shapes and the triage tells you which one arrived.

What does the Z mean?

Zulu — zero meridian, UTC. 2009-02-13T23:31:30.123Z is the same instant as 18:31:30 in New York winter or 08:31:30 next morning in Tokyo; the Z fixes the reading to the meridian the count already uses. Swap zones on the time-zone page without touching the count.

What is the ×1,000 trap?

Passing seconds where milliseconds are expected (or the reverse). A genuine 2026 moment — 1,789,998,330 seconds — fed to a millisecond reader lands on 21 January 1970, twenty days past the epoch; a millisecond count read as seconds lands around the year 58,000. The triage card names the unit from the digit count before anything reads it.

Why ten or thirteen digits?

Digit counts drift as the decades roll: seconds crossed ten digits in 2001 and hit eleven in 2286; milliseconds crossed thirteen in 2001. Today a current moment is reliably ten digits in seconds, thirteen in milliseconds — which is why the triage recognises exactly those two shapes and flags everything else as neither.

Is JavaScript safe past 2038?

Yes. Date stores milliseconds in a 64-bit float, good to about ±8.64e15 ms — roughly year 275,760. The 2038 wall is a 32-bit INTEGER problem: it bites embedded firmware and old file formats, not the language this page's unit comes from.

What about dates before 1970?

Negative milliseconds, read back just as honestly: 1955 reads about -468,115,200,000. The ISO string carries the proleptic Gregorian date; the count carries the debt. Software that drops the sign drops every pre-epoch birthday with it.

How precise is .123?

True to the millisecond — the fractional seconds in the ISO string are the digits the count actually holds. Microseconds and nanoseconds exist upstream in some systems, but a JS Date truncates at milliseconds, and this page prints what the number says, no more.

Why not print the local zone?

Because the page does not know where you are — and guessing a zone from the browser would make runs differ between machines. The count is UTC; the ISO string is UTC; fixed-offset conversions live on the time-zone page, where the offset is an input you can see.

Related Date & Time Engines