A Unix timestamp is a count of seconds since 1 January 1970 UTC. That number is the same everywhere on earth at the same moment — a timestamp carries no timezone. The wall clock beside it is a rendering, which is why UTC is always shown too.
The real trap is seconds versus milliseconds. Unix time is seconds, but Date.now() and nearly every JavaScript API hand you milliseconds. Pass milliseconds where seconds are expected and you land in the year 57,000; pass seconds where milliseconds are expected and you get 20 January 1970 — which looks entirely plausible in a log.
Neither mistake throws. So this says which reading it used, and prints the other one beside it: that one lands in 1970 or in the year 33,658, which makes a wrong guess obvious at a glance.
By its size. A current timestamp in seconds is ten digits; the same instant in milliseconds is thirteen. Anything above 9,999,999,999 is read as milliseconds, which holds until the year 2286. The page tells you which reading it used and shows what the other one would have given, so a wrong guess is obvious rather than silent — the alternative will land in 1970 or in the year 33,658.
Because neither mistake throws an error. Unix time is seconds, but Date.now() and almost every JavaScript API hand you milliseconds. Feed milliseconds to something expecting seconds and you get a date around the year 57,000; feed seconds to something expecting milliseconds and you get 20 January 1970 — which looks almost plausible in a log. Expiry timestamps on tokens are the classic casualty.
No. It counts seconds since 1 January 1970 UTC and is the same number everywhere on earth at the same moment. The wall clock shown beside it is a rendering of that instant in one place — which is why UTC is always displayed too. If you are storing a moment, store the timestamp; the timezone is a display choice made later.
A signed 32-bit integer runs out at 2,147,483,647 seconds, which is 03:14:07 UTC on 19 January 2038. A system still storing Unix time in 32 bits wraps around to 1901 at that point. The page flags any timestamp past it. If you are choosing a column type today, make it 64-bit.
Yes — type a date instead of a number. 2026-09-21 or 2026-09-21T14:30:00Z both work. A date with no offset is read as UTC, which is what JavaScript does; if you meant a local wall clock, add the offset (2026-09-21T08:00:00+08:00).
Not supported, deliberately. Postgres, Go and several tracing formats do use them, but a sixteen-digit number is genuinely ambiguous — it is also a valid millisecond value from the distant future — and guessing wrong is worse than declining. Divide by 1,000 or 1,000,000 first and the result is exact.
Runs entirely in your browser; nothing is transmitted. A timestamp is an instant and carries no timezone — the local time shown is a rendering of it, and UTC is always shown beside it. Nothing you type here is sent to our servers — the calculation runs entirely in your browser.