Timestamp Converter
Convert Unix timestamps to human-readable dates and back, both directions stay in sync as you edit either one.
Unix timestamp
Date & time
What's a Unix timestamp?
Seconds (or ms) since Jan 1, 1970 UTC.
The Unix epoch is midnight UTC on January 1, 1970. A timestamp is just the number of seconds (or milliseconds) since then, which is why it sorts and compares as a plain number, unlike a formatted date string.
Seconds vs. milliseconds
Unix, Linux, and most backend APIs use seconds. JavaScript's own
Date.now() and most frontend code use milliseconds. Mixing the two
up is one of the most common timestamp bugs, a "seconds" value pasted into a
"milliseconds" field lands somewhere in 1970.
How it works
Everything routes through the browser's Date object, which internally stores one number: milliseconds since the Unix epoch, midnight UTC on January 1, 1970. Convert a timestamp and the tool multiplies by 1,000 if you said seconds, builds a Date, then renders it four ways: your local time via toLocaleString (the browser's Intl formatter, using your own timezone and language), UTC, ISO 8601, and a relative "in 3 days / 2 hours ago" label computed by bucketing the difference from now into years, months, days, hours, minutes, or seconds.
Going the other way, the date picker's value is parsed as local time and converted back to both seconds and milliseconds. The datetime-local field is fed by shifting the timestamp by your timezone offset first, which is the fiddly part most converters get subtly wrong: toISOString() always speaks UTC, so without that shift the picker would show a time hours off from the wall-clock time you expect.
The classic mistake this tool guards against by making the unit explicit: seconds vs milliseconds. Current Unix times are 10 digits in seconds and 13 in milliseconds. Parse a millisecond value as seconds and you land 50,000+ years in the future; do the reverse and you get January 1970. If a conversion looks absurd, flip the unit dropdown, that's almost always the whole bug. Out-of-range values (JavaScript dates cap at 100 million days either side of the epoch, roughly the year 275760) produce a clear error instead of garbage.
All parsing and formatting is local browser API work. Open DevTools' Network tab while you convert: no request fires, and timestamps from your logs never leave your machine.