FormatterHQ

ULID Decoder

Paste one or more ULIDs to see when each was created, its Unix millisecond value, its random part and the same 128 bits as a UUID. UUIDs convert back to ULIDs too.

Input TEXT
Output TEXT
Ready.

How to use the ULID Decoder

  1. Paste one ULID per line (or a UUID you want to see as a ULID).
  2. The decoder runs automatically; click Decode to refresh after editing.
  3. Read the timestamp, Unix milliseconds, randomness and UUID form under each ID.
  4. Fix any line marked with ✘ — it is not a valid ULID.

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, I and L are read as 1 and O as 0. 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 uuid column. 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 U or 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 with 8 or 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.

Frequently asked questions

Is the ULID timestamp in UTC?
Yes. A ULID stores milliseconds since the Unix epoch, which has no time zone, and the decoder displays it as an ISO 8601 date in UTC (the trailing Z). Convert it to your local zone if needed.
Can I get the original random bytes back?
The Randomness line shows the 16 Base32 characters that encode the 80 random bits, and the UUID form shows all 128 bits in hex. The last 20 hex digits of the UUID form correspond to the random part.
Why does converting a ULID to UUID not give a valid UUID version?
The UUID form simply rewrites the same 128 bits in hex. ULIDs do not reserve version or variant bits, so the version digit is whatever the timestamp happens to contain. Databases accept it as a uuid value, but UUID tools will not report a standard version.
How precise is the ULID timestamp?
It is precise to one millisecond. IDs created in the same millisecond share the first 10 characters and differ only in the random part.

Last updated October 3, 2026

Guides

Related tools

ULID Generator Generate sortable ULIDs (Universally Unique Lexicographically Sortable Identifiers) with monotonic ordering, in bulk, using secure randomness. ASN.1 Decoder Parse DER/BER ASN.1 structures from PEM, Base64 or hex into a readable tree with OID names, strings, times and integers. CSR Decoder Decode a PKCS#10 certificate signing request to check the subject, SANs, key size and signature before you send it to a CA. MongoDB ObjectId to Timestamp Extract the creation date from MongoDB ObjectIds and see the random and counter parts; also builds a date-range _id query. SAML Response Decoder Decode Base64 or deflated SAMLResponse and SAMLRequest messages into readable XML and summarise issuer, NameID, conditions and attributes. Snowflake ID Decoder Convert Twitter/X, Discord, Instagram and other Snowflake IDs to timestamps and show worker, process and sequence bits. Un-Google Link Remove Google redirect wrappers (google.com/url, AMP, image results) and tracking parameters to get the real destination URL. Unix Timestamp Converter Convert Unix epoch timestamps to human dates and dates to timestamps, in UTC, local time and any time zone. URL Parser Break a URL into scheme, host, port, path, query parameters and fragment. Decodes values and parses many URLs at once. User Agent Parser Parse user agent strings to identify browser, version, rendering engine, operating system, device type and bots. vCard QR Code Generator Put your contact details in a vCard QR code for business cards and badges: name, company, phone, e-mail, website and address. What Is My Screen Resolution? See your screen resolution, browser viewport size, device pixel ratio, colour depth and media-query features instantly.