Skip to content

Generador de Códigos TOTP / 2FA

Genera un código TOTP/2FA desde un secreto Base32: 100 % en tu navegador, tu secreto nunca sale del dispositivo. Configuración con QR + verificación de códigos.

Sin rastreo Se ejecuta en el navegador Gratis
Calculado localmente en tu navegador: tu secreto nunca sale de tu dispositivo.
Opciones avanzadas
Código actual
------
Siguiente código: ------
Sigue el comportamiento de RFC 6238 / RFC 4226 con la salida contrastada con los vectores de prueba publicados y una app autenticadora independiente — Equipo de Seguridad de Go Tools · Jun 12, 2026

¿Qué Es un Generador de Códigos TOTP / 2FA?

Un generador de TOTP convierte un secreto compartido en el código rotativo de un solo uso que impulsa la autenticación de dos factores. TOTP —contraseña de un solo uso basada en tiempo, definida en RFC 6238— toma un secreto Base32 y la hora actual, divide el tiempo en pasos fijos (30 segundos por defecto) y ejecuta un HMAC sobre el contador de pasos para derivar un código numérico corto. Como tanto tu app autenticadora como el servidor tienen el mismo secreto y leen el mismo reloj, calculan el código idéntico sin intercambiarlo nunca por la red. Ese es todo el sentido de la 2FA: aunque tu contraseña se filtre, un atacante todavía necesita el código que solo tu secreto puede producir en este momento.

"The TOTP algorithm is a time-based variant of the HOTP algorithm... TOTP = HOTP(K, T), where T is an integer representing the number of time steps between the initial counter time T0 and the current Unix time." — RFC 6238, Section 4

Esta herramienta hace tres trabajos en una sola página. Genera un código en vivo a partir de cualquier secreto Base32 con una cuenta atrás y una vista previa del siguiente código; configura un secreto totalmente nuevo, creando la URI otpauth:// y el código QR que escaneas en una app autenticadora; y verifica un código contra un secreto con una tolerancia de ±1 paso de tiempo, igual que los servidores reales aceptan un código que acaba de rotar. Todo se ejecuta a través de la API nativa Web Crypto del navegador, con cero dependencias y cero llamadas de red.

Los desarrolladores recurren a un generador de TOTP constantemente: para reproducir el código exacto que muestra la app de un usuario mientras depuran un inicio de sesión 2FA, para crear un secreto y un QR para una cuenta nueva, para confirmar que una ventana de verificación en el servidor coincide con lo que experimentan los usuarios, o para construir fixtures deterministas para pruebas de extremo a extremo de un flujo de dos factores. Como el secreto es una clave de larga vida —cualquiera que la tenga puede generar todos los códigos futuros—, debe protegerse como una contraseña. Combina esta herramienta con nuestro generador de contraseñas aleatorias para las contraseñas fuertes y los códigos de recuperación que acompañan a la 2FA, y con el generador de códigos QR cuando necesites una imagen de registro independiente. Para firmar los JSON Web Tokens que a menudo viajan sobre una sesión autenticada, consulta el codificador JWT.

// Generate a TOTP code in the browser with the Web Crypto API
// (SHA-1, 6 digits, 30s period — RFC 6238 defaults)
async function generateTotp(base32Secret, time = Date.now()) {
  // Decode the Base32 secret to raw bytes (A-Z, 2-7)
  const alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
  let bits = '';
  for (const c of base32Secret.replace(/=+$/, '').toUpperCase())
    bits += alpha.indexOf(c).toString(2).padStart(5, '0');
  const bytes = new Uint8Array(
    bits.match(/.{8}/g).map((b) => parseInt(b, 2)));

  // Counter = number of 30s steps since the Unix epoch (8-byte big-endian)
  const counter = Math.floor(time / 1000 / 30);
  const msg = new Uint8Array(8);
  let c = counter;
  for (let i = 7; i >= 0; i--) { msg[i] = c & 0xff; c = Math.floor(c / 256); }

  const key = await crypto.subtle.importKey(
    'raw', bytes, { name: 'HMAC', hash: 'SHA-1' }, false, ['sign']);
  const hmac = new Uint8Array(await crypto.subtle.sign('HMAC', key, msg));

  // Dynamic truncation (RFC 4226) -> 6-digit code
  const off = hmac[hmac.length - 1] & 0x0f;
  const bin = ((hmac[off] & 0x7f) << 24) | (hmac[off + 1] << 16) |
              (hmac[off + 2] << 8) | hmac[off + 3];
  return (bin % 1_000_000).toString().padStart(6, '0');
}

const code = await generateTotp('JBSWY3DPEHPK3PXP');
// -> a 6-digit code that rotates every 30 seconds

Características Principales

Código en Vivo con Cuenta Atrás

Pega un secreto Base32 y el código TOTP actual aparece al instante con un anillo de cuenta atrás de 30 segundos y una vista previa del siguiente código: sin botón Generar, sin esperas.

Configuración de Secreto y QR

Genera un secreto Base32 aleatorio y obtén la URI otpauth:// y un código QR para escanear directamente en Google Authenticator, Authy o 1Password.

Verificador de Códigos Integrado

Comprueba un código contra un secreto con la misma tolerancia de ±1 paso de tiempo que usan los servidores reales, para que un código que acaba de rotar siga validándose.

Algoritmo y Dígitos Configurables

Cambia entre SHA-1, SHA-256 y SHA-512, elige 6 u 8 dígitos y fija un periodo de 30 s o 60 s para cumplir los requisitos de cualquier proveedor.

El Secreto Nunca Sale de Tu Navegador

Cada código se calcula localmente mediante la API nativa Web Crypto. Nada se sube, registra ni almacena, de forma verificable, incluso sin conexión.

Cero Dependencias

Construido solo sobre la API Web Crypto del navegador: sin bibliotecas de terceros, sin telemetría y sin llamadas de red de ningún tipo.

Ejemplos del Generador de TOTP

TOTP Estándar de 6 Dígitos (SHA-1, 30 s)

secret: JBSWY3DPEHPK3PXP
algorithm: SHA-1
digits: 6
period: 30s
Code: 282760  ·  expires in 30s

El secreto de prueba canónico de RFC 6238 con la configuración por defecto que usa toda app convencional: SHA-1, 6 dígitos y un periodo de 30 segundos. El código se basa en el tiempo, así que el valor exacto depende de la hora actual; la herramienta muestra una cuenta atrás en vivo y el siguiente código.

TOTP Empresarial de 8 Dígitos (SHA-256)

secret: JBSWY3DPEHPK3PXP
algorithm: SHA-256
digits: 8
period: 30s
Code: 31094217  ·  expires in 30s

Algunos sistemas empresariales y de alta seguridad emiten códigos de 8 dígitos firmados con SHA-256 en lugar del SHA-1 por defecto. Haz coincidir el algoritmo, el número de dígitos y el periodo exactamente con lo que espera tu servidor, o el código generado no se validará.

URI de Configuración otpauth:// para Apps Autenticadoras

issuer: Acme
account: alice@example.com
secret: JBSWY3DPEHPK3PXP
otpauth://totp/Acme:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Acme&algorithm=SHA1&digits=6&period=30

La herramienta crea una URI otpauth:// estándar y la muestra como código QR. Escanéala con Google Authenticator, Authy o 1Password —o pega la URI directamente— para registrar el secreto en tu dispositivo.

Cómo Usar el Generador de TOTP

  1. 1

    Pega un Secreto Base32

    En la pestaña Generar, pega tu secreto Base32 (por ejemplo JBSWY3DPEHPK3PXP). El código TOTP actual aparece al instante con una cuenta atrás de 30 segundos, sin botón Generar.

  2. 2

    Ajusta las Opciones Avanzadas (opcional)

    Abre las opciones avanzadas para cambiar el algoritmo (SHA-1/256/512), el número de dígitos (6 u 8) o el periodo (30 o 60 s) para que coincida con lo que emitió tu proveedor.

  3. 3

    Configura o Verifica

    Usa la pestaña Configurar para generar un secreto y un QR para una app autenticadora, o la pestaña Verificar para comprobar un código contra un secreto con una tolerancia de ±1 paso de tiempo.

Errores Comunes

Algoritmo o Dígitos Desajustados

Un secreto emitido para SHA-256 o 8 dígitos produce un código completamente distinto bajo los valores por defecto de SHA-1 / 6 dígitos. Haz coincidir los parámetros del proveedor exactamente.

✗ Incorrecto
secret + SHA-1/6 digits  // but server expects SHA-256/8
✓ Correcto
algorithm: SHA-256, digits: 8  // match the otpauth:// URI

Desfase del Reloj

Si el reloj del dispositivo se desvía más de un paso de tiempo, el código no se validará. Sincroniza el reloj del sistema antes de comparar códigos.

✗ Incorrecto
system clock 90s fast  // code is two steps ahead
✓ Correcto
enable NTP / automatic time  // code aligns with server

Secreto Base32 Inválido

Base32 usa solo A–Z y 2–7. Los espacios de una clave impresa están bien, pero un 0, 1 u 8 no es Base32 válido y no se podrá decodificar.

✗ Incorrecto
secret: "JBSW 0NE8"  // contains 0 and 8
✓ Correcto
secret: "JBSWY3DPEHPK3PXP"  // valid Base32

Casos de Uso Comunes

Depurar un Flujo de Inicio de Sesión 2FA
Reproduce el código exacto que muestra la app autenticadora de un usuario para rastrear por qué se rechaza un inicio de sesión de dos factores.
Registrar una Cuenta Nueva
Genera un secreto Base32 y un código QR nuevos, y luego escanéalos en Google Authenticator, Authy o 1Password para configurar la 2FA.
Validar la Ventana de Tu Servidor
Verifica códigos contra un secreto para confirmar que tu backend acepta un código que acaba de rotar y rechaza uno caducado.
Construir Fixtures de Pruebas de Extremo a Extremo
Calcula códigos TOTP deterministas a partir de un secreto conocido para impulsar pruebas automatizadas de un flujo de autenticación de dos factores.
Coincidir con la Configuración Empresarial
Reproduce códigos de 8 dígitos o SHA-256 cuando un proveedor se aparta de los valores por defecto de SHA-1 / 6 dígitos, para depurar un desajuste.
Recuperar el Acceso Rápidamente
Genera el código actual a partir de un secreto respaldado cuando tu teléfono no esté disponible, usando una copia desechable del secreto.

Detalles Técnicos

Conforme a RFC 6238 / RFC 4226
Implementa TOTP según RFC 6238 sobre el algoritmo de truncamiento dinámico de HOTP de RFC 4226, con SHA-1, SHA-256 y SHA-512 seleccionables.
HMAC Nativo de Web Crypto
Los códigos se derivan mediante HMAC de crypto.subtle sobre el contador de pasos de tiempo big-endian. La decodificación Base32 y el truncamiento se ejecutan enteramente en el navegador.
URIs otpauth:// Estándar, Cero Dependencias
Las URIs de configuración siguen el Key Uri Format (otpauth://totp) con parámetros de emisor, algoritmo, dígitos y periodo. Sin bibliotecas externas, sin llamadas de red.

Buenas Prácticas

Trata el Secreto Como una Contraseña
Cualquiera con el secreto Base32 puede generar todos los códigos futuros. Guárdalo en un gestor de secretos, nunca en el control de versiones, y prefiere secretos de prueba aquí.
Mantén los Relojes Sincronizados
TOTP depende de una hora precisa. Activa la sincronización de hora por red en servidores y dispositivos para que los códigos coincidan dentro de la ventana de verificación.
Cíñete a los Valores por Defecto Salvo que se Requiera
SHA-1, 6 dígitos y un periodo de 30 segundos maximizan la compatibilidad con las apps. Cambia a 8 dígitos o SHA-256/512 solo cuando tu proveedor lo exija.

Preguntas Frecuentes del Generador TOTP / 2FA

¿Es seguro usar un generador de TOTP / 2FA online?
Con este sí, y la razón es que nada sale jamás de tu navegador. El secreto Base32 que escribes, la URI otpauth:// y el código generado se calculan todos localmente con la API nativa Web Crypto. No hay peticiones de red, ni registros, ni almacenamiento, ni analíticas ligadas a tu entrada; puedes comprobarlo desconectándote de internet y viendo cómo la herramienta sigue funcionando. Eso es lo opuesto a un generador dudoso que envía tu secreto por POST a un servidor, donde el operador podría generar tus códigos para siempre. Un secreto TOTP es una clave compartida de larga vida, así que el hábito más seguro sigue siendo preferir secretos desechables o de prueba cuando solo necesitas experimentar.
¿Qué es TOTP y qué es un secreto Base32?
TOTP (contraseña de un solo uso basada en tiempo, definida en RFC 6238) es el algoritmo detrás de los códigos rotativos de 6 dígitos de las apps autenticadoras. Combina un secreto compartido con la hora actual, dividida en pasos fijos (normalmente 30 segundos), mediante un HMAC para producir un código corto que tanto tu dispositivo como el servidor pueden calcular de forma independiente. El secreto es la clave compartida, y casi siempre se escribe en Base32 —letras mayúsculas A–Z y dígitos 2–7— porque ese alfabeto no distingue mayúsculas de minúsculas y es fácil de teclear o codificar en un código QR. La cadena JBSWY3DPEHPK3PXP es el conocido secreto de prueba del RFC.
¿Por qué el código generado es distinto al de la app autenticadora de mi teléfono?
Cuatro cosas deben coincidir para que dos códigos TOTP concuerden. Primero, el reloj: TOTP depende de la hora actual, así que si el reloj de tu ordenador o teléfono se desvía más de un paso, los códigos divergen; sincroniza el reloj de tu sistema e inténtalo de nuevo. Segundo, el algoritmo: esta herramienta usa SHA-1 por defecto (lo que usan la mayoría de las apps), pero si tu secreto se emitió para SHA-256 o SHA-512 debes seleccionarlo aquí también. Tercero, los dígitos y el periodo: 6 frente a 8 dígitos, o una ventana de 30 s frente a 60 s, producen códigos totalmente distintos. Cuarto, el propio secreto: un solo carácter Base32 mal tecleado cambia todos los códigos. Alinea las cuatro cosas y los códigos coincidirán.
¿Cuál es la diferencia entre TOTP y HOTP?
Ambos provienen de la misma familia de contraseñas de un solo uso basadas en HMAC, pero difieren en lo que impulsa el código. HOTP (RFC 4226) está basado en un contador: cada código se vincula a un contador que se incrementa, por lo que un código sigue siendo válido hasta que se usa y el contador avanza. TOTP (RFC 6238) está basado en el tiempo: reemplaza el contador por la hora actual dividida en pasos fijos, de modo que los códigos rotan automáticamente cada 30 segundos. TOTP es en realidad solo HOTP con el contador fijado al número de pasos de tiempo desde la época Unix. Esta herramienta genera TOTP, que es lo que usan por defecto Google Authenticator, Authy y 1Password.
¿Puedo usar códigos de 8 dígitos o SHA-256 / SHA-512?
Sí. Abre las opciones avanzadas para cambiar el algoritmo a SHA-256 o SHA-512, fijar los dígitos en 8 o cambiar el periodo a 60 segundos. Estos controles existen porque algunos sistemas empresariales y bancarios requieren códigos más largos o hashes más fuertes. Dicho esto, la inmensa mayoría de los servicios —y toda app autenticadora de consumo convencional— usa los valores por defecto de SHA-1, 6 dígitos y un periodo de 30 segundos, así que déjalos tal cual a menos que las instrucciones de configuración de tu proveedor digan lo contrario. Elijas lo que elijas, la URI otpauth:// que genera la herramienta registra esos parámetros para que tu app registre el secreto correctamente.
¿Cómo añado este secreto a Google Authenticator, Authy o 1Password?
Cambia a la pestaña Configurar para generar (o pegar) un secreto y luego escanea el código QR o copia la URI otpauth://. En Google Authenticator o Authy, toca el botón de añadir y elige Escanear un código QR para apuntar tu cámara al QR en pantalla, o elige Introducir una clave de configuración y pega el secreto Base32 con el nombre de cuenta y el algoritmo correspondientes. En 1Password, edita un elemento de inicio de sesión, añade un campo Contraseña de un solo uso y pega la URI otpauth:// directamente. ¿Necesitas una imagen QR independiente para documentación? Usa nuestro generador de códigos QR, y para los secretos aleatorios y códigos de recuperación que lo acompañan, el generador de contraseñas aleatorias.

Herramientas relacionadas

Ver todas las herramientas →

Generador y verificador de hash bcrypt

Herramientas de Seguridad

Genera y verifica hashes bcrypt de contraseñas online — coste ajustable, prefijos $2b$/$2a$/$2y$. 100 % en tu navegador; tu contraseña nunca se sube.

Decodificador JWT

Herramientas de Seguridad

Decodifica tokens JWT online con nuestro decodificador JWT gratis. Inspecciona encabezado, carga útil, firma, expiración y reclamaciones al instante. 100% navegador — tu token nunca sale del dispositivo. Sin registro ni rastreo.

Codificador y Generador JWT

Herramientas de Seguridad

Generador y codificador JWT gratis online. Construye el encabezado y la carga útil, firma con HS256, RS256 o ES256 al instante. 100% en el navegador — tu secreto y tu clave nunca salen de tu dispositivo.

Generador de secreto JWT — HS256/384/512

Herramientas de Seguridad

Genera un secreto JWT fuerte y conforme a la RFC para HS256/384/512 — 100 % en tu navegador, nunca enviado a un servidor. base64url, base64 o hex para .env.

Generador de Hash MD5 Online y Verificador de Checksum

Herramientas de Seguridad

Genera hashes MD5, SHA-256, SHA-1 y SHA-512 gratis — 100% en tu navegador, sin registro. Hashea texto o archivos, verifica checksums y compara hashes con un clic. Tus datos permanecen privados.

Generador de Contraseñas Aleatorias y Seguras

Herramientas de Seguridad

Genera contraseñas seguras al instante — gratis, sin registro, 100% en tu navegador. Personaliza la longitud y los tipos de caracteres, genera hasta 50 contraseñas. Medidor de fortaleza con análisis de entropía.