Tech

Generador de Nano ID

Generá Nano IDs aleatorios y URL-friendly con crypto.getRandomValues. Elegí la longitud, el alfabeto y cuántos querés generar de una. Individuales o en lote, sin servidor.

Instantáneo🔒En tu navegadorSin registro
En vivo

¿Qué es un Nano ID?

Nano ID es un generador de identificadores únicos pensado para ser chico, seguro y amigable con las URLs. Por defecto produce cadenas de 21 caracteres tomados de un alfabeto de 64 símbolos: las 26 letras mayúsculas, las 26 minúsculas, los 10 dígitos, más el guion bajo _ y el guion medio -. Todos esos caracteres se pueden usar en una URL sin escaparlos, por eso Nano ID es tan cómodo para links, slugs y tokens públicos. La biblioteca original es de Andrey Sitnik y hoy es una de las alternativas a UUID más usadas en el ecosistema JavaScript.

Por qué es más corto que un UUID

La clave está en el tamaño del alfabeto. Un UUID usa solo caracteres hexadecimales (16 símbolos), así que cada carácter aporta 4 bits de información. Nano ID, con 64 símbolos, aporta 6 bits por carácter. Eso significa que en menos caracteres cabe la misma cantidad de entropía. Un UUID v4 ocupa 36 caracteres (32 hex + 4 guiones) y aporta 122 bits de aleatoriedad; un Nano ID de 21 caracteres aporta unos 126 bits en 21 caracteres. Más seguridad, menos espacio.

Cómo evita el sesgo de módulo (muestreo por rechazo)

Un generador ingenuo tomaría un byte al azar (0 a 255) y le haría módulo con el tamaño del alfabeto. El problema: si el alfabeto no divide a 256 de forma exacta, algunos caracteres salen más seguido que otros. Ese es el sesgo de módulo, y arruina la uniformidad. El algoritmo de nanoid lo resuelve con muestreo por rechazo: calcula una máscara de bits (la potencia de dos menos uno más chica que cubre el alfabeto), aplica esa máscara a cada byte y descarta los valores que caen fuera de rango. Así, cada carácter del alfabeto tiene exactamente la misma probabilidad. Esta herramienta implementa ese mismo método usando crypto.getRandomValues, nunca Math.random.

Probabilidad de colisión

Con el alfabeto por defecto y 21 caracteres, el espacio de posibles IDs es enorme: 6421, que es del orden de 1037. Aplicando la paradoja del cumpleaños, para tener un 1% de chance de una sola colisión habría que generar unos mil millones de IDs por hora durante más de cien años. Si acortás la longitud o usás un alfabeto más chico (por ejemplo, solo números), el espacio se achica y la chance de colisión sube. La regla es simple: más longitud y más alfabeto, más seguro.

Usos comunes y cuándo elegir UUID

  • Slugs y URLs cortas: IDs que se ven bien en un link sin caracteres raros.
  • Tokens públicos: identificadores de sesión, invitaciones o enlaces para compartir.
  • Claves de recursos: nombres de archivos, keys de caché o IDs de objetos en APIs.
  • Bases de datos: como PK cuando no necesitás el formato estándar y preferís ahorrar espacio.

Si necesitás compatibilidad con el formato RFC 4122 (por ejemplo, una columna uuid nativa en PostgreSQL o un sistema que ya espera UUIDs), usá el generador de UUID de Genfy. Para todo lo demás, Nano ID suele ser la opción más compacta.

Tabla: Nano ID vs UUID

CaracterísticaNano ID (default)UUID v4
Longitud21 caracteres36 caracteres
Alfabeto64 símbolos (A-Za-z0-9_-)16 símbolos (0-9a-f) + guiones
Bits de entropía≈ 126122
URL-friendlySí, sin escaparSí, pero más largo
Formato estándarNo (convención)Sí (RFC 4122)
Colisión (50%)≈ 1018 IDs≈ 2,7 × 1018 IDs

Preguntas frecuentes

¿Qué es un Nano ID?

Un identificador único chico y seguro. Por defecto son 21 caracteres de un alfabeto URL-friendly (A-Za-z0-9_-).

¿Por qué es más corto que un UUID?

Usa un alfabeto de 64 símbolos (6 bits por carácter) en vez de hexadecimal (4 bits), así que la misma entropía entra en menos caracteres.

¿Usa aleatoriedad segura?

Sí, usa crypto.getRandomValues con muestreo por rechazo. Nunca Math.random.

¿Qué es el sesgo de módulo?

Cuando algunos caracteres salen más seguido por hacer módulo sobre bytes. El muestreo por rechazo lo elimina.

¿Pueden colisionar?

En la práctica no: con 21 caracteres harían falta trillones de IDs para tener chance de colisión.

¿Puedo cambiar longitud y alfabeto?

Sí: longitud, presets (URL-safe, hex, números, minúsculas) o un alfabeto personalizado.

¿Se generan en el servidor?

No, todo ocurre en tu navegador con la API de criptografía web.

¿Te sirvió este generador?