Generadores universales, sin país

Lo que no depende de una legislación concreta: cuentas IBAN con control módulo 97, pasaportes con zona de lectura mecánica e identificadores técnicos.

✓ 7 generadores 🔒 Todo en tu navegador Lotes de 1 a 100 · CSV y JSON

Banca y documentos de viaje

IBAN con control módulo 97 y pasaportes con zona de lectura mecánica.

Identificadores técnicos

Lo que genera tu propio sistema, no un registro público.

Contacto

Correos con el dominio que necesites.

100 % privado. No hay servidor: los datos se generan en tu navegador y no se envían ni se guardan en ninguna parte.

Identificadores que valen en cualquier sitio

Estos generadores no dependen de la legislación de ningún país: un UUID es un UUID en Lima y en Milán, y el control de un IBAN se calcula igual para las once nacionalidades que incluimos.

  • UUID v4 con crypto.getRandomValues, no con Math.random, y v1 con marca de tiempo real, útil para probar ordenaciones.
  • JWT con el payload que escribas, firma correcta o deliberadamente rota, y fechas iat y exp automáticas. La clave nunca sale de tu navegador.
  • IBAN de once países con el control ISO 7064 módulo 97 y la longitud exacta de cada uno, verificado con el ejemplo canónico de la norma.
  • Pasaporte con MRZ: las dos líneas TD3 de 44 caracteres con sus cuatro dígitos de control, para probar lectores de documentos.
  • MAC con bit local o de fabricante, e IMEI con verificador de Luhn.
  • Correos con el dominio que quieras, o con dominios de prueba variados.

El IBAN es el caso más rentable de probar

Cada país tiene una longitud distinta —16 caracteres en Bélgica, 29 en Brasil— y muchas validaciones asumen la del país propio. Genera IBAN de varios países seguidos y comprueba que tu formulario los acepta todos: es un fallo muy habitual en aplicaciones que crecen a más mercados.

La longitud del IBAN, país por país

Aquí está el fallo que más se repite: asumir la longitud del país propio. Un formulario español que fija 24 caracteres rechaza a cualquier cliente belga, cuyo IBAN tiene 16. Estas son las once nacionalidades que genera la herramienta, con su longitud exacta:

PaísCódigoCaracteresEstructura del número de cuenta
BélgicaBE1612 dígitos
Países BajosNL184 letras de banco + 10 dígitos
AustriaAT2016 dígitos
SuizaCH215 dígitos + 12 alfanuméricos
AlemaniaDE2218 dígitos
Reino UnidoGB224 letras + 14 dígitos
EspañaES2420 dígitos
PortugalPT2521 dígitos
FranciaFR2710 dígitos + 11 alfanuméricos + 2 dígitos
ItaliaIT271 letra de control + 22 dígitos
BrasilBR2923 dígitos + 1 letra + 1 alfanumérico

Observa que varios países admiten letras dentro del número de cuenta. Si tu campo solo acepta dígitos tras el código de país, has excluido a Reino Unido, Países Bajos, Francia, Suiza, Italia y Brasil de golpe.

Validar cualquier IBAN con siete líneas

La norma ISO 7064 MOD 97-10 es elegante: se mueven los cuatro primeros caracteres al final, cada letra se convierte en dos dígitos (A = 10, Z = 35) y el número resultante tiene que dar resto 1 al dividirlo entre 97. Vale para los más de setenta países del registro, sin tabla de longitudes:

function ibanValido(iban) {
  const s = iban.replace(/\s+/g, "").toUpperCase();
  if (!/^[A-Z]{2}\d{2}[A-Z0-9]{10,30}$/.test(s)) return false;
  const movido = s.slice(4) + s.slice(0, 4);
  let resto = 0;
  for (const ch of movido) {
    const v = /\d/.test(ch) ? ch : String(ch.charCodeAt(0) - 55);
    for (const d of v) resto = (resto * 10 + Number(d)) % 97;
  }
  return resto === 1;
}

El truco del resto acumulado evita trabajar con números de treinta dígitos, que en JavaScript perderían precisión. Compruébalo con GB82WEST12345698765432, el ejemplo canónico de la norma.

La zona MRZ de un pasaporte, campo por campo

Las dos líneas de 44 caracteres del formato TD3 de la OACI son lo que lee un escáner de pasaportes. La segunda línea es la que lleva los datos comprobables:

PosiciónCampoLongitud
1–9Número de pasaporte9
10Dígito de control del número1
11–13Nacionalidad (código de 3 letras)3
14–19Fecha de nacimiento (AAMMDD)6
20Dígito de control de la fecha1
21Sexo (M, F o <)1
22–27Fecha de caducidad (AAMMDD)6
28Dígito de control de la caducidad1
29–42Número personal u datos opcionales14
43Dígito de control del número personal1
44Dígito de control compuesto1

Los cinco dígitos de control usan los pesos 7-3-1 repetidos, donde el relleno < vale cero. El compuesto de la posición 44 se calcula sobre los caracteres 1–10, 14–20 y 22–43 juntos: es el que detecta si alguien manipuló un campo suelto. La herramienta permite generar la MRZ con ese dígito roto a propósito, que es la prueba negativa que necesita cualquier lector de documentos.

UUID: v4 no es lo mismo que v1

El v4 es aleatorio y no dice nada de sí mismo: es el que quieres para identificadores públicos, porque no filtra ni cuándo se creó ni en qué máquina. El v1 lleva la marca de tiempo y la dirección MAC del equipo, así que ordena cronológicamente —útil para claves de base de datos— pero revela información. Genera de los dos tipos si tu sistema los distingue: el carácter de la posición 15 vale 1 o 4 según la versión, y hay validadores que lo comprueban.

Preguntas frecuentes

Sobre estos generadores

¿Los IBAN son cuentas reales?

No. El control módulo 97 es correcto, así que cualquier validador los acepta, pero no corresponden a ninguna cuenta abierta en ningún banco.

¿La clave de mi JWT se envía a algún sitio?

No. La firma se calcula en tu navegador con la API de criptografía del propio navegador. No hay servidor al que enviarla.

¿Los UUID son criptográficamente aleatorios?

Sí, usan crypto.getRandomValues. La probabilidad de colisión es la misma que en cualquier implementación seria de la versión 4.