A timestamp converter with every format on screen.
Paste epoch seconds, milliseconds, ISO 8601, RFC 2822 — anything that looks like a date. Auto-detects the format and shows every other representation side by side, including UTC and your local timezone.
————————Date parsing and formatting run entirely in this browser tab using the standard JavaScript `Date` and `Intl.DateTimeFormat` APIs. No network calls, no logging — we never see what you paste.
Every format, always on screen.
A converter that auto-detects whatever you paste, renders every common representation simultaneously, and surfaces both UTC and your local timezone — no clicking through tabs.
Pastes are scanned for epoch (s or ms), ISO 8601, RFC 2822, and a few common locale variants. The detected format is shown next to the input so you can verify the parser made the right call.
Epoch s, epoch ms, ISO UTC, ISO local, RFC 2822, locale string in UTC, locale string in local time, and a relative description ("3 hours ago"). All update on every keystroke.
Most timestamp bugs in production come from a UTC vs local mix-up. Showing both at the same time, with the timezone offset labeled, makes the diff obvious.
One-click jumps for `now`, ±1h, ±1d, ±7d. Useful for sanity-checking "this token expires in 24h" or for setting up test fixtures relative to right now.
Click any output row to copy that specific representation. The button flashes to confirm — no clipboard guessing.
Epoch ms preserves milliseconds; ISO outputs include the `.SSS` fraction. Dates parsed from sub-second epoch ms round-trip exactly.
Local timezone is shown by IANA name (`America/New_York`, `Europe/Berlin`) plus the current UTC offset. Distinguishes EST from EDT, BST from GMT.
Use anonymously, on as many timestamps as you want. No account, no history, no telemetry. Inspect the network tab — there is nothing outbound.
For every place a timestamp shows up.
JWT claims use epoch seconds. Paste the number from the decoder, see the wall-clock time and how long it is from now — useful for spotting "expires in 5 minutes" tokens that show up in support tickets.
Many services log in epoch ms or ISO with `Z` suffix; on-call engineers usually want it in their local timezone. Paste the value, read both at a glance.
Confirm whether a cron will fire at the right wall-clock time after timezone changes. Pair with the cron builder when one ships; for now, paste the next-fire epoch and verify.
Stripe webhooks deliver `created: 1762966400` (epoch seconds). Verify what wall-clock time the event reflects without writing a one-off `new Date(t * 1000)` snippet.
"Show me errors from the last 24 hours" usually maps to a `since` parameter. Click `−1d` to get the right epoch ms to plug into the query.
Test fixtures often want a date "7 days ago" or "an hour from now" — for token expiry, audit log entries, etc. Use the quick-shift buttons to materialize the value, then copy.
Timestamps, the plain answers.
A short scan: pure digits with 10 chars → epoch seconds; 13 chars → epoch ms. Otherwise it tries `Date.parse` (which handles ISO 8601, RFC 2822, and various locale forms) and validates the result. If everything fails, the parse error surfaces. The detected format is shown above the output table.
Because your timezone is not UTC. The local outputs use your browser's system timezone — shown by IANA name in the timezone label. If you do not see what you expect, check that your machine's clock and timezone are correct.
Not yet. The browser's `Intl.DateTimeFormat` supports any IANA timezone, but we have not surfaced it as an option — most timestamp debugging splits cleanly between UTC (server) and local (your laptop). If you need a third zone, drop us a note via /contact and we will add a picker.
Fully. Epoch ms preserves the millisecond field; ISO outputs include `.SSS`. Dates parsed from a sub-second epoch round-trip without loss. Below 1ms (microseconds, nanoseconds) is not representable in JavaScript's `Date` — those need a separate library or BigInt-based math.
No. Date parsing and formatting run entirely in this browser tab via the built-in `Date` and `Intl.DateTimeFormat` APIs. The page makes no network calls. Open DevTools → Network and watch nothing happen as you paste.
JavaScript's `Date` is millisecond-precise, so 16-digit microsecond timestamps would be ambiguous to auto-detect (and lossy if treated as ms). If you have a microsecond timestamp, divide by 1000 to get ms first, or use a dedicated library like `js-temporal` for precise sub-ms work.
Storing timestamps in a database that gets the timezone right?
Sign up for the free tier and you get $100 in credits, plus VMs, managed PostgreSQL with native timezone-aware columns, object storage, and zero-config autoscaling across four regions.