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.
Opciones avanzadas
¿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
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
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
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.
secret + SHA-1/6 digits // but server expects SHA-256/8
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.
system clock 90s fast // code is two steps ahead
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.
secret: "JBSW 0NE8" // contains 0 and 8
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?
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?
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?
¿Cuál es la diferencia entre TOTP y HOTP?
¿Puedo usar códigos de 8 dígitos o SHA-256 / SHA-512?
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?
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.