ISO Time Converter
Convert between ISO-8601, Unix timestamps and human-readable dates.
2026-05-23T13:38:30.237Z·1779543510How to use ISO Time Converter
What is ISO-8601?
ISO-8601 is the international standard for representing dates and
times as strings. The canonical form is
2026-05-20T18:00:00Z — four-digit year, two-digit month and day,
T separator, two-digit hour/minute/second, and a zone designator
(Z for UTC, or ±HH:MM for an offset). Fractional seconds are
optional (2026-05-20T18:00:00.123Z). The standard sorts
lexicographically — comparing two ISO strings as text gives the same
result as comparing them as dates — which is why it shows up in
filenames, log lines and database columns everywhere.
What is a Unix timestamp?
A Unix timestamp is the number of seconds elapsed since
1970-01-01T00:00:00Z, ignoring leap seconds. It is an absolute,
timezone-independent number — 1700000000 refers to exactly the same
instant whether you’re in Tokyo, Lagos or Berlin. JavaScript, like
many newer environments, prefers milliseconds (the value
Date.now() returns), so you’ll see Unix timestamps in two main
flavours: 10-digit seconds for shell tools, databases, and most
languages, and 13-digit milliseconds for JavaScript, browser
APIs, and increasingly modern logging pipelines.
The conversion is purely arithmetic — Math.floor(ms / 1000) to go
from milliseconds to seconds, seconds * 1000 to go back — but the
two values look enough alike (and are wrong by exactly the same
factor) that confusing them is a perennial source of bugs.
How the converter works
The tool keeps three representations of a single instant in sync at all times:
- ISO-8601 string in UTC (
2026-05-20T18:00:00.000Z) and in the browser’s local zone. - Unix timestamp in seconds (10 digits) and milliseconds (13 digits).
- Human-readable rendering —
Wednesday, 20 May 2026, 18:00:00 UTC— usingIntl.DateTimeFormatso it matches your locale’s date conventions.
Edit any one of those and the others recompute. A live now panel
ticks at the top of the page so you can grab the current instant in
every format with a single click. Pasted input is auto-classified
(ISO string, 10-digit seconds, 13-digit milliseconds, RFC 2822) and
parsed accordingly, with a clear error if the input is ambiguous.
Common use cases
- Debugging API responses. A JSON field says
1700000000— is that seconds or milliseconds? Paste and read the human date. - Log analysis. Server logs in epoch seconds, browser logs in milliseconds, alerting dashboards in ISO; the converter is the glue between them.
- Scheduling and cron. Converting a target wall-clock time into the Unix timestamp your scheduler needs (or vice versa).
- SQL queries against time columns. Postgres
to_timestamp(…), MySQLFROM_UNIXTIME(…), BigQueryTIMESTAMP_SECONDS(…)— quickly validate the integer you’re about to paste into a query. - Timezone audits. Confirming that a server-side timestamp in
+00:00really is the same wall-clock time a client in+05:30reported.
How to use this ISO time converter
- The top of the page shows the current instant in every format, refreshing each second. Click any value to copy.
- To convert an arbitrary timestamp, paste it into the input
field. The converter auto-detects:
- 10-digit integer → Unix seconds.
- 13-digit integer → Unix milliseconds.
- String containing
TorZ→ ISO-8601. - Other recognisable formats (RFC 2822, date-only) → parsed via
the browser’s
Dateconstructor.
- The output panel shows the instant as ISO-8601 in UTC, ISO-8601 in your local zone, Unix seconds, Unix milliseconds, and a human-readable date in your locale.
- To go the other direction, type into the ISO-8601 or human-readable field directly — the integers update.
- The local-time line displays the IANA zone name (for example
Europe/Berlin) and the current offset (+01:00or+02:00depending on DST), so there is no ambiguity about which zone “local” means.
Security considerations
This is a parser, not a credential tool, so the security surface is small. Two things to keep in mind:
- Naïve
Date.parse. A string like2026-05-20T18:00:00(no zone) is interpreted as local time by JavaScript, which means the same string produces different absolute instants on machines in different timezones. The converter flags missing zone designators explicitly so you don’t get a silently wrong answer. - Leap seconds. Unix time pretends leap seconds don’t exist — a Unix second is a 1/86400th of a UTC day, except on leap-second days when one second is “smeared” or “stepped” depending on the OS. For ordinary application use this is invisible; for sub-second precision over historical dates, no JavaScript-based converter is authoritative.
Privacy
Every conversion is performed by the browser’s built-in Date and
Intl APIs running on your CPU. No timestamps are sent to a server,
no analytics are collected on the values you enter, and the page
works offline once loaded — the live clock ticks from your local
machine, not from a remote time source. You can verify in the Network
tab: zero requests after the initial load.
Compatibility notes
The tool requires Date, Intl.DateTimeFormat, and
Intl.DateTimeFormat().resolvedOptions() — all present in every
browser released since 2017 (Chrome 24+, Firefox 29+, Safari 10+,
Edge 12+). ISO-8601 output uses the format produced by
Date.prototype.toISOString(), which is identical across browsers
and accepted as input by every backend language’s date parser
(Python datetime.fromisoformat, Go time.Parse(time.RFC3339, …),
Postgres timestamptz, and so on).
Frequently asked questions
Is my timestamp in seconds or milliseconds?
1700000000 is November 2023). The same instant in milliseconds is 13 digits long (1700000000000). A 16-digit number is microseconds; 19 digits is nanoseconds. This tool auto-detects by digit count: anything under ~10^11 is treated as seconds, anything above as milliseconds. If you're unsure, paste the value and look at the resulting date — if a 13-digit value gave you a year in 56,000 AD, you fed seconds where milliseconds were expected (or vice versa).How does the tool handle timezones?
Z (or +00:00) are UTC. Strings that end in an offset like +05:30 are in that offset. Strings with no zone (2026-05-20T18:00:00) are interpreted as local time — this is the JavaScript Date.parse behaviour and the cause of countless bugs; the converter flags this case explicitly. The output panel shows the instant in both UTC and your browser's local timezone (computed from Intl.DateTimeFormat().resolvedOptions().timeZone) so you can see at a glance whether the value you expected matches.What input formats does the converter accept?
Date.parse accepts, which includes: full ISO-8601 (2026-05-20T18:00:00Z, 2026-05-20T18:00:00.123+05:30), date-only (2026-05-20, interpreted as UTC midnight), RFC 2822 dates (Wed, 20 May 2026 18:00:00 GMT — emails and HTTP), Unix seconds (10-digit integer) and Unix milliseconds (13-digit integer). Locale-specific formats (5/20/2026, 20.05.2026) are not part of the standard and are deliberately not parsed — they are ambiguous between month/day and day/month and will produce a clear error.Does the tool handle daylight-saving time correctly?
Intl and Date objects, which apply the correct DST rules for the date in question (so the same UTC instant might display as EST in January and EDT in July). DST issues only ever appear when you supply a wall-clock string without an offset, which is exactly when the converter warns you about ambiguity.Where do my timestamps go?
Date, Intl, and performance.now() APIs on your CPU. No timestamps are uploaded, no analytics are collected on the values you enter, and the page works fully offline once loaded. The live now clock at the top of the page is your machine's clock — no NTP request, no time-server roundtrip.Related tools
Timestamp to Date
Convert Unix timestamps into readable dates.
Date to Timestamp
Convert dates into Unix timestamps.
Time Zone Converter
Convert times across world time zones.
Date Difference Calculator
Find the exact difference between two dates.
Date Add & Subtract
Add or subtract days, months, and years from a date.
Age Calculator
Calculate exact age in years, months, and days.