Skip to content
Tools

Unix Timestamp Converter

Convert Unix timestamps to readable dates and convert dates back to Unix time with support for seconds, milliseconds, UTC and local time. Everything runs locally in your browser.

Conversion direction
Now
s
ms
Timestamp unit
Visible pane

Enter a Unix timestamp or select a date and time to begin.

Nothing converted yet — enter a timestamp, or press Now.

Everything runs locally in your browser. Your timestamps and dates are never uploaded — the conversion, the time zone database and the export all happen on your device.

What is a Unix timestamp?

A Unix timestamp is a single number that counts the seconds elapsed since 1 January 1970, 00:00:00 UTC. That is the whole definition. 1786483200 is 1,786,483,200 seconds after that moment, which is 2026-08-11 21:20:00 UTC.

What makes it useful is everything it leaves out. There is no time zone in it, no calendar, no formatting, no locale and no ambiguity about whether 03/04/2026 means March or April. Two machines on opposite sides of the world hold the same integer and mean the same instant, and comparing two moments is subtraction rather than a date library.

It is also called Unix time, POSIX time or epoch time. All three name the same count.

The cost of that simplicity is that it is unreadable. Nobody looks at 1786483200 and sees a date — which is why converters like this one exist, and why a timestamp should be stored as a number and shown as a date rather than the other way round.

What is the Unix epoch?

The Unix epoch is the zero point: 1 January 1970 at 00:00:00 UTC. Every Unix timestamp is measured from it, forwards as a positive number and backwards as a negative one.

The date is arbitrary. Early Unix at Bell Labs needed a starting point that was recent enough to keep the numbers small — the first implementation counted sixtieths of a second in a 32-bit integer, which covered barely two and a half years — and round enough to be memorable. The start of the decade they were working in fitted. There is no astronomical or historical significance to it at all.

What matters is that everyone agreed. A count of time only means something when both ends know where the counting started, and the fact that virtually every system settled on the same epoch is why a timestamp can move between a Python service, a Postgres table and a browser without anyone negotiating.

Not every system did. Windows FILETIME counts 100-nanosecond intervals from 1601, Excel counts days from 1900, GPS counts from 1980 and Cocoa counts from 2001. When a date is out by decades rather than hours, a mismatched epoch is usually why.

The epoch, and a moment either side of it
         0   →  1970-01-01 00:00:00 UTC   the epoch         1   →  1970-01-01 00:00:01 UTC        -1   →  1969-12-31 23:59:59 UTC   negative: before the epoch 1786483200   →  2026-08-11 21:20:00 UTC

How Unix timestamps work

A timestamp is a count, and the only thing that varies is what is being counted. The same instant can be written in four units, each a thousand times finer than the last.

UnitThe same instantDigitsResolutionWhere you meet it
Seconds1786483200101 secondUnix `time()`, most REST APIs, JWT claims, cron
Milliseconds1786483200000130.001 sJavaScript `Date.now()`, Java, Kafka, most browser APIs
Microseconds1786483200000000160.000001 sPostgreSQL internals, Python `time_ns() // 1000`, some tracing
Nanoseconds1786483200000000000190.000000001 sGo `UnixNano()`, Rust, Cassandra, OpenTelemetry

Positive and negative

Positive timestamps are after 1970 and negative ones before it. -86400 is exactly one day before the epoch — 31 December 1969 — and -2208988800 is 1 January 1900. Negative timestamps are perfectly legal and this tool handles them, but be careful downstream: some databases and older libraries either reject them or read the value as unsigned, which turns a 1969 date into one in 2106.

Negative values are also where flooring starts to matter. Converting −1,500 milliseconds to seconds gives −2, not −1: the instant sits inside the second that begins at −2. Truncating towards zero — which is what integer division does in most languages — gives −1, a second that ends before the instant it is supposed to contain.

Leap seconds

Unix time pretends every day is exactly 86,400 seconds long, so leap seconds are not counted. When one is inserted, the same timestamp is either used twice or the clock is smeared across the day. That keeps the arithmetic trivial — any timestamp divided by 86,400 is the day number — at the cost of drifting a few dozen seconds behind true elapsed atomic time. It almost never matters, and when it does you want TAI rather than Unix time.

Unix timestamp in seconds vs milliseconds

This is the mistake that costs the most time, because neither value looks wrong. Both are plausible integers, nothing throws, and the bug surfaces later as a date in 1970 or one fifty thousand years away.

SecondsMilliseconds
The same instant17864832001786483200000
Digits today1013
OriginUnix `time()`, 1970s CJavaScript `Date`, 1995
Used byREST APIs, JWT, cron, Unix toolsJavaScript, Java, Kafka
Read as the other1970-01-21 — 20 days after the epochYear 58,581

Why JavaScript is the odd one out. When JavaScript was designed in 1995 it took its date model from Java, which had already chosen milliseconds. Unix systems had been counting seconds since the 1970s and the APIs built on them kept doing so. Neither side was wrong; they simply never converged, and every JavaScript client talking to a Unix-shaped API sits on the seam.

The conversion, and the trap
// JavaScript gives millisecondsDate.now();                      // 13 digits // Most APIs want secondsMath.floor(Date.now() / 1000);   // 10 digits // The trap: seconds passed to a constructor expecting millisecondsnew Date(1786483200);            // 1970-01-21 — 20 days after the epochnew Date(1786483200 * 1000);     // correct

A quick rule for reading a value: a ten-digit number is seconds and a thirteen-digit number is milliseconds, and that holds from 2001 until 2286. The converter above applies the same rule, tells you which it picked, and lets you override it. It is the same seam a JWT decoder sits on: exp, nbf and iat are seconds, and multiplying one by a thousand is how a token ends up expiring in the year 56000.

How to convert a Unix timestamp to a date

  1. 1. Paste the number. Into the input at the top of this page. It accepts seconds, milliseconds, microseconds and nanoseconds.
  2. 2. Check the detected unit. The badge beside the field says which one it read. If the guess is wrong — and for values around 10^9 or 10^12 it genuinely can be — override it with the selector.
  3. 3. Choose the zone to read it in. UTC is the safe default for debugging; your own zone is the one you think in. Both are shown at once, along with any zone you pick.
  4. 4. Take what you need. Each row has its own copy button — the formatted date, ISO 8601, RFC 3339, the date alone, the time alone.

Doing it by hand is instructive once. Divide by 86,400 to get whole days since 1970, then walk the calendar forward year by year, subtracting 365 or 366 days depending on whether each is a leap year. The remainder is the time of day. It is entirely mechanical and entirely easy to get wrong at the leap-year boundaries, which is why it belongs in a library.

1786483200 → 2026-08-11T21:20:00.000Z
1786483200 ÷ 86400 = 20676 days, remainder 76800 seconds 20676 days after 1970-01-01  →  2026-08-1176800 seconds into the day   →  21:20:00 2026-08-11T21:20:00.000Z

How to convert a date to a Unix timestamp

The reverse direction has one extra input and it is the one people forget: which zone the date is written in. “11 August 2026, 09:00” is not a moment until you say where. In London it is one instant, in Tokyo it is another eight hours earlier, and they produce different timestamps.

  1. 1. Switch to Date → Timestamp.
  2. 2. Pick the date and time. Seconds are supported if you need them.
  3. 3. Set the zone that date belongs to. Not the zone you want to read the answer in — the zone the written date came from.
  4. 4. Read the Unix values. Seconds and milliseconds are shown together, with all four units in the Details panel.

Twice a year a wall-clock time does not name exactly one instant, and the tool says so rather than guessing quietly. On the spring-forward night the clocks jump from 01:00 to 02:00, so 01:30 never happens. On the autumn night they drop back, so 01:30 happens twice, an hour apart — two different timestamps, both correct. Most code silently picks one. This shows both.

The same wall clock, three zones, three instants
2026-08-11 09:00:00 in Europe/London     →  1786435200   (+01:00, summer time)2026-08-11 09:00:00 in Asia/Kolkata      →  1786419000   (+05:30)2026-08-11 09:00:00 in America/New_York  →  1786453200   (−04:00, summer time)

Unix timestamp vs ISO 8601

Both describe an instant; they disagree about who the audience is. A Unix timestamp is written for a machine and an ISO 8601 string is written for a machine that a human might also read.

Unix timestampISO 8601
ReadabilityNone — 1786483200 tells a human nothingReadable at a glance, and unambiguous
SortingNumeric sort is chronologicalLexical sort is chronological too, by design
Storage8 bytes as an integer20–30 bytes as text
Time zoneNone. Always an absolute instantCarries an offset, so it records where it was written
ArithmeticSubtract two numbers to get elapsed secondsMust be parsed into a date type first
PrecisionWhatever unit you chose, and nothing records whichExplicit in the string — .000 means milliseconds
Typical useDatabases, internal APIs, tokens, logsPublic APIs, config files, anything a person reads
The same instant, both ways
17864832002026-08-11T21:20:00.000Z2026-08-12T02:50:00.000+05:30   ← the same moment, written in India

RFC 3339 is the version most APIs actually mean when they say ISO 8601. It is a tightly specified subset built for the internet: one shape, an offset always required, no week dates or ordinal dates. Anything valid in RFC 3339 is valid ISO 8601; the reverse is not true.

Which to store? A timestamp when the field is internal and will be compared or sorted, and ISO 8601 when the value crosses a boundary a person might inspect — a public API, a config file, a CSV export. The one combination to avoid is a formatted local date with no offset, which records a reading without recording the clock it came from.

UTC vs local time

UTC is the reference every other zone is defined against — a single clock that never changes for daylight saving. Local time is UTC plus an offset that depends on where you are and, in about half the world, what month it is.

A Unix timestamp is defined in UTC, so converting it to a date always involves choosing a zone. The number does not change; only the rendering does.

  • Store UTC, display local. The database column holds the instant; the zone is applied at the last moment, in the interface, where you know who is looking.
  • Log in UTC. Correlating three services across two regions is impossible when each log is in its own local time, and worse when one of them changes offset in March.
  • Never store a local time without its offset. 2026-08-11 09:00:00 in a column is a reading with no clock attached. Six months later nobody can tell you what instant it was.
  • Do not store the offset instead of the zone. An offset is a fact about one instant; a zone is a rule. +01:00 tells you nothing about what London will be doing in December, but Europe/London does.

This is why every result in the tool above is labelled with the zone it was rendered in, and why UTC and local are shown side by side rather than one at a time.

Unix timestamps and time zones

The sentence worth memorising: a Unix timestamp is an absolute point in time and carries no time zone. Time zones exist only when the number is turned into a date.

At the instant 1786483200, every clock on Earth agrees on the number and disagrees on the reading:

1786483200, read on five clocks
UTC               2026-08-11 21:20:00  +00:00Europe/London     2026-08-11 22:20:00  +01:00  (summer time)America/New_York  2026-08-11 17:20:00  −04:00  (summer time)Asia/Kolkata      2026-08-12 02:50:00  +05:30  ← next dayAsia/Tokyo        2026-08-12 06:20:00  +09:00  ← next day

Note the two rows that land on the following day. A timestamp near midnight UTC is on a different datein half the world, which is the source of most “off by one day” bug reports — and of most incorrect daily-total queries. When the question is what a moment reads as in several cities at once, the time zone converter lays them out side by side.

Daylight saving is a rule, not a number.London is +00:00 in January and +01:00 in July. Code that stores “London is UTC+0” is wrong for seven months of the year, and code that hard-codes a five-hour gap between London and New York is wrong for the two weeks each spring when the two countries change their clocks on different dates. The zone picker in this tool reads the browser’s own copy of the tz database, so the offset shown is the offset in force at the instant being converted rather than the one in force today.

Unix timestamp examples

Landmark values worth recognising. Every one of these is one click away in the Examples panel of the tool above, alongside today, yesterday, tomorrow and the current timestamp, which are generated from the clock rather than written down.

TimestampUTCWhat it is
01970-01-01 00:00:00The Unix epoch
-11969-12-31 23:59:59One second before the epoch
-22089888001900-01-01 00:00:00A deep negative timestamp
9466848002000-01-01 00:00:00The Y2K rollover
10000000002001-09-09 01:46:40The first ten-digit timestamp
12345678902009-02-13 23:31:30A famous sequential timestamp
21474836472038-01-19 03:14:07The signed 32-bit limit
21474836482038-01-19 03:14:08Where 32-bit clocks break
42949672952106-02-07 06:28:15The unsigned 32-bit limit

The Year 2038 problem

A signed 32-bit integer runs out at 2,147,483,647 — 03:14:07 UTC on 19 January 2038. One second later it overflows to negative and the date reads as December 1901. Anything on 64-bit time is safe for the next 292 billion years, so this is not a problem for modern servers; it is a problem for embedded devices, old file formats, and database columns declared as int because that was obviously enough at the time.

Unix timestamps in programming languages

Every language can do this; they differ in the default unit and in how loudly they warn you about zones. The Code panel in the tool has copyable versions of all of these, built around whatever timestamp you have loaded.

JavaScript and Node.js

Milliseconds throughout. Date.now() and new Date() both work in them, so converting to seconds means dividing by 1,000 and flooring — and converting back means multiplying.

Math.floor(Date.now() / 1000);        // secondsnew Date(1786483200 * 1000);          // seconds → Datenew Date("2026-08-11T21:20:00Z").getTime() / 1000;

Python

time.time() returns a float of seconds. The thing to be careful about is naive datetimes: a datetime without tzinfo has no zone attached and Python will let you build one, compare it wrongly, and only complain later.

import timefrom datetime import datetime, timezone int(time.time())datetime.fromtimestamp(1786483200, tz=timezone.utc)datetime(2026, 8, 11, 21, 20, tzinfo=timezone.utc).timestamp()

PHP

time() returns seconds. The @ prefix in DateTimeImmutable always means UTC, which makes it the reliable way in — the procedural date() uses whatever the ini default zone is.

time();(new DateTimeImmutable("@1786483200"))->format("Y-m-d H:i:s");(new DateTimeImmutable("2026-08-11 21:20:00", new DateTimeZone("UTC")))->getTimestamp();

Java

Instant is the absolute moment and ZonedDateTime is that moment read on a particular clock. Keeping the two ideas in separate types is the clearest model of this any mainstream language has.

Instant.now().getEpochSecond();Instant.ofEpochSecond(1786483200L).atZone(ZoneId.of("Asia/Kolkata"));LocalDateTime.of(2026, 8, 11, 21, 20).atZone(ZoneId.of("UTC")).toEpochSecond();

Go

Seconds from Unix(), milliseconds from UnixMilli() and nanoseconds from UnixNano(). That last one is why nineteen-digit timestamps turn up in JSON from Go services and quietly lose precision in JavaScript clients.

time.Now().Unix()time.Unix(1786483200, 0).UTC().Format(time.RFC3339)

MySQL

UNIX_TIMESTAMP() and FROM_UNIXTIME() are the pair — but both go through the session time zone, so the same query can return different answers on two connections. Force UTC when it matters.

SELECT UNIX_TIMESTAMP();SELECT FROM_UNIXTIME(1786483200);SELECT CONVERT_TZ(FROM_UNIXTIME(1786483200), @@session.time_zone, '+00:00');

PostgreSQL

EXTRACT(EPOCH FROM …) out and TO_TIMESTAMP() in. Prefer timestamptz over timestamp: the latter stores no zone and silently means whatever the reader assumes.

SELECT EXTRACT(EPOCH FROM NOW())::bigint;SELECT TO_TIMESTAMP(1786483200) AT TIME ZONE 'UTC';

Common developer use cases

Where a converter earns its place in the bookmarks bar.

API responses

Reading the created_at a service just returned, and finding out whether it is seconds or milliseconds before writing the client code that parses it.

Database records

Checking what a bigint column actually holds. A row that claims to be from 1970 usually means milliseconds went into a seconds column, and the converter shows that in one paste.

Log analysis

Turning a column of epoch timestamps out of a log file into readable times in the zone the incident was reported in — which is rarely the zone the server was running in.

JWT claims

The iat, exp and nbf claims in a token are Unix seconds. Converting exp answers the only question that matters when a token is being rejected: has it expired, or is the clock wrong?

Debugging

Working out whether an off-by-one-day bug is a real date error or just two systems rendering the same instant in different zones. The side-by-side UTC and local output settles it immediately.

Scheduled jobs

Confirming when a cron entry or a queued task will actually fire, in UTC and in local time, including whether daylight saving moves it.

Event tracking and analytics

Aligning event streams that arrive in different units — one system sending seconds and another nanoseconds is common, and the resulting graph looks empty rather than broken.

Distributed systems

Comparing timestamps from services in different regions. Because a Unix timestamp is absolute, it is the one field you can compare across machines without asking where each one was.

Common Unix timestamp mistakes

  • Seconds where milliseconds were expected. The commonest of all, and it never throws. A seconds value read as milliseconds lands in January 1970; the reverse lands in the year 58,589. If a date is absurdly wrong rather than slightly wrong, check the unit first.
  • Treating a timestamp as local time.A Unix timestamp is UTC by definition. Formatting one with a library that defaults to the machine’s zone gives an answer that changes when the code is deployed to a different region.
  • Parsing a date string without an offset. In JavaScript, new Date("2026-08-11") is UTC midnight but new Date("2026-08-11T00:00") is local midnight. That inconsistency is in the specification. Always include a Z or an offset.
  • Storing an offset instead of a zone. +01:00 describes one instant; Europe/London describes a rule. Only the second one still gives correct answers in December.
  • Assuming a day is 86,400 seconds when adding. Adding a day to a timestamp is fine; adding a day to a local dateis not, because the day a clock change falls on has 23 or 25 hours. “Tomorrow at 09:00” is calendar arithmetic, not addition.
  • 32-bit overflow. A timestamp in a signed 32-bit column stops working in January 2038. Anything with a long expiry — a certificate, a subscription end date, a mortgage — can hit it today.
  • Losing precision on nanosecond values. A 19-digit timestamp exceeds what a JavaScript number can hold exactly, so JSON.parse silently rounds the last few digits. Keep it as a string, or use BigInt — which is what this tool does.
  • Rounding instead of flooring. Converting milliseconds to seconds with Math.round can move an instant into the following second, which is enough to break an exactly-once check or an expiry comparison.

Frequently asked questions

What is a Unix timestamp?

A Unix timestamp is a single number that counts how many seconds have passed since 1 January 1970 at 00:00:00 UTC. That moment is called the Unix epoch. Because it is one integer with no time zone, no calendar and no formatting, it names an exact instant that means the same thing on every machine in the world — which is why almost every API, database and log file stores time this way.

What is Unix time?

Unix time is the system a Unix timestamp belongs to: time measured as a count of seconds from the epoch, rather than as a date and a clock reading. It is sometimes called POSIX time or epoch time. The three names describe the same thing.

What is the Unix epoch?

1 January 1970, 00:00:00 UTC — timestamp zero. The date was chosen by the engineers building early Unix at Bell Labs in the early 1970s: it needed to be a round, recent date that predated every file the system would handle, and the start of the decade they were working in fitted. There is no deeper meaning to it, and every timestamp you see is measured from that arbitrary but universally agreed point.

How do I convert a Unix timestamp to a date?

Paste it into the input box above. The tool detects whether it is in seconds, milliseconds, microseconds or nanoseconds, then shows the date in UTC, in your own time zone and in any zone you pick, along with the ISO 8601 and RFC 3339 forms. Done by hand, the arithmetic is: divide by 86,400 to get days since 1970, then walk the calendar forward, accounting for leap years. That is why everyone uses a library.

How do I convert a date to a Unix timestamp?

Switch to the Date → Timestamp tab, pick a date and a time, and choose the zone that date is written in. The zone is the part people skip and the part that matters: “11 August 2026, 09:00” is a different instant in London than in Tokyo, so it produces a different timestamp. The tool converts the wall-clock time you entered into the instant it names in that zone.

What is the difference between Unix seconds and milliseconds?

Only the scale. A millisecond timestamp is the same instant multiplied by a thousand, so it has three more digits: 1786483200 in seconds is 1786483200000 in milliseconds. The trouble is that both look like plausible timestamps, so feeding one into code that expects the other does not throw — it silently produces a date in 1970 or a date fifty thousand years away.

How do I get the current Unix timestamp?

It is at the top of this page, ticking, in both seconds and milliseconds, with a copy button for each. In code: Math.floor(Date.now() / 1000) in JavaScript, time() in PHP, int(time.time()) in Python, Instant.now().getEpochSecond() in Java, and SELECT UNIX_TIMESTAMP() in MySQL.

Does a Unix timestamp use UTC?

Yes, and this is the single most useful thing to understand about it. A Unix timestamp is defined as seconds since an instant that is itself defined in UTC, so the number carries no time zone at all — it is an absolute point in time. Converting it to a date is what introduces a zone, which is why the same timestamp displays as two different clock readings in two different places and neither is wrong.

Is a Unix timestamp affected by time zones?

The timestamp is not. Its display is. At the instant 1786483200 every clock on Earth agrees on the number and disagrees on the reading: London says one time, Tokyo says another, and both are showing the same moment. This is exactly why storing timestamps rather than formatted dates avoids an entire category of bug.

Can Unix timestamps be negative?

Yes. A negative timestamp is a moment before the epoch: −86400 is 31 December 1969, and −2208988800 is 1 January 1900. The tool handles them, and so do most modern languages. Be careful in older systems and in some databases, where negative values are either rejected or quietly treated as unsigned — which turns a 1969 date into one in 2106.

How do I convert milliseconds to Unix time?

Divide by 1,000 and take the floor. Flooring rather than rounding matters: rounding 1786483200999 ms gives 1786483201 seconds, a second in the future that never contained the original instant. Paste a millisecond value above and the tool shows all four units at once, each floored correctly — including for negative values, where flooring and truncating stop agreeing.

Why is JavaScript's Date.now() so large?

Because it returns milliseconds, not seconds. JavaScript was designed that way in 1995 and cannot change it now. So a JavaScript timestamp is a thousand times bigger than the same moment from a Unix system, which is why the API you are calling rejects it — divide by 1,000 and floor.

What is an epoch timestamp?

Another name for a Unix timestamp: a count of time from a fixed starting point, or epoch. The word appears in epoch converter, epoch time and EXTRACT(EPOCH FROM …) in PostgreSQL. Other systems use different epochs — Windows FILETIME counts from 1601 and Excel from 1900 — so “epoch time” without qualification almost always means the Unix one.

What are microsecond and nanosecond timestamps?

The same count at finer resolution: a microsecond is a millionth of a second and a nanosecond a billionth. PostgreSQL stores microseconds internally, and Go's UnixNano, Rust, Cassandra and OpenTelemetry all produce nanoseconds. A nanosecond timestamp is 19 digits, which is larger than a JavaScript number can hold exactly — this tool does that arithmetic in BigInt so the digits stay right.

Can I convert multiple timestamps at once?

Yes. The Batch tab takes a whole column — one per line, comma-separated, or a JSON array pasted straight out of a response — and produces a table with the unit, UTC, your chosen zone and the ISO form for each. Values it cannot read stay in the table with the reason, rather than being dropped, and the whole table exports to JSON, CSV or text.

Can I convert timestamps to another time zone?

Yes, to any IANA time zone — search by city, country or abbreviation. Daylight saving is handled from the browser's own copy of the tz database, so a July timestamp in London shows +01:00 and a January one shows +00:00, which is the behaviour a hard-coded offset gets wrong twice a year.

What is ISO 8601?

The international standard for writing dates and times as text: 2026-08-11T00:00:00.000Z. Fields run from largest to smallest, so the strings sort chronologically as plain text, and the trailing Z means UTC. It is the format to use when a human might need to read the value, where a Unix timestamp is the one to use when only machines will.

What is RFC 3339 and how is it different from ISO 8601?

RFC 3339 is a tightly specified subset of ISO 8601, written for the internet. ISO 8601 permits a great deal — week dates, ordinal dates, omitted separators — while RFC 3339 fixes one shape and requires an offset, so 2026-08-11T05:30:00+05:30 is valid in both and 2026-W33-2 is ISO 8601 only. If an API says “ISO 8601” it almost always means RFC 3339.

What is the Year 2038 problem?

Systems that store a timestamp in a signed 32-bit integer run out of room at 2,147,483,647 seconds — 03:14:07 UTC on 19 January 2038. One second later the value overflows to negative and the date reads as December 1901. Anything on 64-bit time is fine for the next 292 billion years; the risk is in embedded devices, old file formats and database columns nobody has looked at. Both boundary values are in the Examples panel.

Do Unix timestamps account for leap seconds?

No, and deliberately. Unix time pretends every day is exactly 86,400 seconds long, so a leap second is not counted — the same timestamp is used twice, or the clock is smeared across the day. That keeps the arithmetic simple at the cost of being a few dozen seconds behind true elapsed atomic time since 1970. It almost never matters, and when it does you want TAI rather than Unix time.

Why does my converted date look a day off?

Almost always a zone difference rather than a wrong timestamp. 1786483200 is 21:20 on 11 August in UTC and 02:50 on the 12th in India — the same instant, two dates. That is why every result here is labelled with the zone it was rendered in. If the date is off by a much larger amount, check the unit: seconds read as milliseconds lands in 1970.

How does auto-detection decide the unit?

By magnitude. A value under about 10^11 is read as seconds, since 10^11 seconds is the year 5138 and nothing sensible reaches it; each factor of a thousand above that moves up a unit. The overlap is real — 1,000,000,000 is a valid second timestamp for 2001 and a valid millisecond one for 1970 — so the tool always shows what it guessed and always lets you override it.

Is this Unix Timestamp Converter free?

Yes. Every conversion, the batch table, the code examples and all three export formats are free, with no account, no rate limit and no paid tier.

Is my timestamp data uploaded?

No. Every conversion is arithmetic running in your browser, there is no API behind it, and no request is made when you convert, copy or download. Load the page, disconnect from the network, and it keeps working — which also means the timestamps from your production logs never leave your machine.

Does this work offline?

Once the page has loaded, yes. Conversion, the time zone database, the batch table, copying and downloading are all local, so it keeps working with the network disconnected.

Popular tools

↑ ↓NavigateOpenEscClose