Este generador de cadenas aleatorias crea texto aleatorio criptográficamente seguro, de la longitud que quieras y con el alfabeto que elijas. Todo ocurre en tu navegador, así que no se envía nada a ningún sitio.
¿Qué es una cadena aleatoria?
Una cadena aleatoria —un string, en programación— es una secuencia de caracteres sacados de forma independiente de un alfabeto, sin ningún patrón que relacione una posición con la siguiente. A diferencia de una contraseña o de un UUID, no tiene una estructura obligatoria: la longitud y el conjunto de caracteres los decides tú.
Cadena aleatoria, contraseña o UUID
Las tres son valores impredecibles, pero no ofrecen las mismas garantías.
Un generador de contraseñas garantiza que haya caracteres de cada tipo que marques. Un UUID tiene una estructura fija de 128 bits que otros sistemas saben leer. Un generador de cadenas aleatorias no promete ninguna de las dos cosas, y justo por eso encaja cuando el formato lo controlas tú.
Y si lo que buscas es una letra suelta para un juego o una clase, el generador de letras aleatorias la saca carácter a carácter, con la ñ incluida.
Por qué importa el conjunto de caracteres
Cada carácter aporta log₂(tamaño del conjunto) bits. Un dígito aporta 3.3 bits; un carácter alfanumérico, 5.95.
Así que un alfabeto más pequeño no es por fuerza más débil. Ajusta la longitud y un generador de cadenas aleatorias limitado al hexadecimal llega a la misma seguridad que uno que usa todos los caracteres.
Una matriz con los bits de entropía de cadenas aleatorias de 8, 16, 32 y 64 caracteres en cinco conjuntos: solo dígitos, hexadecimal, letras, alfanumérico y todos los caracteres. Muestra que un conjunto más pequeño se compensa con longitud: 32 caracteres hexadecimales llegan a 128 bits, más o menos lo que dan 22 alfanuméricos, mientras que 8 caracteres no bastan en ningún conjunto. Las casillas por debajo de 64 bits van en rojo, las de 64 a menos de 128 en ámbar y las de 128 o más en verde azulado.
Cómo funciona este generador de cadenas aleatorias
De dónde sale el azar
Los caracteres salen de crypto.getRandomValues(), la fuente aleatoria criptográfica del navegador, que se alimenta de la reserva de entropía del sistema operativo.
Math.random() no se usa en ninguna parte de este sitio. Parte de una semilla y es determinista: sirve para barajar una lista de reproducción, pero no para nada que roce la seguridad.
El sesgo del módulo
Conseguir bytes aleatorios es lo fácil. Lo difícil es convertirlos en caracteres de tu alfabeto sin torcer el resultado: ahí fallan sin avisar muchas implementaciones, y es lo único que un generador de cadenas aleatorias tiene que hacer bien sí o sí.
Lo más obvio es randomByte % 62. Un byte tiene 256 valores, y 256 entre 62 da 4 y sobran 8.
Esos 8 valores sobrantes caen en los ocho primeros caracteres, así que de la a a la h salen un 25 % más que el resto. El resultado sigue pareciendo aleatorio; simplemente, no es uniforme.
Dos gráficos de barras que comparan cuántas veces sale cada carácter de un conjunto de 62. Con un byte aleatorio módulo 62, los ocho primeros caracteres, de la a a la h, salen un 25 % más que el resto, porque 256 entre 62 deja un resto de 8. Con muestreo por rechazo, todos los caracteres salen igual de a menudo. Un conjunto hexadecimal de 16 caracteres no tiene sesgo, porque 16 divide a 256 exactamente.
Cómo lo corrige el muestreo por rechazo
En lugar de devolver los valores sobrantes a los primeros caracteres, se descartan y se saca un byte nuevo.
Descartar valores parece un desperdicio, pero la máscara tiene el tamaño justo para que nunca se rechace más de la mitad. El coste no se nota, y el generador de cadenas aleatorias acaba con una distribución exactamente uniforme.
Por qué importa en valores sensibles
En datos de prueba, un sesgo del 25 % no hace daño. En un token o una clave le da ventaja a un atacante: puede ordenar sus intentos de más a menos probable en lugar de probar al azar.
Como todas las herramientas de este sitio usan el mismo motor, la corrección vale igual para unos datos de usar y tirar que para algo que protege un acceso real.
Elegir un conjunto de caracteres
| Opción | Caracteres | Tamaño | Úsala para |
|---|---|---|---|
| Alfanumérico | A-Z a-z 0-9 | 62 | Identificadores de uso general |
| Letras | A-Z a-z | 52 | Sistemas que no aceptan dígitos |
| Números | 0-9 | 10 | Códigos y referencias numéricas |
| Hex | 0-9 a-f | 16 | Hashes, colores y valores alineados con bytes |
| Apto para URL | A-Z a-z 0-9 - _ | 64 | URL y nombres de archivo, sin escapar nada |
Alfanumérico: la opción segura
62 caracteres, sin signos de puntuación que haya que escapar o que un sistema posterior estropee o rechace. Es el punto de partida del generador de cadenas aleatorias y la respuesta correcta si dudas.
Hexadecimal
El hexadecimal encaja limpiamente con los bytes: dos caracteres por byte, así que 32 caracteres son exactamente 16 bytes. Por eso es la elección natural cuando un valor tiene que coincidir con una longitud en bits concreta.
Apto para URL
Añadir - y _ al conjunto alfanumérico da 64 caracteres que pasan por una URL, un nombre de archivo o un argumento de la terminal sin necesidad de escaparlos.
Conjuntos propios y exclusiones
Si escribes tus propios caracteres, las casillas dejan de contar. Los repetidos se eliminan primero, así que aab se comporta igual que ab y ningún carácter pesa el doble.
El campo de exclusión funciona al revés: quita caracteres del conjunto activo. Dale al generador de cadenas aleatorias il1Lo0O cuando una persona vaya a leer el valor en voz alta o a copiarlo a mano.
Las casillas de letras usan las 26 del alfabeto inglés, sin la ñ ni vocales con tilde. No es un descuido: estas cadenas acaban en URL, nombres de archivo y claves de bases de datos, donde la ñ tiene que codificarse y algunos sistemas no la aceptan. Si la necesitas, escríbela en tu conjunto propio.
Cómo usar este generador de cadenas aleatorias
Fija la longitud
El control deslizante va de 1 a 1024 caracteres y empieza en 32. La lectura de entropía se actualiza mientras lo mueves y muestra tanto los bits como el tamaño del conjunto activo.
Elige los caracteres
Usa las opciones predefinidas para los casos habituales, o las cuatro casillas para afinar. Lo que escribas en el campo de conjunto propio tiene prioridad, y las casillas se desactivan para dejarlo claro.
Solo caracteres únicos
Si lo activas, ningún carácter se repite. Como eso solo es posible mientras la longitud no supere el tamaño del alfabeto, el generador de cadenas aleatorias limita la longitud por ti y te dice el máximo.
Generar en lote
Sube la cantidad hasta 100. La lista se copia con un clic o se descarga como archivo de texto, la forma más rápida de llenar una tabla de pruebas con valores de aspecto realista.
Para qué sirven las cadenas aleatorias
Datos de prueba
Llenar una base de datos de pruebas con valores que claramente no son reales, pero que varían como los de producción. Con este generador de cadenas aleatorias es un solo paso: genera en lote y descarga la lista.
Identificadores y códigos cortos
Referencias de pedido, códigos de invitación y claves internas en las que controlas los dos extremos y quieres una longitud concreta. Para códigos agrupados y con formato, el generador de códigos aleatorios les da forma por ti.
Tokens y secretos
Un valor largo y apto para URL, sacado de un generador de cadenas aleatorias, sirve como token de sesión o como secreto para firmar webhooks. Para lo que tiene un formato convencional, usa mejor el generador de claves secretas (en inglés) o el generador de claves de API (en inglés).
Cuándo usar una herramienta específica
Usa el generador de contraseñas cuando una persona vaya a guardar el valor en un gestor de contraseñas, y el generador de UUID (en inglés) cuando otro sistema tenga que reconocer el formato.
Recurre a este generador de cadenas aleatorias cuando no se aplique ninguna de esas convenciones y la forma dependa por completo de ti.
Preguntas frecuentes
¿Este generador de cadenas aleatorias es gratis?
Sí, sin cuenta y sin límite de cadenas. No hay versión de pago ni nada en lo que registrarse.
¿Las cadenas se generan en un servidor?
No. Se crean en tu navegador con la API Web Crypto y nunca se envían. Puedes comprobarlo abriendo el panel de red del navegador mientras generas, o desconectándote de internet y probando otra vez.
¿Puedo usarlas como contraseñas o claves de API?
El azar es criptográficamente seguro, así que técnicamente sí. Pero una herramienta específica te da mejores valores de partida: el generador de contraseñas garantiza que haya caracteres de cada tipo, y el generador de claves de API añade los prefijos y codificaciones que suelen necesitar esas claves.
¿Qué longitud debe tener una cadena aleatoria?
Depende del conjunto de caracteres. 32 caracteres alfanuméricos aportan unos 191 bits, y 32 hexadecimales, exactamente 128. Para cualquier valor sensible, 128 bits es el listón habitual.
¿Qué hace «Sin caracteres repetidos»?
Garantiza que cada carácter aparezca como mucho una vez. La longitud queda limitada al tamaño de tu conjunto, porque no se pueden sacar 20 caracteres únicos de un alfabeto de 16. Este generador de cadenas aleatorias ajusta la longitud máxima por ti al activarlo.
¿Puedo usar mi propio conjunto de caracteres?
Sí. Escribe los caracteres en el campo de conjunto propio y solo se usarán esos, sin tener en cuenta las casillas. Los repetidos se eliminan para que todos conserven la misma probabilidad. Puedes incluir la ñ o vocales con tilde, pero en una URL habrá que codificarlas.
¿El resultado es realmente uniforme?
Sí. Los caracteres se eligen con muestreo por rechazo en lugar de una operación de módulo. Tomar un byte aleatorio módulo 62 haría que los ocho primeros caracteres salieran un 25 % más que el resto, porque 256 no se divide exactamente entre 62.
¿En qué se diferencia de un UUID?
Un UUID tiene una estructura fija de 128 bits y un formato estándar, así que otros sistemas lo reconocen y saben leerlo. Una cadena aleatoria tiene la longitud y el alfabeto que elijas: es flexible, pero no dice por sí misma qué es.
Más generadores gratuitos
Todas las herramientas de este sitio funcionan en tu navegador, sin cuenta y sin límites. Las de claves y secretos y la de UUID, de momento, solo están en inglés.
Herramientas de contraseñas
- Generador de frases de contraseñaPalabras en español al azar, fáciles de recordar.
- Comprobador de contraseñasComprueba una contraseña sin enviarla a ningún sitio.
- Generador de contraseñas memorablesPalabras cortas en español que caben en un formulario.
- Generador de contraseñas pronunciablesSílabas al azar que puedes dictar por teléfono.
Generadores aleatorios
Claves y secretos
- API Key Generator (en inglés)Prefixed keys in common formats.
- Secret Key Generator (en inglés)128 to 512-bit secrets in hex or Base64.
- JWT Secret Generator (en inglés)HS256, HS384 and HS512 signing secrets.
- Salt Generator (en inglés)Random salts for password hashing.
- Hash Generator (en inglés)SHA-256, SHA-384 and SHA-512 in-browser.
Metodología
Actualizado el
Cómo se calcula la entropía
entropía = longitud × log₂(tamaño del conjunto)
El tamaño del conjunto es el que se usa de verdad, después de las exclusiones y de eliminar repetidos, no el máximo teórico. Si no se permiten caracteres repetidos, la fórmula cambia, porque cada carácter sale de un conjunto que se va reduciendo.
sin repetidos: log₂(n) + log₂(n−1) + … + log₂(n−longitud+1)
Cómo se eligen los caracteres
En este generador de cadenas aleatorias, cada carácter sale de crypto.getRandomValues() mediante muestreo por rechazo. La máscara se ajusta a la menor potencia de dos que cubre el alfabeto, y cualquier valor que caiga fuera se descarta y se vuelve a sacar: el rechazo nunca pasa del 50 % y la distribución es exactamente uniforme.
La alternativa ingenua, randomByte % tamaño, favorece al principio del alfabeto hasta un 25 % con un conjunto de 62 caracteres. La figura de arriba muestra la diferencia.
Los colores de la tabla de entropía
Las casillas por debajo de 64 bits van en rojo, las de 64 a menos de 128 en ámbar y las de 128 o más en verde azulado. 64 bits es donde empieza el nivel «Aceptable» del medidor de este sitio, y 128 es el listón habitual para valores sensibles.