Este generador de códigos aleatorios crea códigos de canje —cupones, vales, tarjetas regalo, números de serie— por lotes y en tu navegador. No genera código fuente, y no se envía nada a ningún sitio.
¿Qué es un generador de códigos aleatorios?
Un generador de códigos aleatorios produce un lote de códigos cortos y únicos para que alguien los canjee: un cupón en un correo, un vale en una tarjeta impresa, un número de serie en una caja. Los códigos no significan nada; se comprueban contra la lista que tú emitiste.
No es código fuente
Conviene aclararlo primero, porque la palabra tiene varios sentidos. Aquí no se escriben programas.
Si buscabas texto aleatorio para un conjunto de datos de prueba o para poblar una base de datos, la herramienta adecuada es el generador de cadenas aleatorias. Un generador de códigos aleatorios sirve para lo que un cliente teclea en la casilla de pago.
Las tres formas que tiene un código
Casi todos los códigos de canje tienen una de estas tres formas, y por eso las opciones predefinidas de este generador de códigos aleatorios son usos, no estilos.
- Agrupado:
A7K9-P2XM-4RTV, para todo lo que se lee en voz alta desde una tarjeta. - Con prefijo:
SN-8F3K-9QMT, para que el servicio de atención sepa de un vistazo de qué lote viene. - Numérico:
839204, para teclados de teléfono y terminales de punto de venta antiguos.
Para qué no sirve
No son contraseñas ni credenciales de API. Un código de canje es corto a propósito, porque lo teclea una persona, y corto es justo lo contrario de lo que necesita un secreto.
Para todo lo que consume una máquina, el generador de claves de API (en inglés) te da la longitud que ese trabajo necesita de verdad.
¿Se pueden adivinar tus códigos?
Por qué «imposible de adivinar» no es una respuesta
Casi cualquier generador de códigos aleatorios asegura que sus códigos son prácticamente imposibles de adivinar. Para un código de doce caracteres es cierto. Para uno de seis, sencillamente no lo es, y la diferencia no es una cuestión de opinión.
Un atacante no necesita adivinar un código concreto. Le vale cualquiera que funcione, así que la cifra que importa es el tamaño del espacio de códigos dividido entre cuántos códigos has emitido.
Comparación logarítmica de cuántos intentos al azar hacen falta para dar con un código válido, suponiendo que se han emitido diez mil códigos. Seis dígitos necesitan 100 intentos. Seis letras y dígitos, 218 000. Ocho caracteres legibles, 110 millones. Doce caracteres legibles, 115 billones. Los dos primeros quedan dentro de lo que cubre en un día un script que hace cien intentos por segundo; el tercero le llevaría unas dos semanas.
Cómo leer la cifra que aparece sobre las opciones
En lugar de la entropía, este generador de códigos aleatorios muestra cuántos intentos al azar harían falta para dar con un código que hayas emitido. Si aumentas la cantidad, la cifra baja; si añades caracteres, sube.
Por debajo de unos diez millones, un script que hace cien intentos por segundo encuentra un código válido en menos de un día. Ahí la cifra se vuelve roja, y es el único aviso que te da el generador de códigos aleatorios.
Por qué AHORRA25 es el peor formato de todos
Los códigos que inventa una persona no solo son débiles: son lo primero que se prueba. SpiderLabs documentó cómo los atacantes montan diccionarios con las treinta frases más habituales del comercio y los recorren.
Las casillas de canje no suelen distinguir mayúsculas de minúsculas, así que AHORRA25 y ahorra25 son un solo intento, no dos. El mismo informe cuenta que, al ver un patrón de códigos 10% OFF, bastó con probar 90% OFF, y funcionó.
Un generador de códigos aleatorios no tiene ningún patrón que ver.
Qué longitud debe tener un código
Doce caracteres del conjunto legible es el valor predeterminado porque sigue siendo holgado con cualquier tamaño de lote que se pueda generar en esta página. Diez bastan para campañas pequeñas.
Seis caracteres solo son seguros si los códigos son de un solo uso, la caja limita los intentos y hay pocos. Dos caracteres más no le cuestan nada a tu cliente y multiplican por mil el trabajo del atacante, así que deja que lo haga el generador de códigos aleatorios y no tus reglas antifraude.
Códigos que sobreviven a ser tecleados
Grupos y guiones
La gente copia los códigos por trozos, así que un generador de códigos aleatorios debería entregarlos por trozos. Cuatro caracteres por grupo es el tamaño habitual, y por eso lo usan tanto los números de tarjeta como las claves de licencia.
La especificación Base32 de Crockford lo dice sin rodeos: se pueden insertar guiones para dividir una cadena en trozos manejables, y se ignoran al decodificarla. Quita los separadores antes de buscar un código y un cliente que no los escriba lo canjeará igual.
Caracteres que se confunden
Los fallos clásicos son 0 frente a O y 1 frente a I o l. Cada uno acaba en la queja de alguien a quien el código «no le funciona», un coste que un generador de códigos aleatorios puede eliminar gratis.
El alfabeto Base32 de Crockford quita cuatro letras del conjunto habitual de diez dígitos y veintiséis mayúsculas. La I y la L, porque se leen como el uno; la O, porque se lee como el cero; y la U, para que un código al azar forme menos palabras malsonantes, aunque no las evita del todo. Quedan 32 símbolos: del 0 al 9 y A B C D E F G H J K M N P Q R S T V W X Y Z.
El conjunto legible de este generador de códigos aleatorios es exactamente ese alfabeto. Quitar cuatro símbolos cuesta alrededor de una quinta parte de un bit por carácter, algo que ninguna campaña real va a notar.
Eso sí, la U sola no basta: sin ella todavía caben palabras como CACA o PENE. Por eso este generador de códigos aleatorios descarta además cualquier código que forme una palabra de su lista —unas 130, en inglés, español y portugués— y saca otro. Con doce caracteres legibles ocurre, aproximadamente, con uno de cada 600.
El carácter de control
Si lo activas, se añade un símbolo más, calculado a partir de los anteriores. Un código con una errata no cumple esa cuenta, así que puedes rechazarlo antes de consultar tu base de datos.
Detecta cualquier carácter mal tecleado y cualquier intercambio de dos caracteres contiguos, que son los dos errores que la gente comete de verdad. Es una propiedad de la aritmética, no una estimación, y las pruebas de este sitio la comprueban caso por caso.
Lo que no hace
Un carácter de control no aporta seguridad. Cualquiera puede calcular uno válido, así que no frena a quien intenta adivinar: solo filtra los errores.
También cuesta un carácter: el símbolo de control se deriva de los demás y no es aleatorio, así que un código de doce caracteres con él activado resiste como uno de once. La cifra de arriba ya lo tiene en cuenta.
Generar un lote
Sin repetidos dentro del lote
Cada código se compara con los ya creados, así que un lote de mil contiene mil códigos distintos. Si el formato no puede producir tantos, este generador de códigos aleatorios rechaza el lote en lugar de devolverte uno más corto sin avisar.
Prefijos y sufijos
Un prefijo hace reconocible un lote: VERANO- le dice al servicio de atención a qué campaña pertenece un código sin tener que buscarlo. Es igual en todos los códigos, así que no añade nada que un atacante tenga que adivinar.
Trátalo como una etiqueta. La parte aleatoria es la razón de ser de un generador de códigos aleatorios, y es la que debe cargar con todo el peso.
Exportar, y lo que pasa después
Copiar se lleva la lista entera; descargar te da un CSV de una sola columna con la cabecera code, que es la forma que esperan los importadores de descuentos en lote.
Ahí termina el trabajo de este generador de códigos aleatorios. No emite, canjea, caduca ni controla nada, y no guarda ningún registro de lo que ha producido.
Por eso no puede evitar tus códigos anteriores
Entre un lote y otro no se guarda nada, así que el segundo se sortea desde cero y no alrededor del primero. Con un formato de doce caracteres, una coincidencia accidental es remota, pero elimina duplicados al importar si necesitas tener la certeza.
Preguntas frecuentes
¿Qué longitud debe tener un código de descuento?
La suficiente para que adivinar no tenga sentido. Doce caracteres del conjunto legible dejan un código válido a unos cien billones de intentos, incluso después de emitir diez mil. Seis caracteres es donde los scripts empiezan a encontrar códigos válidos, y la cifra de arriba te dice en qué lado de esa línea estás.
¿Para qué sirve el carácter de control?
Es un símbolo más, calculado a partir del resto del código, que permite rechazar un código mal tecleado antes de buscarlo. Detecta cualquier error de un solo carácter y cualquier intercambio de dos caracteres contiguos. Actívalo si la gente teclea los códigos a mano; déjalo apagado si solo se pegan.
¿Por qué faltan la O, la I, la L y la U?
Por el alfabeto Base32 de Crockford: la I y la L se leen como 1, la O como 0, y la U se quita para que salgan menos palabras malsonantes. Como eso no basta, el generador descarta además los códigos que forman una de unas 130 palabras malsonantes en inglés, español o portugués. Perder cuatro símbolos apenas cuesta nada.
¿Los guiones cuentan en la longitud?
No. La longitud cuenta solo el cuerpo del código, así que uno de doce caracteres agrupado de cuatro en cuatro ocupa catorce en pantalla. La especificación de Crockford trata los guiones como decoración que se ignora, y la mayoría de los sistemas de canje los eliminan, pero comprueba que el tuyo lo hace antes de imprimir.
¿Puede haber dos códigos iguales en el mismo lote?
No. Cada código se compara con los demás mientras se crea el lote, así que un lote de mil contiene mil códigos distintos. Si el formato no permite tantos códigos distintos, el lote se rechaza en lugar de repetirse sin avisar.
¿Puedo generar un lote nuevo que evite los códigos anteriores?
Aquí no. Entre lotes no se guarda nada, así que este generador de códigos aleatorios no recuerda lo que produjo hace un minuto. Con un formato de doce caracteres, una coincidencia accidental es muy improbable, pero si necesitas garantizarlo, elimina duplicados con tu lista existente al importar.
¿Puedo importarlos en Shopify, WooCommerce o un sistema de tarjetas regalo?
Sí. Descarga el CSV y se abrirá en cualquier hoja de cálculo como una sola columna con la cabecera «code», que es el nombre que esperan la mayoría de las plataformas para importar descuentos en lote; por eso no se traduce. Esta herramienta solo crea los códigos: emitirlos, canjearlos y controlarlos es trabajo de tu plataforma.
¿Genera código fuente aleatorio?
No. Aquí «código» significa código de canje: un cupón, un vale, una tarjeta regalo o un número de serie. Si lo que buscas es texto aleatorio para pruebas y no algo que teclea un cliente, la herramienta adecuada es el generador de cadenas aleatorias.
Más generadores gratuitos
Todas las herramientas de este sitio funcionan en tu navegador, sin cuenta y sin límites, igual que este generador de códigos aleatorios. 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 generan los códigos
Cada carácter sale de crypto.getRandomValues() mediante muestreo por rechazo, así que todos los símbolos del conjunto elegido son igual de probables, y Math.random() no se usa en ninguna parte de este generador de códigos aleatorios. Los códigos se van guardando en un conjunto a medida que se crean, y eso es lo que garantiza que un lote no tenga duplicados.
Cómo se calcula la cifra de intentos
intentos por acierto = conjuntocaracteres aleatorios ÷ códigos emitidos
En este generador de códigos aleatorios solo cuentan los caracteres aleatorios. Los prefijos, sufijos, separadores y el símbolo de control son fijos o derivados, así que no añaden posibilidades. El umbral de aviso es de diez millones, aproximadamente lo que alcanza en un día un script que hace cien intentos por segundo.
El símbolo de control
Es el símbolo de control opcional de Crockford: el código leído como un número en base 32, módulo 37, escrito con los cinco símbolos adicionales reservados para los valores del 32 al 36.
Como 37 es primo y no divide ninguna potencia de 32, cambiar cualquier símbolo cambia siempre el resultado, y lo mismo pasa al intercambiar dos contiguos. Las pruebas unitarias comprueban las dos cosas probando todos los casos posibles en lugar de citar el razonamiento.
Palabras malsonantes
Un código cuyas letras formen una de unas 130 palabras malsonantes, en inglés, español y portugués, se descarta y se saca otro: es la misma lista, y el mismo rechazo, que usa el generador de contraseñas pronunciables. Las palabras en español y en portugués se eligieron a mano, y cada una aparece en al menos una lista con licencia abierta.
Con doce caracteres legibles se descarta aproximadamente uno de cada 600 códigos, y los códigos solo de dígitos no se tocan. La cifra de intentos no lo tiene en cuenta, porque el espacio se reduce, como mucho, en torno a un 1 %.
Lo que no hace esta herramienta
Este generador de códigos aleatorios no guarda, emite, canjea, caduca ni controla códigos, y no puede comparar un lote nuevo con uno antiguo. Nada de lo que se genera aquí se envía, se guarda ni forma parte de ninguna estadística. Al cerrar la pestaña, desaparece.