Generate Universally Unique 'Lexicographically' 'Sortable' Identifiers
Overview
Universally unique identifiers ('UUIDs') can be sub-optimal for many uses-cases because they are not the most character efficient way of encoding 128 bits of randomness; v1/v2 versions are impractical in many environments, as they require access to a unique, stable MAC address; v3/v5 versions require a unique seed and produce randomly distributed IDs, which can cause fragmentation in many data structures; v4 provides no other information than randomness which can cause fragmentation in many data structures. Providing an alternative, 'ULIDs' (https://github.com/ulid/spec) have 128-bit compatibility with 'UUID', 1.21e+24 unique 'ULIDs' per millisecond, support standard (text) sorting, canonically encoded as a 26 character string, as opposed to the 36 character 'UUID', use 'base32' encoding for better efficiency and readability (5 bits per character), are case insensitive, have no special characters (i.e. are 'URL' safe) and have a monotonic sort order (correctly detects and handles the same millisecond).
- Switch two functions to fork by Chris Bove using
std::chronoinstead oftime_tfor consistent millisecond resolution (3 fixing 2) - Updated documentation showing consistent millisecond functionality
- Added unit tests for millisecond functionality
From inst/NEWS.Rd in the release
Install
Health
- OK13 OK2026-08-04
- NOTE12 OK, 1 NOTE2026-08-01
- OK14 OK2026-04-22
- ERROR13 OK, 1 ERROR2026-04-18
- OK14 OK2026-03-10
Documentation
- Help pages
- 1includes a package overview page
- Examples that run
- 100%1 run in a plain check
- Exported functions with examples
- 100%
- Documented parameters
- 100%
- Return-value docs
- 100%
- Help pages citing references
- 0%
Downloads
Repository
- PRs merged (all time)
- 100%
- Median days to close, 50 most recently updated closed issues
- 4
- Median days to close, 50 most recently updated closed PRs
- 2
Stars over time
Forks over time
Releases over time
Issues over time
PRs over time
Commits over time
4 development-tooling and community-health practices detected across 4 families in the upstream repository
Checks run against github.com/eddelbuettel/ulid on 2026-10-21.
The repository owner accepts GitHub Sponsors
GitHub Pages site last deployed 2026-07-27
Dependencies
Installing ulid adds 1 package (1 with compiled code, 1.8 MB of source tarballs). Heaviest: Rcpp 1.8 MB.
Code & Tests
People & History
Previously maintained by Bob Rudis (0.3.0).
Pick two releases to compare their code metrics.
- RR 4.6.0 released · 2026-04-24
- RR 4.5.0 released · 2025-04-11
- 0.4.0Latest
- RR 4.4.0 released · 2024-04-24
- unarchivedReturned to CRAN2024-04-02
- 0.3.1
- archivedRemoved from CRAN2024-03-24issues were not corrected despite reminders
- RR 4.3.0 released · 2023-04-21
- RR 4.2.0 released · 2022-04-22
- RR 4.1.0 released · 2021-05-18
- RR 4.0.0 released · 2020-04-24
- 0.3.02019-07-09
- RR 3.6.0 released · 2019-04-26
Package metadata
- First published
- 2019-07-09
- Total releases
- 3 / 7 yrs
- License
- MIT + file LICENSE OSI
- Download size
- 13 KB
Cite
Cite this package
Run in R for the authors' preferred citation:
citation("ulid")This package has no citation file, so citation() returns this entry built from DESCRIPTION.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-24, which the citation names so these numbers can be found later. More on citing and the projects behind them.