Timestamp Converter
Convert a Unix timestamp to a readable date, or pick a date to get its timestamp.
Formula used
Seconds -> date:
date = new Date(seconds * 1000) // or ms * 1 if unit is milliseconds
Date -> timestamp:
epochMs = Date.parse(dateTimeLocal)
seconds = floor(epochMs / 1000)
milliseconds = epochMs
The human-readable result is shown in UTC (toUTCString).
Related calculators
Worked example
Unix timestamp: 1700000000 (seconds)
Human-readable date (UTC): Sat, 14 Nov 2023 22:13:20 GMT
The same tool also converts a picked date and time back into seconds and milliseconds.
A Unix timestamp is simply the count of seconds since midnight UTC on 1 January 1970, and that single convention is what lets unrelated systems agree on a moment in time without ambiguity. Unlike a human date like "03/04/2026," which means different things in different countries, a timestamp is the same number everywhere. That is why databases store them, APIs return them, and logs stamp them: they are sortable, diffable, and free of timezone confusion. The trade-off is that a raw number like 1700000000 is meaningless to a person, which is exactly where a converter earns its place — it translates between the machine's efficient integer and the human's readable "Sat, 14 Nov 2023 22:13:20 GMT" in either direction, so you can reason about time without memorizing the epoch or doing the arithmetic by hand.
The canonical use for this tool is reading a timestamp pulled from a log file, an error report, or a distributed trace. When an incident happens at 1718900000 on a server in another region, pasting that number in tells you the actual wall-clock moment in UTC, which you can then compare against your own local logs to line up events. This is indispensable when systems in different timezones are involved, because comparing local clock strings directly is a trap — one server may be on UTC, another on US Eastern, another on India Standard Time, and a naive string comparison will scramble the order. Converting everything to UTC first, or to a single reference timezone, is the only reliable way to reconstruct what happened and in what sequence. The same workflow helps when reading expiring-token errors, cache TTLs, or "last modified" fields returned by a service, where the raw number is the only honest source of truth. Beyond reading, this converter is a scratchpad for building correct code. When you need to insert a record with a specific creation time, or compute a window like "the last 24 hours," you can pick the exact date and copy out the resulting seconds or milliseconds to drop into a query or a test. It is also handy for sanity-checking offsets: if your application adds seven days, convert the before and after timestamps to confirm the difference really is 604,800 seconds and not something off by a factor. Database columns that store BIGINT epochs rather than native date types are common for performance and portability reasons, and being fluent in moving between the integer and the date makes working with them far less error-prone. Treat the tool as a quick mental reference whenever time arithmetic is involved, and you will catch unit mistakes before they reach production. The single most common timestamp bug is an off-by-1000 error: JavaScript and many front-end libraries measure time in milliseconds, while most backends, Unix convention, and databases measure in seconds. A value like 1700000000000 is milliseconds; 1700000000 is seconds — and feeding the wrong one to a parser yields a date centuries in the future or the distant past. This converter handles both: it does not guess the unit from the number's size — use the Seconds/Milliseconds toggle to tell it which one your value is in, and it converts accordingly, so there is no guessing. The lesson for your own code is to be deliberate about units — name variables epochSeconds or epochMillis, convert at exactly one boundary, and never let a raw number flow through your system without a clear, documented unit. A converter cannot fix inconsistent units in your codebase, but it is the fastest way to catch them early. Remember that a Unix timestamp is always UTC and knows nothing about timezones or daylight saving — those are applied only when the number is displayed. That is a feature, not a limitation: it means the same timestamp represents the identical instant everywhere, and DST shifts never alter the underlying count. The confusion arises entirely at presentation. If you convert a timestamp and the local time looks wrong, the cause is almost always the timezone offset being applied (or not applied) by whatever is displaying it, not the timestamp itself. For scheduling tasks or comparing events, prefer storing and computing in UTC and only converting to a local zone at the very end for display. This converter shows UTC by default precisely so you have an unambiguous reference point before layering any regional offset on top, which keeps your reasoning about time honest.
Timestamps also do quiet work at the edges of your system. Cache layers stamp entries with an expiration epoch so they can be invalidated the moment the window closes, and rate limiters record the last-seen timestamp per client to decide whether the next request is allowed. Signed URLs and password-reset tokens embed an expiry timestamp so a captured link stops working after a set period, which is why you will often see both a "created at" and an "expires at" epoch on the same object. When you build any of these, converting between a human-chosen duration and the exact epoch it implies is exactly the kind of small, error-prone arithmetic this converter handles for you, with no mental math and no off-by-one surprises.
Frequently asked questions
What is a Unix timestamp?
It is the number of seconds since 00:00:00 UTC on 1 January 1970, also called the Unix epoch. It is a timezone-independent way to store a moment in time.
Seconds or milliseconds?
The timestamp converter does not auto-detect the unit — select Seconds or Milliseconds with the toggle and it converts from the unit you chose.
Why does my local time differ from UTC?
Unix time is always UTC. Your local clock adds your timezone offset, which is why the same timestamp shows different wall-clock times in different regions.
Does it handle dates before 1970?
Yes. Negative timestamps represent moments before the epoch, down to the limits of JavaScript's date range.