Unix Timestamp Converter Tool

Convert epoch time to a date or back, in any time zone, in four units.

100% Browser-Based Local Processing
Now 0
What you have
Date
Time, 24 hour
This instant

Waiting for a timestamp

Privacy Focused

🔒 Local Processing. Your code never leaves your device.

Instant Results

🌐 Fully Client-Side. Runs instantly in your browser.

No Signup

⚡ No accounts. No API keys. Just open and use.

Browser Based

🚀 No installs, no CLI, no build step.

Unix Timestamp Converter & Epoch Calculator

Convert a Unix timestamp to a date, or a date to a timestamp, in your browser. The unit is read from the number's magnitude — seconds, milliseconds, microseconds or nanoseconds — and the result is shown in any IANA time zone, as ISO 8601, RFC 2822 and a relative reading. Nothing is uploaded.

Unix time is the number of seconds since 1 January 1970 UTC, and it turns up in a log line, a JWT, a database column and an API response, in four different units depending on who wrote the system. Getting that unit wrong is the classic bug: a millisecond timestamp read as seconds lands 50,000 years out, and a second timestamp read as milliseconds lands in 1970.

So the unit here comes from the magnitude of the number rather than from its length, and the status line always says which one it chose. 1718294400.5 is seconds with a fraction — Python's time.time() — not the millisecond value its twelve characters would suggest. Microseconds and nanoseconds have their own entries, because Go, Java and Postgres all emit them.

Going the other way, the tool will not quietly fix a date you did not type. 31 February converts, and says it rolled to 3 March. A year of 50 is the year 50. The zone is any of the ~400 IANA zones the browser already knows, so the same instant can be read in Asia/Kolkata and America/New_York without applying an offset by hand.

How to convert a Unix timestamp

Pick a direction, or read the clock

The bar carries both: a segmented control for which way you are converting, and the current Unix timestamp in seconds, ticking, with its own Copy button. That number is what most visits are actually after.

The clock stops while the tab is in the background and picks up again when you come back.

Timestamp to date: paste the value

Paste a timestamp and the unit is read from its magnitude, not from how many characters it has: seconds, milliseconds, microseconds and nanoseconds are three orders of magnitude apart, so 1718294400, 1718294400000 and 1718294400000000 each land in the right one. The status line names the unit it chose, every time.

A decimal is a decimal: 1718294400.5 is half a second past the same instant, which is what Python's time.time() hands you. Commas and underscores in a pasted number are ignored. And if what you have is a date rather than a number — an ISO string out of a log, or an HTTP Date header — paste that instead; it parses too.

The tool with 1718294400.5 in the input field. The status line reads Read as seconds, 2 years ago, and the result cards read Thu 13 Jun 2024 21:30:00 UTC plus 05:30, Thu 13 Jun 2024 16:00:00 UTC plus 00:00, and an ISO 8601 line ending 21:30:00.500 plus 05:30.
A decimal timestamp is seconds with a fraction. The old rule counted characters, made it twelve, called it milliseconds and printed 20 January 1970.
Date to timestamp: fill in the parts

Year, month, day, hour, minute, second, in any zone you like. Now fills them from the clock. Two things it will tell you about rather than fixing quietly:

A date that does not exist — 31 February, or hour 25 — is named. The old page let JavaScript roll it forward and printed a timestamp for 3 March as though you had asked for it. And a two-digit year means that year: type 50 and you get the year 50, where new Date(50, 0, 1) — which is what the old page called — means 1950.

The Date to timestamp pane with the 31st of February 2026 entered. An amber status line reads There is no such date in this month, it rolls to 3 Mar 2026, 00:00, and the result cards show the timestamp that date actually is.
The date still converts — but the tool says which date it converted, which is the part that was missing.
Read the results

Seven rows going one way, six the other, each with its own Copy button: the zone you picked and UTC side by side, ISO 8601 with the real offset rather than an assumed Z, RFC 2822 for an HTTP header or an email, the relative reading — 3 hours ago — and the raw numbers in seconds and milliseconds.

The zone list is every IANA zone your browser knows, around 400 of them, and switching it re-reads the same instant rather than changing it.

The converter with 1718294400 in the input and America slash New York chosen in the Time zone list. The result cards read Thu 13 Jun 2024 12:00:00 UTC minus 04:00, the same instant as Thu 13 Jun 2024 16:00:00 UTC, and the ISO 8601 line ends minus 04:00.
Every zone the browser knows, and the offset is the one that zone was on at that instant — New York is on minus four in June, not minus five. The old tool offered Local System Time and UTC, and said so in its own FAQ.
Copy what you need

Each row copies on its own, so a log line does not become an ISO string by accident. On a phone the two panes become tabs and every button is a full-height target.

The converter on a phone with the Result tab open, showing result cards for a local zone, UTC and ISO 8601, each with its own Copy button.
On a phone the input and the result become tabs. The live clock stays on the bar.

Frequently Asked Questions

How do I convert a Unix timestamp to a date?

Paste it into the first field. The unit is detected from the number, the status line names it, and the result appears as your zone, UTC, ISO 8601, RFC 2822, a relative reading, and the raw seconds and milliseconds — each with its own Copy button.

The same field takes a date as well as a number, so an ISO string out of a log or an HTTP Date header converts without being reformatted first. Everything happens in your browser; nothing is uploaded.

How do I convert a date to a Unix timestamp?

Switch to the Date to Timestamp tab. Enter Year, Month, Day, Hour, Minute, and Second — the fields start pre-filled with the current date and time — pick Local System Time or UTC/GMT, and the timestamp appears in both seconds and milliseconds, ready to copy.

What is a Unix timestamp (epoch time)?

It's the number of seconds that have elapsed since January 1, 1970, 00:00:00 UTC, known as the "epoch." It's a single, unambiguous number representing an absolute point in time, independent of time zone or calendar — which is why so many systems (databases, APIs, log files) store dates this way instead of a formatted string.

What's the difference between a 10-digit and a 13-digit timestamp?

A 10-digit timestamp is seconds — the Unix standard, and what PHP, MySQL and most databases hand you. A 13-digit one is milliseconds, which is what JavaScript's Date.now() and Java return. Mixing them up is a 1000x error, and it is the commonest bug this tool exists to catch.

There are two more you will meet: 16 digits is microseconds, which Postgres and Go emit, and 19 digits is nanoseconds, which is Go's UnixNano and what a Kubernetes log line carries. All four are in the unit list, and all four are detected from the number itself.

How does the tool decide seconds, milliseconds, microseconds or nanoseconds?

By the magnitude of the number, not by how many characters it has. The four units are three orders of magnitude apart, so any timestamp between 1970 and the year 5138 lands in exactly one of them: under 100 billion is seconds, under 100 trillion is milliseconds, and so on up through microseconds and nanoseconds.

The status line always names the unit it chose, so a wrong guess is visible rather than silent — and the old rule could be wrong. It counted characters, which made 1718294400.5 twelve characters long, read it as milliseconds and returned 20 January 1970 for a timestamp that means 13 June 2024. Set the unit explicitly if you would rather not rely on the guess at all.

Is Unix time affected by time zones or daylight saving?

No. A Unix timestamp is an absolute instant anchored to UTC — it's the same number in every time zone at the same moment. Time zones and daylight saving only affect how that instant gets rendered: the "Local Time" result here reflects your browser's own timezone rules, while the underlying number never changes.

What is the Year 2038 problem, and does this tool have it?

It's an overflow bug affecting systems that store timestamps as a 32-bit signed integer, which runs out of range on January 19, 2038, 03:14:07 UTC and wraps to a nonsensical date. This tool doesn't have that limit — it uses JavaScript's native double-precision Date, which stays accurate for roughly ±275,760 years from 1970.

Does this run in my browser, and does it work offline?

Yes. All conversion happens with your browser's own Date engine — nothing is uploaded to a server, and nothing is logged. Once the page has loaded, it keeps working with no internet connection, and it's free with no account or signup required.

What does the live timestamp banner at the top show?

The current Unix timestamp in seconds, ticking once a second, in the bar above the tool. It is the quick reference you want when a log line or an API response has a timestamp in it and you need to know what now looks like. Its Copy button takes the number on its own.

It stops while the tab is in the background and starts again when you come back, which a timer that runs for hours behind a background tab does not.

Can I convert a date in UTC instead of my local time zone?

Yes, and in any other zone as well. The zone list is every IANA zone your browser knows — around 400 of them, from Europe/London to Pacific/Chatham — with yours at the top. Switching zones re-reads the same instant rather than changing it.

Daylight saving is handled by asking the zone what its offset was at that instant, not by assuming a fixed one, so a date inside a DST changeover converts the way the zone says it does.

What happens if I enter an invalid date, like February 30th?

It converts, and it tells you what it converted. JavaScript's Date rolls an out-of-range component forward — 31 February becomes 3 March, hour 25 becomes 01:00 the next day — and the tool reads the parts back out of the result to see whether anything moved, then names the date it actually used.

A two-digit year is the other trap, and it is handled the same way: type 50 and you get the year 50. The usual constructor, new Date(50, 0, 1), means 1950.

Is it free, and are there limits?

Yes, completely free — no payment, no signup, no account, and no usage caps. Because everything runs in your browser there's nothing to meter. The only practical limits are the ones described above: the Auto-Detect heuristic and the lack of strict date-component validation.

Still have questions?

If you can't find the answer you're looking for, feel free to contact our support team.

Contact Us