An epoch in seconds or milliseconds, an ISO 8601 string, or a date with a time.

How to read the number

Below eleven digits it reads as seconds, above as milliseconds. That is a reasonable guess, not a fact: if it guesses wrong, choose yourself.

The instant

Epoch · seconds

—

Epoch · milliseconds

—

These two numbers do not depend on the zone. An instant is the same everywhere: it is the wall clocks that differ.

Seconds are truncated, not rounded: it is the second in progress, like date +%s.

The clocks

UTC · In full

—

UTC · ISO 8601

—

UTC · In full · yours

—

UTC · ISO 8601

—

Everything happens in your browser: no data is sent anywhere.

The instant lives in the address: whoever opens the link sees this moment, not theirs.

How it works

  1. Paste an epoch, an ISO 8601 string or a date with a time. Or press Now.
  2. Read below how it was interpreted: the unit of a number is a guess, and if it guesses wrong you choose.
  3. Pick the zone and copy the format you need.

Why it exists

Because a log says 1700000000 on one line and 1700000000000 on the next, and those are the same instant in two units. Because a date from an API is in UTC and the one in the database is in the server’s zone. And because the question you actually have in front of a timestamp is never “convert it”, it is “did this happen before or after that one”.

About the two units

A ten-digit number is almost always an epoch in seconds, a thirteen-digit one in milliseconds. The tool guesses with a threshold at eleven digits, and the guessing is declared: under the field it says how it read the number, and next to it are two buttons to contradict it.

The threshold is not arbitrary. Eleven digits read as seconds are the year 5138, which is nobody’s data; read as milliseconds they are March 1973, which very well may be. Below it the reasoning flips, and the only sensible answer is “seconds”.

About the dates I will not convert

03/04/2026 means 3 April in Europe and 4 March in the United States. The JavaScript engine does not stop at that string: it answers March, the American way, without flagging anything. A converter that passes that answer on is worse than one that refuses it, because nobody double-checks a date they were handed. So here it is refused, with a note on how to write it instead.

There is one form I do accept although it is not ISO: 2026-08-01 10:30, with a space where the T should be. It is not ISO but it is how databases and logs write dates, which is to say it is what gets pasted in here nine times out of ten.

About the date with no time

2026-08-01 and 2026-08-01T00:00 are not the same instant, and the difference is in the language specification, not in this tool: a date without a time is read as UTC, the same date with a time but no zone is read where you are. In Zurich in summer that is two hours apart. The two strings look alike enough to be mistaken for each other, so the line under the field always says which of the two it saw.

About the year 2038

2147483647 is the last second that fits in a signed 32-bit integer, and it falls on 19 January 2038. It passes here without trouble, and so does the second after it: that limit belongs to a C type, not to JavaScript dates, which reach about 275,000 years either side of 1970.

About your data

Everything happens in your browser. This site is made of static files and has no server to send anything to, even if it wanted one. The instant goes into the address, so a link carries the moment you are talking about and not the one it is opened at.

From here you also go here

UUID generator

Version 4 UUIDs, one at a time or in batches, in lowercase, uppercase, without hyphens or in braces.

Development

JSON formatter and validator

Paste some JSON, find out whether it is valid and where it breaks, with line and column when the browser gives them.

Development

JWT decoder

A token's header and payload, with readable dates and glossed claims. The signature is not verified, and the tool says so.

Development

All tools