Unix timestamp converter: epoch seconds and milliseconds
Paste a Unix timestamp or an ISO 8601 date to see it in UTC, in ISO 8601 and as epoch seconds and milliseconds, and check a request timestamp against an exchange's server time and recvWindow. Free, no sign-up required.
What a Unix timestamp is
A Unix timestamp counts the seconds since 00:00:00 UTC on 1 January 1970, with every day counted as exactly 86,400 seconds, so leap seconds are not part of it.
POSIX defines this count, seconds since the Epoch, and leaves its relation to the exact current UTC unspecified. JavaScript's Date counts milliseconds from the same moment and ignores leap seconds, and many exchange APIs also use milliseconds: Binance's Spot API takes timestamps in milliseconds or microseconds, and Bybit's V5 API asks for a UTC timestamp in milliseconds. The number of digits tells the unit for current dates:
| Unit | Digits | Example for 5 November 2026, 12:00 UTC |
|---|---|---|
| Seconds | 10 | 1793880000 |
| Milliseconds | 13 | 1793880000000 |
| Microseconds | 16 | 1793880000000000 |
| Nanoseconds | 19 | 1793880000000000000 |
Worked example
Hypothetical example: a request timestamp of 1793880000000, a server time of 1793880001200 and a recvWindow of 5,000 ms, the converter's default values.
The timestamp has 13 digits, so it is read as milliseconds: 2026-11-05 12:00:00 UTC, a Thursday, which is 2026-11-05T12:00:00.000Z in ISO 8601 and 1793880000 in seconds.
The server time is 1,200 ms later, so the request is 1,200 ms behind server time and inside a 5,000 ms window. With a server time of 1793880006500 it would be 6,500 ms behind and outside the window, and with 1793879998500 it would be 1,500 ms ahead of server time, which the rule below also rejects.
Debugging timestamp and recvWindow errors
Binance's Spot API documentation gives the rule its servers apply to a signed request: it is processed only if the timestamp is less than one second ahead of server time and no more than recvWindow behind it. If recvWindow is not sent it defaults to 5,000 ms, and the maximum is 60,000 ms. Bybit's V5 guide states the same shape, server time − recv_window ≤ timestamp < server time + 1,000, with a default of 5,000 ms.
The common causes are a drifting clock on the machine that signs, a timestamp in seconds where milliseconds are expected, and a delay between building the request and sending it, such as a retry that reuses an old timestamp. Compare your timestamp with the exchange's own server time, which this page cannot fetch for you, and fix the clock rather than widening the window. These documents are cited for their timing rules only. Article 99/A of Capital Markets Law No. 6362 treats activity by foreign crypto-asset platforms directed at Turkish residents as unauthorized.
Rejected signatures are a separate problem; the HMAC signature generator rebuilds the signed string with sample keys, and the Binance API error code guide covers -1021 and the rest.
ISO 8601 dates and time zones
RFC 3339, the profile of ISO 8601 used across Internet protocols, writes a time as 2026-11-05T12:00:00Z, where Z means a UTC offset of 00:00, or with an offset such as +03:00, and it allows a space in place of the T.
A date and time without any offset is ambiguous. JavaScript's Date.parse reads a date-only string as UTC but a date-time string without an offset as local time, so the same text can give different timestamps on different machines. This converter reads both as UTC and says so in the Read as row, with a note under the field for a date and time. It rejects a seconds value of 60: RFC 3339 allows one for an inserted leap second, but Unix time has no place for it.
Converting timestamps in Python
Python's datetime does the same conversion; tested with Python 3.11 on 6 November 2026:
from datetime import datetime, timezone
ms = 1793880000000
print(datetime.fromtimestamp(ms / 1000, tz=timezone.utc).isoformat()) # 2026-11-05T12:00:00+00:00
print(int(datetime(2026, 11, 5, 12, tzinfo=timezone.utc).timestamp() * 1000)) # 1793880000000
Dividing by 1,000 gives a float, which is exact enough for milliseconds; for microsecond or nanosecond values, split the integer instead, as this page does, so the last digits are not rounded away. Pass tz=timezone.utc, because without it Python returns your machine's local time.
Which values to enter
- Timestamp or date: digits, with a decimal point if your system writes fractions of a second, or an ISO 8601 date. Spaces around it are ignored.
- Read digits as: automatic by digit count, or a unit you pick when a timestamp is unusually short or long.
- Server time: optional, in milliseconds from the exchange's time endpoint, typed by you.
- recvWindow: optional; the window your request sends, 5,000 if empty.
The button under the timestamp fills in your browser's clock. That clock is only as accurate as your device's, which is why a server time from the exchange is the reference for the window check.
Frequently asked questions
How do I convert a Unix timestamp to a date?
Paste it into the converter: 1793880000 in seconds or 1793880000000 in milliseconds is 2026-11-05 12:00:00 UTC. In code, divide milliseconds by 1,000 and pass the result to a function that takes seconds, with UTC as the time zone.
Is my timestamp in seconds or milliseconds?
For current dates, 10 digits are seconds and 13 are milliseconds; 16 are microseconds and 19 nanoseconds. The converter reads the unit from the length, and you can override it.
What does "Timestamp for this request is outside of the recvWindow" mean?
It is Binance's message for error -1021: the request reached the server more than recvWindow after its timestamp, or the timestamp was a second or more ahead of server time. Check the clock and the unit before anything else.
Does this page use an internet time server?
No. The clock comes from your own device through the browser, the page makes no network request, and what you type stays on the page.
Why does JavaScript give a different time for the same date string?
Without an offset, Date.parse reads a date and time as local time but a date alone as UTC. Add Z or an offset, such as +03:00, to make the string unambiguous.
Sources
- The Open Group Base Specifications Issue 8 (POSIX.1-2024), section 4.19: Seconds since the Epoch (opens in a new tab)
- RFC 3339: Date and time on the Internet: timestamps (opens in a new tab)
- MDN: Date (epoch, milliseconds, Date.parse and time zones) (opens in a new tab)
- Binance Spot API documentation: REST API, timing security (read 6 November 2026) (opens in a new tab)
- Binance Spot API documentation: error codes, -1021 INVALID_TIMESTAMP (read 6 November 2026) (opens in a new tab)
- Bybit V5: Integration guidance, timestamp and recv_window (read 6 November 2026) (opens in a new tab)
- Capital Markets Law No. 6362, consolidated text, Article 99/A (Turkish) (opens in a new tab)
This calculator is general information, not tax, legal or investment advice. Results depend on the values you enter; fees, margin rules and tax rules differ by exchange and country and change over time, so check the official source and ask a licensed adviser about your own situation. Sources, checks and corrections: see the editorial policy.
Related guides
Send a short project brief
The form or an email is enough. You do not need to share your rules yet.
- The exchange or platform you use
- What the software should do
- Your target timeline
- Project briefs and business inquiriesinfo@fincodelabs.com
- WhatsApp (messages only)+90 545 697 41 15 (opens in a new tab)