1601 kicks off a 400-year cycle
Windows chose 1601-01-01 because Gregorian leap years repeat every 400 years. Starting at a cycle boundary keeps the math neat.
0 or 9223372036854775807 (0x7FFFFFFFFFFFFFFF)
Windows FILETIME (often called LDAP time, NT time, or NTTIME) is a 64-bit signed
integer used by Windows and Active Directory to represent absolute moments in time. The value counts the
number of 100-nanosecond intervals (a.k.a. “ticks”) that have elapsed since the
Windows epoch: 1601-01-01T00:00:00Z (UTC). Many directory attributes use this format,
including lastLogonTimestamp, pwdLastSet, accountExpires, badPasswordTime,
and more.
FILETIME provides a compact, monotonic, time zone–agnostic representation with sub-second precision (100 ns). Because the value is UTC-based, it avoids daylight saving time pitfalls and regional formatting inconsistencies. In LDAP/AD, these values are stored as 64-bit integers and can be transported or indexed efficiently across systems.
Compared to the UNIX epoch (1970-01-01T00:00:00Z), the Windows epoch starts earlier. The exact gap is
11,644,473,600,000 milliseconds (that is, 11644473600 seconds). Conversion is therefore a simple
offset plus a unit change:
ms = (filetime / 10,000) − 11,644,473,600,000filetime = (ms + 11,644,473,600,000) × 10,000
Our converter performs this arithmetic safely with BigInt, then renders human-readable results in UTC
and your chosen time zone. Because the underlying value is UTC, DST never alters the stored number—only
the display string changes.
Some AD attributes use sentinel values to mean no expiry or not set. The most common are:
0 — often interpreted as Never (e.g., accountExpires).9,223,372,036,854,775,807 (0x7FFFFFFFFFFFFFFF) — the maximum 64-bit signed integer, also used to indicate Never.The tool detects and labels these values automatically so you don’t mistake them for real dates.
FILETIME values are frequently shown as 18-digit decimals in LDAP tools and logs. Some APIs and
forensic utilities present the same value in hexadecimal (with or without a 0x prefix).
Both point to the same 64-bit number, and this page accepts either form. Internally, Windows APIs expose
FILETIME as two 32-bit parts; when serialized in binary structures they are little-endian, but LDAP/AD
queries typically surface them as regular big-number integers—no byte-swapping is needed when you paste a
string here.
JavaScript’s Number type cannot precisely represent all 64-bit integers. To avoid rounding, this
converter uses BigInt for the math and only converts to Date once the value is safely
in milliseconds, preserving accuracy for very large timestamps.
Date (≈ ±8.6e15 ms). The tool warns if a value is out of range.lastLogon vs lastLogonTimestamp, remember replication behavior; the precise tick still converts the same way.
Tip: Need a quick mental check? Divide the FILETIME by 10,000 to get milliseconds since 1601,
subtract 11,644,473,600,000, and compare the result to today’s epoch milliseconds.
Or just paste it above and let the converter handle the details—privately, in your browser.
Windows chose 1601-01-01 because Gregorian leap years repeat every 400 years. Starting at a cycle boundary keeps the math neat.
FILETIME counts 100-ns ticks—the same tick size .NET uses—so there are ten million ticks per second and 864 billion in a day.
Subtract hex 0x01B21DD213814000 (116444736000000000 decimal) from a FILETIME to land exactly on the Unix epoch.
The AD sentinel 0x7FFFFFFFFFFFFFFF points to a date around the year 30,828—far enough away to stand in for infinity.
FILETIME travels as two little-endian 32-bit parts in Windows structs, but LDAP surfaces it as one big integer—no byte swap needed when you paste values here.
FILETIME uses a different epoch (1601-01-01 UTC) and unit (100 ns). The tool converts via precise arithmetic with
BigInt and an exact epoch offset so it’s safe for large values.
No. LDAP/FILETIME values encode an absolute moment in UTC. Only the display in your selected time zone changes with DST.
Yes. Click the copy chips beside each output to copy decimal, hexadecimal, and ISO-8601 UTC.