Skip to content
Join

Unix Timestamp Converter

Convert epoch timestamps to dates and back, with seconds, milliseconds, micro and nanoseconds detected for you.

on-device epoch -> date free · no account

Unix Timestamp Converter EPOCH ↔ DATE

Paste a timestamp or a date and get every format back. Seconds, milliseconds, microseconds and nanoseconds are detected for you — so a 13-digit value never quietly lands you in the year 56000.

Current Unix timestamp

Mode
Extra time zone
Read dates as
More units
Batch output
seconds

Paste a column of timestamps to convert them all at once.
Copied
Converted in your browser. Nothing is uploaded, even when you drop a file.

processed in your browser · never uploaded

How to use it

Unix Timestamp Converter
in three moves.

01

Paste a timestamp or a date

A raw number, an ISO string, or a date like 2026-08-16 12:00. It converts as you type - no button to press.

02

Check the unit it detected

The panel says whether it read your number as seconds, milliseconds, microseconds or nanoseconds, and why. If your system stores them differently, switch it in one click. If you typed a date rather than a number, the line underneath tells you which time zone it was read in. Change it with the Read dates as selector."

03

Take the format you need

ISO 8601, Unix seconds, Unix milliseconds, UTC, your local time, a SQL datetime or date only. Each row has its own copy button.

04

Convert a whole column at once

Switch to Batch, paste one value per line, and each line is detected separately. Copy the results or download a CSV with the detected units included.

05

Share what you are looking at

Copy link puts the value, the unit and the zone in the URL, so a colleague opens exactly the conversion you are looking at. Useful mid-incident, and nothing is stored anywhere.

Formats & limits

What goes in, what comes out.

Format field guide
Input Output Typical saving Best for
Unix seconds or milliseconds Every date format at once Unit detected, not guessed Reading a timestamp from a log or database
ISO or SQL date string Unix seconds and milliseconds Both directions Building a query or a test fixture
A column of mixed values Converted list plus CSV Each line detected separately Cleaning a log export
Microseconds or nanoseconds Same, flagged as unusual 16 and 19 digits handled Tracing and database internals
Excel serial, FILETIME, ticks Under the More units toggle No conversion table needed Spreadsheet exports and Windows logs
Why this one

Built against the ways these tools disappoint.

We ran the same files through the popular alternatives first. These are the gaps we found, and what this tool does instead.

01

Assume a unit without telling you, so a 13-digit millisecond value silently converts to a date in the year 58000.

Count the digits, state which unit was assumed and why, and let you override it in one click.

test: Press Sample. It loads a 13-digit value on purpose, and the panel says it read it as milliseconds before showing you the date.
02

Show a nonsense date with a straight face when a units mistake has clearly been made.

Flag it. A result in 1970 or in the year 56000 gets a plain-English note explaining which mistake produces it.

test: Enter 0. The tool shows 1 January 1970 and explains that a null or a divided millisecond value is the usual cause.
03

Handle one value at a time, or force every line in a batch to share the same unit.

Judge every line on its own, so a log export with mixed seconds and milliseconds converts correctly in one paste.

test: Switch to Batch and press Sample. The list mixes seconds, milliseconds and an ISO date, and each row is tagged with what it was read as.
04

Read a typed date in whatever zone the browser happens to be set to, without saying so - and JavaScript itself reads a bare date as UTC but a date-with-time as local.

Let you choose the zone a date is read in, and state which one was used underneath the input.

test: Type 2026-08-16 and switch Read dates as between UTC and Asia/Kolkata. The resulting timestamp moves by five and a half hours, and the tool says which zone produced it.
The detail

How this actually works.

A Unix timestamp converter turns epoch time into a readable date and back again. Paste either one and every format comes back at once: ISO 8601, Unix seconds, Unix milliseconds, a SQL datetime, an HTTP date header, your local time and any time zone you pick.

A Unix timestamp counts the seconds since midnight UTC on 1 January 1970. It has no time zone of its own, which is exactly why it is used – the same number means the same instant everywhere, and the time zone is only applied when a human needs to read it.

The bug this tool exists to prevent

Timestamps are stored in four different units and they look almost identical:

Unit Digits Example
Seconds 10 1786881600
Milliseconds 13 1786881600000
Microseconds 16 1786881600000000
Nanoseconds 19 1786881600000000000

Read a millisecond value as seconds and you land somewhere around the year 58000. Read a second value as milliseconds and you land in January 1970. Both look like data corruption, and neither is – it is a units mistake, and it is the single most common timestamp bug there is.

The reason it keeps happening is that the languages disagree. JavaScript’s Date.now() returns milliseconds. Python’s time.time(), PHP’s time(), Go’s Unix() and most SQL databases return seconds. Anything that crosses that boundary without conversion is off by a factor of a thousand.

So this tool does not ask you which unit you have. It counts the digits, tells you what it assumed, and lets you override it in one click if your system stores them differently. If the result looks like a units mistake – a date in 1970, or a date in the year 56000 – it says so rather than showing you a nonsense date with a straight face.

The timezone selector is the second half of the same argument, and right now the page does not mention it at all.

The other assumption nobody tells you about

Units are the famous problem. Time zones are the quiet one.

Type a date with no offset and something has to decide which zone you meant. JavaScript decides inconsistently, and this is in the specification rather than a browser bug:

2026-08-16          read as UTC
2026-08-16T12:00    read as local time

On a machine set to IST those two are five and a half hours apart, and nothing on screen says so. It is the same class of mistake as the unit problem – a silent assumption that produces a plausible wrong answer.

So the tool asks. The “Read dates as” selector sets the zone a typed date is interpreted in, and the line under the input tells you which zone was used and whether the date carried its own offset. A timestamp is always unambiguous; a date string never is, and pretending otherwise is how the wrong number ends up in a query.

Converting a whole column

Batch mode takes one value per line and judges each line on its own, which matters because a real log export is rarely consistent. Mixed seconds and milliseconds in the same paste each get detected correctly and tagged. Unreadable lines are marked rather than skipped, so nothing disappears silently.

Output as ISO, seconds or milliseconds, then copy the column or download a CSV with the input, the detected unit and the result side by side. Drop a .txt or .csv on the box and it loads without uploading anything.

Time zones

A timestamp has no time zone, so displaying one is always a choice. The tool shows UTC and your machine’s local zone by default, and you can add a third from the full IANA list – useful when a log is in UTC, your laptop is in one zone and the person who filed the bug is in another.

Reading timestamps in a JWT

The exp, iat and nbf claims in a JSON Web Token are Unix seconds, which is why a token that looks fine can be rejected for reasons you cannot see. If that is what brought you here, the JWT Decoder converts those claims for you and counts down the expiry.

When this is not the right tool

Excel serial dates, Windows FILETIME and .NET ticks are covered by the More units toggle. Other exotic epochs – GPS time, TAI, Mac HFS+ – are not, and each needs its own leap-second handling rather than a constant offset.

Inside your own code, use the library rather than a browser tab: new Date(ms).toISOString(), Python’s datetime.fromtimestamp(s, tz=timezone.utc), or your database’s own conversion function. Always pass the time zone explicitly – the default is whatever the machine happens to be set to, which is how the same code produces different answers on a laptop and a server.

“This tool converts, and does just enough arithmetic to be useful – start and end of day, because that is what a SQL BETWEEN needs. Anything beyond that belongs in a date library.”

Last reviewed August 2026 · this tool runs on-device.

FAQ

The questions people actually type in.

how to convert a unix timestamp to a date

Paste the number and it converts as you type. The unit is detected from the digit count, and the panel tells you which one it used before showing the date.

what is the difference between a 10 digit and 13 digit timestamp

Ten digits is seconds, thirteen is milliseconds. Reading one as the other puts you a thousand times out - either in 1970 or somewhere past the year 50000.

why does my timestamp show 1970

Almost always a units mistake or a null. A value near zero read as seconds gives 1 January 1970, which is the epoch itself rather than real data.

why does my timestamp show the year 56000

A millisecond value is being read as seconds. Drop the last three digits, or switch the unit in the panel to see the correct date.

how do i convert a date back to a unix timestamp

Paste the date instead of a number - ISO, SQL style or plain. The Unix seconds and milliseconds rows give you the value back.

can i convert a whole list of timestamps at once

Yes. Batch mode takes one value per line and detects each separately, so a mixed export converts in one paste. Copy the column or download a CSV.

does a unix timestamp have a time zone

No. It counts seconds since 1970 in UTC, which is the point - the same number means the same instant everywhere. The time zone is applied only when it is displayed.

what is the current unix timestamp

The live clock at the top of this page shows it, ticking every second, with buttons to copy it in seconds or milliseconds.

what timezone is my date read in

The one shown under the input, which you choose. It matters because JavaScript reads a bare date as UTC but a date-with-time as local, so an unstated zone can shift the answer by hours.

how to convert an excel serial date to a unix timestamp

Turn on More units and the Excel serial row appears alongside the others. Excel counts days from 30 December 1899, including a leap day in 1900 that never existed, which is why the two epochs do not line up.

what is windows filetime

A count of 100-nanosecond intervals since 1 January 1601, used throughout Windows and its security logs. The More units toggle shows it next to the Unix value.

what is the year 2038 problem

Unix seconds stop fitting in a signed 32-bit integer on 19 January 2038. Modern systems use 64 bits and are unaffected, but old embedded code and legacy database columns are not. The tool flags any value past that point.

Next

Tools people use with this one.

All 31 tools
jwt -> claims

JWT Decoder

Read a JSON Web Token's header and payload with every claim explained and the expiry counted down live.

on-device Open
json -> json.min

JSON minifier

Minify JSON, beautify it back, and see the real compressed size. Flags duplicate keys your parser silently drops.

on-device Open