ulid
Pyhton version of this: https://github.com/alizain/ulid
What it is and what it does
ULID is a Python implementation of Universally Unique Lexicographically Sortable Identifiers, a 128-bit identifier format that combines a 48-bit millisecond timestamp with 80 bits of randomness, encoded as a 26-character base32 string. Unlike UUIDs, ULIDs are sortable by creation time and use a more compact, URL-safe representation without special characters.
The package provides a simple interface to generate new ULIDs. It addresses UUID limitations by offering better character efficiency (26 vs 36 characters), lexicographic sortability, and built-in timestamp information. However, the package has been dormant since its 2016 release with no maintenance activity, raising questions about compatibility with modern Python versions and whether it remains suitable for production use.
Use it for:
- Generate sortable unique identifiers for database records where insertion order matters and you want to avoid UUID's random ordering.
- Create URL-safe unique IDs for APIs and web applications without special characters or case sensitivity issues.
- Build distributed systems where you need 128-bit unique IDs with embedded timestamp information for debugging and auditing.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Generates ULIDs (Universally Unique Lexicographically Sortable Identifiers), which are 128-bit unique identifiers encoded as 26-character sortable strings, offering an alternative to UUIDs with better efficiency and lexicographic ordering.
No. The package is dormant (last release 2016-08-01, no updates in 3665 days) with unspecified Python version support, making compatibility with modern Python uncertain. While the concept is sound and there are no known vulnerabilities, the lack of maintenance and high install friction (source tarball) mean you should consider actively maintained ULID implementations instead.
Install
ulid on PyPI
pip
pip install uliduv
uv add ulidpoetry
poetry add ulidInstalling ulid
Before you install
High install friction: the package is dormant (last release 2016-08-01, no updates in 3665 days) and ships as a source tarball. No runtime dependencies, but the age and lack of maintenance signal suggest limited ongoing support.
License in practice
BSD license is permissive, allowing commercial and private use with minimal restrictions, making it safe to adopt from a licensing perspective.
Quickstart
pip install ulid
import ulid
print(ulid.ulid())
Python version support is unspecified; the package was last released in 2016 and may not be compatible with modern Python versions.
Verify before relying
- Whether the package works with current Python versions (3.10+) given its 2016 release date and no updates since.
- Whether cryptographically secure randomness is actually used in the current implementation.
- Performance characteristics and suitability for high-volume ID generation workloads.
Package facts
| License | BSD (permissive) |
| Python support | not specified |
| Install friction | high — source build required |
| Runtime dependencies | none |
| Maintenance | dormant — 3,665 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 95,250/month — #13,276 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: ulid-1.1.tar.gz
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
lexidGenerates lexically ordered numerical IDs that…
permissive · top 15,000 on PyPI
python-ulidGenerates and manipulates ULIDs (universally…
permissive · top 5,000 on PyPI
typeid-pythonGenerates and parses TypeIDs—type-safe,…
permissive · top 15,000 on PyPI
ulid-pyGenerates and parses ULIDs (Universally Unique…
permissive · top 5,000 on PyPI
ulid-transformGenerate and convert ULIDs (Universally Unique…
permissive · top 15,000 on PyPI
snowflake-idGenerates and parses Snowflake IDs, distributed…
permissive · top 15,000 on PyPI
timeflakeGenerates 128-bit, time-ordered, URL-safe…
permissive · top 15,000 on PyPI
uuidProvides UUID object creation and RFC…
unclear · top 5,000 on PyPI
cuidGenerates fast, sequentially-ordered unique…
permissive · top 5,000 on PyPI
cyksuidGenerates and parses KSUIDs (K-Sortable…
permissive · top 15,000 on PyPI