Skip to content
Date / Time

Unix timestamp converter

Convert between Unix epoch (seconds or milliseconds, auto-detected) and ISO 8601, with live readout across multiple timezones (UTC, US, EU, Asia, Australia). DST handled automatically by the browser via Intl.DateTimeFormat. CSV batch mode for timestamp lists. Fully.

Single conversion

10-digit epoch = seconds, 13-digit = milliseconds (auto-detected). ISO 8601 accepts `Z` (UTC) and `+HH:mm` offsets.

Live timezones

    Batch CSV conversion

    One timestamp per line (epoch or ISO). Output is CSV with epoch_seconds, ISO 8601 UTC, Europe/Rome formatted column.

    How to use the converter

    1. 1

      Type epoch or ISO

      Type a Unix epoch (e.g. 1761394800) in the first field or an ISO 8601 (e.g. 2026-04-25T12:00:00Z) in the second. The fields are bidirectional: change one, the other updates.

    2. 2

      Click 'Now' for the present

      The 'Now' button locks the current epoch. Useful as a starting point for delta calculations or to pin a snapshot reference instant.

    3. 3

      Add timezones

      The Live timezones section shows the timestamp across multiple IANA timezones at once. Add a zone from the dropdown (50+ supported). DST is automatic: during European summer time, Europe/Rome becomes UTC+02 without intervention.

    4. 4

      Batch CSV for lists

      To convert many timestamps at once, paste one per line in the textarea. Output is a CSV with columns epoch_input, epoch_seconds, ISO 8601 UTC, Europe/Rome formatted. Download as.csv for Excel or your data pipeline.

    Why one more timestamp converter

    Three things separate this tool from the dozen alternatives on SERP.

    Auto-detect epoch unit. Most converters ask you to explicitly pick "seconds" or "milliseconds" upfront. Classic mistake: pasting a JavaScript timestamp (milliseconds, 13 digits) into a field configured for Python time.time() (seconds, 10 digits) and seeing the date jump to year 55000 AD. Here the parser distinguishes automatically: absolute value > 10^11 is read as ms, otherwise as seconds. Robust heuristic for modern timestamps (1973 in seconds = 10^8, 1970 in milliseconds = 0).

    Live multi-timezone, DST-aware. Add as many timezones as you need and they all update in real time as you change the input epoch. The browser's native Intl.DateTimeFormat uses the IANA tzdata database baked into V8/SpiderMonkey/JavaScriptCore: no surprises with stale or wrong DST rules. When summer time hits, Europe/London instantly becomes UTC+01 without a refresh.

    Batch CSV for real work. You often have a list of timestamps from a database dump or log analysis and want them all converted to a readable format. Paste the list, get the CSV with four columns. Works also with ISO 8601 and a mix of epoch and ISO in the same list. Output preserves input order, one row per timestamp.

    Glossary

    Technical terms used on this page, briefly explained.

    Unix epoch #
    Number of seconds (or milliseconds in JavaScript) elapsed since 1 January 1970 00:00:00 UTC. De-facto standard for timestamps in every Unix-like operating system and many file formats (ZIP, TAR, log files).
    ISO 8601 #
    Standard textual representation of dates and times: YYYY-MM-DDTHH:mm:ss.sss±HH:mm. Suffix Z = UTC. Universally readable, lexicographically sortable.
    DST (Daylight Saving Time) #
    Shift one hour forward to make better use of daylight during summer months. In the EU: last Sunday of March (spring forward) and last Sunday of October (fall back). The EU has been debating ending DST since 2018; for now it is still in effect.
    IANA tzdata #
    Canonical database of DST rules for every timezone in the world, maintained by the Internet Assigned Numbers Authority. Updated regularly (4-8 releases/year) to reflect regulatory changes.
    Timezone offset #
    Difference in hours/minutes between the zone and UTC at a given instant. Europe/London: UTC+00 (winter) or UTC+01 (summer). Asia/Kolkata: stable UTC+05:30. Pacific/Chatham: UTC+12:45/+13:45 (rare non-30-min offset).
    Negative Unix timestamp #
    Dates before 1 January 1970. Valid in epoch but not always supported: some legacy languages clamp to 0. JavaScript Date handles them correctly down to 271821 BC (limit of 8.64e15 ms from epoch).

    Frequently asked questions

    How can I tell if my timestamp is in seconds or milliseconds?
    Rule of thumb: 10 digits = seconds, 13 digits = milliseconds. If the value is 1700000000 (10 digits), it is an epoch in seconds corresponding to November 2023. If it is 1700000000000 (13 digits), it is milliseconds, same instant. JavaScript uses milliseconds (Date.now()), Python time.time() returns a float in seconds, Unix `date +%s` returns integer seconds. The tool auto-detects based on magnitude.
    European DST switches twice a year: how is it handled?
    Automatically. The browser uses the IANA tzdata database with DST rules for every timezone. When you convert a timestamp falling in European summer (e.g. August 2026), the tool shows UTC+01 (BST in London, CEST in Rome). For winter timestamps, it shows UTC+00 (GMT) or UTC+01 (CET). No manual settings, no transition errors.
    Can I convert timestamps before 1970?
    Yes. Negative epochs are supported: -86400 corresponds to 31 December 1969 at 00:00 UTC. JavaScript Date handles a range from roughly 271821 BC to 275760 AD with millisecond resolution. For older historical or astronomical dates you need a dedicated parser (e.g. Julian Date).
    What happens if I paste a non-numeric value into the epoch field?
    The tool silently ignores invalid input and keeps the last valid value. To avoid confusion, validate the input before basing business logic on the result. In batch mode, unparseable lines are included in the CSV with empty conversion columns and counted as errors in the status toast.
    Does the batch CSV handle ISO 8601 mixed with epoch?
    Yes. Each line is tried first as an epoch (numeric regex), then as ISO 8601. Mixing formats in the same list is supported. Lines that match neither are kept in the output with empty conversion columns, distinguishable from valid ones.
    Is there a row limit for the batch?
    Not enforced by the tool. The limit is your tab memory. 10,000 rows are fine on any modern machine. For larger datasets a shell command is more efficient: awk '{print $1, strftime("%Y-%m-%d %H:%M:%S", $1)}' or a Python script with datetime.fromtimestamp().
    Why does Europe/London show 'GMT' in December and 'BST' in June?
    Because those are the standard names: GMT (Greenwich Mean Time, UTC+00, winter time) and BST (British Summer Time, UTC+01, summer time). The browser picks the right abbreviation based on the date of the timestamp you are converting. Same applies to other European countries: Germany CET/CEST, France CET/CEST, Spain CET/CEST.
    Does it work offline?
    Yes, after the first load. The tzdata database is bundled into the browser's JavaScript engine, no external fetches. Conversions, multi-timezone formatting, batch CSV keep working without connectivity. Bookmark the page to use it in air-gapped scenarios.
    How do I handle non-standard offsets like India (UTC+05:30) or Nepal (UTC+05:45)?
    They are in the dropdown (Asia/Kolkata, Asia/Kathmandu). All IANA zones with fractional offsets (half or quarter hour) are handled correctly: IST is stable UTC+05:30 (no DST), Nepal Standard Time UTC+05:45, Australia/Eucla UTC+08:45 (one of the few non-30-min offsets in the world).

    Who builds these tools?

    Maurizio Fonte, senior IT consultant with 20+ years in PHP, Laravel, unmanaged Linux infrastructure, applied cybersecurity and AI/LLM integration. Production backends, legacy code modernization, security audits, custom AI agents and MCP servers: the work behind every tool published here.

    About Maurizio Fonte