Inicio › Herramientas para desarrolladores › Generador de Nano ID

Generador de Nano ID

Genera Nano ID: identificadores cortos, seguros para URL y aleatorios con calidad criptográfica. Elige un alfabeto y una longitud, crea hasta 10,000 ID a la vez y usa la calculadora de colisiones para ver cuánto tiempo pasaría antes de que dos ID coincidan.

Última actualización:

Generar

Probabilidad de colisión

Según el alfabeto y la longitud elegidos en el generador.

Publicidad
Publicidad

Cómo usar Generador de Nano ID

  1. Elige un alfabeto: el conjunto seguro para URL predeterminado (A-Z, a-z, 0-9, _ y -), uno predefinido o escribe tus propios caracteres.
  2. Define la longitud (21 es la predeterminada de nanoid) y cuántos ID necesitas.
  3. Haz clic en Generar. Los ID aparecen al instante y se comprueba que no haya duplicados en el lote.
  4. Revisa el riesgo de colisión: introduce cuántos ID creas por hora para ver cuánto falta para una probabilidad de colisión del 1%.
  5. Copia o descarga la lista como texto plano, separada por comas o como array JSON.

Cómo se generan los Nano ID

Un Nano ID se construye carácter a carácter a partir de bytes aleatorios criptográficamente seguros. Para que todos los caracteres sean igual de probables, el generador no usa byte % alphabetLength (que favorece a los primeros caracteres cuando 256 no es múltiplo del tamaño del alfabeto). En su lugar:

  1. Calcula una máscara de bits: el menor valor de la forma 2k - 1 que cubre el alfabeto (63 para un alfabeto de 64 caracteres, 63 para 36 caracteres, 15 para 16).
  2. Toma un lote de bytes aleatorios y aplica un AND entre cada uno y la máscara.
  3. Usa el resultado como índice si cae dentro del alfabeto y lo descarta si no (muestreo por rechazo).

Es el mismo enfoque que el customAlphabet de la biblioteca de código abierto nanoid, así que los ID creados aquí tienen propiedades estadísticas idénticas.

Entropía según el alfabeto y la longitud

Cada carácter añade log2(tamaño del alfabeto) bits. Apunta a unos 100 bits como mínimo para los ID que deben ser únicos a nivel global; con menos bits basta para ID de corta duración o poco volumen, como los códigos de invitación.

AlfabetoTamañoBits por carácterLongitud para ~126 bitsBits con longitud 10
Seguro para URL (predeterminado)646.002160
Alfanumérico625.952259.5
Sin caracteres parecidos495.612356.1
Minúsculas + números365.172551.7
Hexadecimal164.003240
Solo números103.323833.2

La fórmula de colisión

La probabilidad de que al menos dos de n ID aleatorios sean iguales, entre N = tamaño del alfabetolongitud valores posibles, es aproximadamente p ≈ 1 - e-n(n-1)/(2N) (el problema del cumpleaños). Despejando n se obtiene el número de ID con el que el riesgo llega a p: n ≈ √(2N · ln(1/(1-p))). Para el ID predeterminado seguro para URL de 21 caracteres, N = 6421 = 2126, así que un riesgo del 1% requiere unos 1.3 × 1018 ID.

Preguntas frecuentes

¿Qué es un Nano ID?

Nano ID es un formato de código abierto muy usado para identificadores únicos aleatorios. Por defecto usa 21 caracteres de un alfabeto seguro para URL de 64 símbolos (A-Z, a-z, 0-9, guion bajo y guion), lo que da 126 bits aleatorios, comparable a los 122 bits aleatorios de un UUID v4 pero en una cadena más corta.

¿Qué probabilidad hay de una colisión de Nano ID?

Con el alfabeto y la longitud predeterminados, tendrías que generar unos 1,000 ID por hora durante aproximadamente 149 mil millones de años (del orden de 10^18 ID) para llegar a un 1% de probabilidad de una sola colisión. La calculadora de esta página usa la aproximación del cumpleaños p = 1 - e^(-n(n-1)/2N), donde N es el tamaño del alfabeto elevado a la longitud del ID.

¿Es seguro usar un alfabeto personalizado?

Sí, siempre que mantengas suficiente entropía. Cada carácter aporta log2(tamaño del alfabeto) bits, así que un alfabeto más pequeño necesita un ID más largo. El generador usa una máscara de bits con muestreo por rechazo, de modo que todos los caracteres son igual de probables con cualquier tamaño de alfabeto, sin el sesgo de módulo del código ingenuo random % length.

Nano ID o UUID: ¿cuál debo usar?

Usa UUID cuando una columna de base de datos, una API o un estándar exija ese formato. Usa Nano ID cuando quieras ID más cortos y aptos para URL en enlaces, nombres de archivo o identificadores públicos. Ninguno incluye una marca de tiempo, así que ninguno se ordena por fecha de creación; para eso usa ULID o UUID v7.

¿Estos ID se generan de forma segura?

Sí. La aleatoriedad procede de crypto.getRandomValues, el generador criptográficamente seguro del navegador, la misma fuente que usa la biblioteca nanoid en los navegadores. No se envía nada a ningún servidor.

¿Un Nano ID puede empezar por guion o guion bajo?

Con el alfabeto predeterminado, sí. Si un ID se va a usar como argumento de línea de comandos, selector CSS o id de HTML, elige el alfabeto alfanumérico o añade un prefijo con una letra.

¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

Herramientas relacionadas

Ver todas las de Generadores de código →