pg_idkit

multi-tool for generating new/niche universally unique identifiers (ex. UUIDv6, ULID, KSUID)

Overview

PackageVersionCategoryLicenseLanguage
pg_idkit0.4.0FUNCApache-2.0Rust
IDExtensionBinLibLoadCreateTrustRelocSchema
4500pg_idkitNoYesNoYesNoNo-
Relatedpgx_ulid pg_uuidv7 pg_hashids sequential_uuids uuid-ossp permuteseq pg_cardano pg_base58

Version

TypeRepoVersionPG VerPackageDeps
EXTPIGSTY0.4.01817161514pg_idkit-
RPMPIGSTY0.4.01817161514pg_idkit_$v-
DEBPIGSTY0.4.01817161514postgresql-$v-pg-idkit-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
u22.x86_64
u22.aarch64
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
u24.x86_64
u24.aarch64
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0

Build

You can build the RPM / DEB packages for pg_idkit using pig build:

pig build pkg pg_idkit         # build RPM / DEB packages

Install

You can install pg_idkit directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

pig repo add pgsql -u          # Add repo and update cache

Install the extension using pig or apt/yum/dnf:

pig install pg_idkit;          # Install for current active PG version
pig ext install -y pg_idkit -v 18  # PG 18
pig ext install -y pg_idkit -v 17  # PG 17
pig ext install -y pg_idkit -v 16  # PG 16
pig ext install -y pg_idkit -v 15  # PG 15
pig ext install -y pg_idkit -v 14  # PG 14
dnf install -y pg_idkit_18       # PG 18
dnf install -y pg_idkit_17       # PG 17
dnf install -y pg_idkit_16       # PG 16
dnf install -y pg_idkit_15       # PG 15
dnf install -y pg_idkit_14       # PG 14
apt install -y postgresql-18-pg-idkit   # PG 18
apt install -y postgresql-17-pg-idkit   # PG 17
apt install -y postgresql-16-pg-idkit   # PG 16
apt install -y postgresql-15-pg-idkit   # PG 15
apt install -y postgresql-14-pg-idkit   # PG 14

Create Extension:

CREATE EXTENSION pg_idkit;

Usage

pg_idkit: multi-tool for generating new/niche universally unique identifiers

CREATE EXTENSION pg_idkit;
SELECT idkit_uuidv7_generate();

Available Functions

MethodologyFunctionDescription
UUID v6idkit_uuidv6_generate()UUID v6 (RFC 4122)
idkit_uuidv6_generate_uuid()UUID v6 as native UUID type
idkit_uuidv6_extract_timestamptz(TEXT)Extract timestamp from UUID v6
UUID v7idkit_uuidv7_generate()UUID v7 (RFC 4122)
idkit_uuidv7_generate_uuid()UUID v7 as native UUID type
idkit_uuidv7_extract_timestamptz(TEXT)Extract timestamp from UUID v7
NanoIDidkit_nanoid_generate()NanoID
idkit_nanoid_custom_generate_text()NanoID with custom length and alphabet
KSUIDidkit_ksuid_generate()K-Sortable UID
idkit_ksuid_extract_timestamptz(TEXT)Extract timestamp from KSUID
idkit_ksuidms_generate()KSUID with millisecond precision
idkit_ksuidms_extract_timestamptz(TEXT)Extract timestamp from KSUID-ms
ULIDidkit_ulid_generate()Universally Unique Lexicographically Sortable ID
idkit_ulid_extract_timestamptz(TEXT)Extract timestamp from ULID
Timeflakeidkit_timeflake_generate()Snowflake + Instagram ID + Firebase PushID
idkit_timeflake_extract_timestamptz(TEXT)Extract timestamp from Timeflake
PushIDidkit_pushid_generate()Google Firebase PushID
XIDidkit_xid_generate()XID
idkit_xid_extract_timestamptz(TEXT)Extract timestamp from XID
CUIDidkit_cuid_generate()CUID (deprecated)
idkit_cuid_extract_timestamptz(TEXT)Extract timestamp from CUID
CUID2idkit_cuid2_generate()CUID2
idkit_cuid2_generate_with_len(length)CUID2 with custom length
TypeIDidkit_typeid_generate(TEXT)TypeID with prefix and UUIDv7
idkit_typeid_generate_text(TEXT)TypeID as text
idkit_typeid_from_uuid_v7(TEXT, TEXT)TypeID from a given UUID v7
idkit_typeid_extract_timestamptz(TEXT)Extract timestamp from TypeID

Examples

-- Generate different ID types
SELECT idkit_uuidv7_generate();           -- 018c106f-9304-79bb-b5be-4483b92b036c
SELECT idkit_nanoid_generate();            -- A8jFA0r3NC6FdalR4LEJ0
SELECT idkit_ksuid_generate();             -- 2HMQIBkTJmEN11JI7tvSTMwfYI3
SELECT idkit_ulid_generate();              -- 01HPYV2X17GM5SQP22M3DVFZY3
SELECT idkit_cuid2_generate();             -- clrjx3bwh0000fj3x4c2y1z0s

-- Extract timestamp
SELECT idkit_uuidv7_extract_timestamptz('018c106f-9304-79bb-b5be-4483b92b036c');

Last Modified 2026-03-12: add pg extension catalog (95749bf)