.NET Ticks Converter
Paste a DateTime.Ticks value and instantly see the UTC date, ISO 8601 string, Unix timestamp, and more.
What are .NET ticks?
In .NET, a tick is a unit of time equal to 100 nanoseconds — ten million ticks make one second. DateTime.Ticks counts the number of these intervals since midnight on January 1, 0001 UTC.
You encounter ticks when serializing DateTime values to databases or binary formats, reading performance counters, or debugging C# and F# applications. A current ticks value is a large 18–19 digit number (e.g. 638,500,000,000,000,000). Windows itself uses a related but distinct 100-nanosecond format — see the FILETIME Converter if your value counts from 1601 instead of year 1.
Converting ticks in C#
The standard round-trips look like this:
Prefer DateTimeOffset over DateTime when working across time zones — it stores the UTC offset alongside the timestamp and avoids ambiguity.
Frequently asked questions
What are .NET ticks?
A .NET tick is a 100-nanosecond interval. The DateTime.Ticks property counts ticks since January 1, 0001 at 00:00:00 UTC (the start of the Gregorian calendar). There are 10,000 ticks per millisecond and 10,000,000 ticks per second.
How do I get the current ticks in C#?
Use DateTime.UtcNow.Ticks or DateTimeOffset.UtcNow.Ticks for UTC-based ticks. Avoid DateTime.Now.Ticks for storage or transmission because it includes the local time zone offset, which makes the value ambiguous when read on a machine in a different time zone.
What is the difference between DateTime.Ticks and Unix time?
Unix time counts seconds (or milliseconds) since January 1, 1970. .NET ticks count 100-nanosecond intervals since January 1, 0001 — a different epoch and a much finer resolution. To convert: subtract the Unix epoch ticks (621,355,968,000,000,000) from the DateTime.Ticks value, then divide by 10,000 to get milliseconds.
How do I convert .NET ticks to a Unix timestamp in C#?
Use DateTimeOffset arithmetic: long unixMs = (ticks - 621355968000000000L) / 10000L; — but the idiomatic way is new DateTime(ticks, DateTimeKind.Utc) then DateTimeOffset.ToUnixTimeMilliseconds().
Why is the epoch year 0001 instead of 1970?
Microsoft designed DateTime around the proleptic Gregorian calendar, which starts at year 1 AD. Picking year 1 means DateTime can represent any date in recorded history without needing negative numbers. Unix time uses 1970 because that was a convenient round number when POSIX was designed in the late 1960s.
Can .NET ticks represent dates before 1970?
Yes. Any ticks value between 0 (0001-01-01) and 621,355,968,000,000,000 (1970-01-01) represents a date before the Unix epoch. This tool converts those values correctly — they produce a negative Unix timestamp.