BookinglyTech News
Software

jet-id: generador de IDs de 28 caracteres 60 % más rápido que nanoid

Una librería de JavaScript y TypeScript que produce IDs de 28 caracteres en 83 millones de operaciones por segundo, superando a nanoid y manteniendo compatibilidad con Node y navegadores.

2 min de lecturaDev.to0 vistas

jet-id es un generador de identificadores únicos sin dependencias para JavaScript y TypeScript. La salida es una cadena de 28 caracteres en base 32 de Crockford, con guiones que separan los segmentos 9‑5‑5‑6. Si se llama a jetId.timed() el primer segmento codifica la marca de tiempo en milisegundos, de modo que ordenar alfabéticamente también ordena cronológicamente.

Rendimiento

En un MacBook M4 Pro con Node 24, jet‑id alcanza 83 503 288 IDs / s, mientras que nanoid llega a 52 415 897. La diferencia se debe a un diseño de “pooling”: 256 IDs se generan de una sola vez con una única llamada a crypto.getRandomValues, y luego se recortan con sub‑cadenas. La tabla de búsqueda de 1 024 entradas convierte 10 bits a dos caracteres de Crockford al mismo tiempo.

Características

  • 125 bits de entropía (25 caracteres de Crockford).
  • 6.4 kB empaquetado, sin dependencias en tiempo de ejecución.
  • Compatibilidad con Node y navegadores modernos; también se incluye CLI.
  • API mínima: jetId(), jetId.timed(), jetId.parseTimed(), jetId.test().
  • Opciones de timestamping sin cambiar el tamaño del ID.

Trade‑offs

Los IDs con timestamp usan los 9 primeros caracteres para el tiempo, quedándose con 80 bits de aleatoriedad. Si se crean varios IDs en la misma milisegundo, no se garantiza el orden entre ellos.

Uso

import jetId from 'jet-id';

// ID aleatorio
jetId(); // '9Q8SWWBTY-7NVXM-FT9S6-XB4R3M'

// ID con timestamp
jetId.timed(); // '1KKNTQ2CN-606ZG-8VF48-76B6F3'

// Validar
jetId.test('avz6yg1rb-47j6r-xgns9-tqw29a'); // true

Referencias

Repositorio en GitHub Benchmark

Por qué importa

Para bases de datos que requieren claves de alta entropía y ordenamiento natural, jet‑id ofrece una alternativa más rápida que nanoid con la ventaja de un formato legible y timestampable. Si tu stack ya utiliza Node o un bundler moderno, añadir esta librería no implicará costes de dependencias ni de tamaño.