Unix Timestamp Converter
Paste any timestamp or date. The tool detects the format automatically and shows it in every common representation. Live "now" clock at the top, ticking every second.
| Unix seconds | — |
|---|---|
| Unix milliseconds | — |
| ISO 8601 UTC | — |
| Local | — |
| RFC 2822 | — |
| Day of week | — |
| Relative | — |
| JS Date constructor | — |
What it accepts
- Unix seconds —
1735689600(10-digit) - Unix milliseconds —
1735689600000(13-digit) - Microseconds / nanoseconds — high-precision database timestamps; converted down to ms
- ISO 8601 —
2025-01-01T00:00:00Zor2025-01-01T09:00:00+09:00 - RFC 2822 —
Wed, 01 Jan 2025 00:00:00 GMT(HTTP and email date format) - Plain dates —
2025-01-01(interpreted as midnight UTC)
What you get back
Every format you might need, side by side:
- Unix seconds and milliseconds (most common)
- ISO 8601 UTC and your local timezone
- RFC 2822 (for HTTP
Date:headers and email) - Day of the week
- Relative time ("3 days ago", "in 2 hours")
- JavaScript
new Date(...)constructor form
The seconds-vs-milliseconds confusion
The single most common bug in date code: passing a number meant for milliseconds (or vice versa) to a function expecting the other unit. A 1000× magnitude error gives you a date 30+ years off. See our dedicated guide on this.
Y2038 — the next big rollover
Quick test: paste 2147483647. That's the maximum value
of a signed 32-bit integer — and the moment when 32-bit Unix timestamps
overflow. It corresponds to 2038-01-19 03:14:07 UTC.
Any system still using time_t as a 32-bit value (some
embedded systems, old databases, legacy file formats) will roll over
to 1901 at that moment. Full discussion →
How this compares to other epoch converters
unixtimestamp.com and epochconverter.com have ranked at the top for "epoch converter" for over a decade. They're fine but slow, ad-laden, and lack auto-detection — you have to tell them whether your input is seconds or milliseconds.
This tool: smaller bundle, auto-detection, live "now" clock, no upload, all your output formats visible at once.
Programmatic equivalents
// JavaScript / Node
Date.now(); // ms
Math.floor(Date.now() / 1000); // seconds
new Date(1735689600 * 1000).toISOString(); // sec → ISO
// Python
import time
time.time() // seconds (float)
import datetime
datetime.datetime.now(datetime.timezone.utc).isoformat()
// Bash
date +%s // seconds
date +%s%3N // milliseconds (GNU)
date -u -d @1735689600 '+%Y-%m-%dT%H:%M:%SZ' // sec → ISO
// Go
time.Now().Unix() // seconds
time.Now().UnixMilli() // milliseconds
Common pitfalls
- JavaScript dates are millisecond-based.
Date.now()returns ms, not seconds. Forgetting to divide by 1000 is the most common bug. - Some APIs use seconds (most), some use milliseconds (JavaScript). When integrating, check the docs.
- Negative timestamps are valid.
-86400is 1969-12-31 UTC. Most systems handle them, but some (older embedded) clamp to 0. - Leap seconds aren't represented in Unix time. Unix time skips them; ISO 8601 can include them (
23:59:60) but most parsers reject the literal. - Timezone matters for date-only strings.
"2025-01-01"parses as UTC midnight in some libraries, local midnight in others. Always include a time + timezone for unambiguous parsing.
FAQ
How does it know if I pasted seconds or milliseconds?
By magnitude. A Unix-second timestamp for any year up to ~5138 is under 1011; a millisecond timestamp up to that year is under 1014. The detector picks based on the input's size. If you paste 1735689600 (10 digits) it's interpreted as seconds. 1735689600000 (13 digits) is milliseconds. 1735689600000000 is microseconds, scaled to ms.
What if my number is between the thresholds?
The heuristic uses base-10 magnitude, so a number near 1011 (around year 5138 in seconds) flips interpretation. In practice this is fine because real timestamps are nowhere near that range.
Does it handle ISO 8601 with timezones?
Yes. 2025-01-01T00:00:00Z, 2025-01-01T00:00:00+09:00, and 2025-01-01 all parse correctly. The browser's Date.parse does the work.
Why does the local time differ from ISO 8601?
The local time uses your browser's detected timezone (shown in the bottom status bar). The ISO 8601 output is always UTC.
Can I paste 'tomorrow' or 'next Monday'?
No — the parser only understands ISO 8601, RFC 2822, common date strings (2025-01-01), and numeric timestamps. Natural-language dates aren't supported because Date.parse is unreliable for them.
Is anything sent to a server?
No. The current time comes from Date.now(); conversion uses new Date(...). Both are browser-native. Open DevTools → Network and verify.