Devbelt

Timestamp Converter

Convert Unix time, decode UUIDs, JWTs & Snowflakes, compare timezones

CONVERT
Now: 1787547102 s1787547102659 ms
UNIX SECONDS
UNIX MILLISECONDS
ISO 8601
COPY AS
PASTE ANYTHING TIME-LIKE

Paste a value above to see what it decodes to.

TIMEZONES
UTC2026-08-24 04:51:42UTC

Everything runs in your browser. Nothing you paste or type is ever uploaded or stored on a server.

About

Every timestamp bug starts the same way: you're staring at a number and you don't know what it means. Is it seconds or milliseconds? What timezone is it in? Is that a real date or did someone paste a Snowflake ID into the wrong field? This tool answers all of that. Paste in a Unix timestamp at any resolution, an ISO 8601 or RFC 2822 string, a UUID, a JWT, or a Snowflake ID, and it tells you exactly what it is and what moment it represents, then lines that moment up across every timezone you care about. Nothing you paste ever leaves your browser.

What Unix time is

Unix time counts seconds since midnight UTC on January 1, 1970, the "epoch." It's the number nearly every computer system uses internally to represent a moment, because a single integer is trivial to store, compare, and sort compared to a formatted date string. When you see a raw number like 1700000000 in a database column, an API response, or a log line, that's almost always Unix time.

The epoch itself is arbitrary, 1970 isn't special, it's just the convention Unix picked and everything since has inherited. What matters is that it's a fixed, unambiguous reference point: everyone counting seconds from the same instant means every system can agree on what a given number means, at least once you know the resolution it was measured in.

Seconds vs milliseconds vs microseconds

That last part, the resolution, is where most timestamp bugs actually come from. Unix time doesn't have to be measured in seconds; a lot of systems, JavaScript's Date.now() among them, use milliseconds instead, and some logging and tracing systems go finer still, to microseconds or nanoseconds. Feed a millisecond timestamp into something expecting seconds and you don't get an error, you get a wildly wrong date, usually sometime in the 1970s.

There's a shortcut that gets you most of the way to the right answer without any tooling: count the digits. A 10-digit number is almost always seconds (roughly 2001 through 2286), 13 digits is milliseconds, 16 is microseconds, and 19 is nanoseconds; each level of precision tacks on 3 more digits, because each is 1000x finer than the last. This tool automates that check for you, and flags it when a reading resolves to an implausible date, like a 16-digit number landing in the year 5000, so you don't have to spot that by eye.

1700000000            → 10 digits → seconds
1700000000000         → 13 digits → milliseconds
1700000000000000      → 16 digits → microseconds
1700000000000000000   → 19 digits → nanoseconds

Timezones, UTC, and offsets

A Unix timestamp itself has no timezone, it's a count of seconds since a fixed instant, the same instant everywhere on Earth. Timezone only enters the picture when you turn that instant into a human-readable date and time, because "3pm" means something different in Tokyo than it does in New York. UTC (Coordinated Universal Time) is the timezone-free reference most systems display in internally; everything else is UTC plus or minus an offset.

That's why "just store everything in UTC" is close to universal advice for backend systems: a UTC timestamp is unambiguous no matter where the server or the reader is, and you convert to a local display only at the very last step, in the UI. Converting too early, or mixing local time into stored data, is a common source of off-by-a-few-hours bugs, especially around daylight saving transitions.

The Y2038 problem

Plenty of older and embedded systems store Unix time as a signed 32-bit integer. A signed 32-bit integer maxes out at 2,147,483,647, which corresponds to 03:14:07 UTC on January 19, 2038. One second past that, the count overflows and wraps around to a negative number, which typically gets interpreted as a date in December 1901. It's the spiritual successor to Y2K, real, well understood, and already fixed in most modern software (64-bit time_t, or timestamps in milliseconds, both push the boundary far into the future), but it still lurks in older systems and embedded devices. This tool flags it, quietly, whenever a resolved date lands at or past that boundary.

The universal inspector: what else has a timestamp hiding in it

A lot of identifiers you run into aren't timestamps on their surface but have one embedded. A UUID v1 packs a 60-bit timestamp into its first three fields (decoded here using the same logic as the UUID Generator's inspector). A UUID v7 does something similar with a plain 48-bit millisecond timestamp up front, which is exactly what makes v7 IDs sortable by creation time. A JWT's payload commonly carries iat (issued at), exp (expiry), and nbf (not before) as Unix-seconds claims. And a Snowflake ID, the kind Twitter/X and Discord use for post and message IDs, encodes a millisecond timestamp in its high bits relative to that platform's own custom epoch, extracted with a bit shift rather than a divide.

The paste box on this page tries all of these in turn, so you don't need to know in advance what you're holding, just paste it and see what comes back.

Frequently asked questions

What's the difference between seconds and milliseconds?
Both count time since the Unix epoch (Jan 1, 1970 UTC), but milliseconds is 1000x finer resolution. A 10-digit number is almost always seconds; a 13-digit number covering the same era is almost always milliseconds. Mixing them up doesn't error, it just produces a wildly wrong date, so this tool checks the digit count and the resulting year for you.
How do I convert a UUID's timestamp?
Paste the UUID into the universal inspector on this page. If it's a v1 or v7 UUID, Devbelt decodes the embedded timestamp inline and shows the exact moment it was generated. Other UUID versions (v3, v4, v5) don't carry a timestamp at all, and the tool tells you that too instead of guessing.
How do I convert a Snowflake ID?
Paste the raw ID (a 17-19 digit integer) into the universal inspector, pick Twitter/X or Discord from the small dropdown, and Devbelt shifts out the embedded millisecond timestamp using that platform's epoch offset. Twitter/X and Discord use different epoch offsets, so the platform choice matters.
Does this handle daylight saving correctly?
Yes. The timezone panel computes each zone's UTC offset at the specific moment being displayed, not the current offset, using the browser's own Intl time zone database. That's what makes a summer date in Europe/London correctly show +1 (BST) and a winter date correctly show +0 (GMT) for the exact same input.
Is my data uploaded anywhere?
No. Every conversion, decode, and lookup happens locally in your browser. Nothing you paste, type, or select is ever sent to or stored on a server.

Related tools