ULID decoder: read the time inside a ULID
Every ULID starts with a 48-bit millisecond timestamp, so the ID itself tells you when it was created. This ULID decoder extracts that timestamp, shows it as an ISO 8601 date in UTC, and splits out the 80-bit random part. It also rewrites the ULID as a UUID, which is how many databases store it.
Example
Decoding the ULID from the specification's README gives:
01ARZ3NDEKTSV4RRFFQ69G5FAV
Timestamp: 2016-07-30T23:54:10.259Z
Unix ms: 1469922850259
Randomness: TSV4RRFFQ69G5FAV
As UUID: 01563e3a-b5d3-d676-4c61-efb99302bd5b
In the tool, the timestamp line also shows how long ago that was, such as "10.2 years ago". The first 10 characters (01ARZ3NDEK) carry the time and the last 16 carry the randomness.
What the decoder accepts
- Many IDs at once: one per line; blank lines are ignored.
- Any case: lowercase ULIDs decode the same as uppercase.
- Look-alike characters: following Crockford Base32,
IandLare read as1andOas0. Hyphens are removed. - UUIDs: a 36-character UUID is converted to its 26-character ULID and decoded. This is how you read the time from a ULID stored in a
uuidcolumn. A standard UUID that is not version 7, such as a random v4, is decoded with a ⚠ warning, because its first 48 bits are not a timestamp and the date shown means nothing.
Common errors
- "Not a valid ULID (need 26 Crockford Base32 characters)" — the ID is too short or too long, or contains
Uor punctuation. Check for a truncated copy. - "Out of range: the first character must be 0-7" — 26 Base32 characters hold 130 bits, but a ULID is only 128, so the first character can be at most
7. An ID starting with8or higher was not produced by a ULID generator. - A date far in the past or future. The value may be a different 26-character ID (some systems use Base32 hashes). If the date makes no sense, the ID is probably not a ULID.
To turn the Unix milliseconds into other time zones or formats, paste them into the Unix timestamp converter. You can create fresh IDs with the ULID generator, and inspect standard UUIDs with the UUID validator.
Privacy
Decoding is plain arithmetic performed in your browser. The IDs you paste, which may identify records in your system, are not sent to a server.