Skip to content

Gerador de Códigos TOTP / 2FA

Gere um código TOTP/2FA a partir de um segredo Base32 — 100% no seu navegador, o segredo nunca sai do dispositivo. Configuração por QR + verificação de códigos.

Sem rastreamento Roda no navegador Grátis
Calculado localmente no seu navegador — o seu segredo nunca sai do seu dispositivo.
Opções avançadas
Código atual
------
Próximo código: ------
Segue o comportamento do RFC 6238 / RFC 4226 com a saída conferida contra os vetores de teste publicados e um app autenticador independente — Equipe de Segurança da Go Tools · Jun 12, 2026

O Que É um Gerador de Códigos TOTP / 2FA?

Um gerador de TOTP transforma um segredo compartilhado no código rotativo de uso único que impulsiona a autenticação de dois fatores. O TOTP — senha de uso único baseada em tempo, definida no RFC 6238 — pega um segredo Base32 e a hora atual, divide o tempo em passos fixos (30 segundos por padrão) e roda um HMAC sobre o contador de passos para derivar um código numérico curto. Como tanto o seu app autenticador quanto o servidor têm o mesmo segredo e leem o mesmo relógio, eles calculam o código idêntico sem nunca trocá-lo pela rede. Esse é todo o propósito da 2FA: mesmo que a sua senha vaze, um atacante ainda precisa do código que só o seu segredo pode produzir neste 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 ferramenta faz três tarefas em uma única página. Ela gera um código ao vivo a partir de qualquer segredo Base32 com uma contagem regressiva e uma prévia do próximo código; ela configura um segredo totalmente novo, montando a URI otpauth:// e o código QR que você escaneia em um app autenticador; e ela verifica um código contra um segredo com tolerância de ±1 passo de tempo, igual a como servidores reais aceitam um código que acabou de rotacionar. Tudo isso roda pela API nativa Web Crypto do navegador, com zero dependências e zero chamadas de rede.

Desenvolvedores recorrem a um gerador de TOTP constantemente: para reproduzir o código exato que o app de um usuário mostra enquanto depuram um login 2FA, para montar um segredo e um QR para uma conta nova, para confirmar que uma janela de verificação no servidor corresponde ao que os usuários vivenciam, ou para construir fixtures determinísticas para testes de ponta a ponta de um fluxo de dois fatores. Como o segredo é uma chave de longa duração — qualquer um que o tenha pode gerar todos os códigos futuros —, ele deve ser protegido como uma senha. Combine esta ferramenta com o nosso gerador de senhas aleatórias para as senhas fortes e códigos de recuperação que acompanham a 2FA, e com o gerador de códigos QR quando você precisar de uma imagem de registro independente. Para assinar os JSON Web Tokens que muitas vezes acompanham uma sessão autenticada, veja o 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

Principais Recursos

Código ao Vivo com Contagem Regressiva

Cole um segredo Base32 e o código TOTP atual aparece na hora com um anel de contagem regressiva de 30 segundos e uma prévia do próximo código — sem botão Gerar, sem espera.

Configuração de Segredo e QR

Gere um segredo Base32 aleatório e obtenha a URI otpauth:// e um código QR para escanear direto no Google Authenticator, no Authy ou no 1Password.

Verificador de Códigos Integrado

Cheque um código contra um segredo com a mesma tolerância de ±1 passo de tempo que servidores reais usam, para que um código que acabou de rotacionar ainda seja validado.

Algoritmo e Dígitos Configuráveis

Alterne entre SHA-1, SHA-256 e SHA-512, escolha 6 ou 8 dígitos e defina um período de 30s ou 60s para atender às exigências de qualquer provedor.

O Segredo Nunca Sai do Seu Navegador

Cada código é calculado localmente pela API nativa Web Crypto. Nada é enviado, registrado ou armazenado — de forma verificável, mesmo offline.

Zero Dependências

Construído apenas sobre a API Web Crypto do navegador — sem bibliotecas de terceiros, sem telemetria e sem chamadas de rede de qualquer tipo.

Exemplos do Gerador de TOTP

TOTP Padrão de 6 Dígitos (SHA-1, 30s)

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

O segredo de teste canônico do RFC 6238 com as configurações padrão que todo app convencional usa — SHA-1, 6 dígitos, um período de 30 segundos. O código é baseado em tempo, então o valor exato depende da hora atual; a ferramenta mostra uma contagem regressiva ao vivo e o próximo código.

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

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

Alguns sistemas empresariais e de alta segurança emitem códigos de 8 dígitos assinados com SHA-256 em vez do SHA-1 padrão. Faça o algoritmo, a contagem de dígitos e o período corresponderem exatamente ao que o seu servidor espera, ou o código gerado não será validado.

URI de Configuração otpauth:// para Apps Autenticadores

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

A ferramenta monta uma URI otpauth:// padrão e a exibe como código QR. Escaneie-a com o Google Authenticator, o Authy ou o 1Password — ou cole a URI diretamente — para registrar o segredo no seu dispositivo.

Como Usar o Gerador de TOTP

  1. 1

    Cole um Segredo Base32

    Na aba Gerar, cole o seu segredo Base32 (por exemplo JBSWY3DPEHPK3PXP). O código TOTP atual aparece na hora com uma contagem regressiva de 30 segundos — sem botão Gerar.

  2. 2

    Ajuste as Opções Avançadas (opcional)

    Abra as opções avançadas para mudar o algoritmo (SHA-1/256/512), a contagem de dígitos (6 ou 8) ou o período (30 ou 60s) para corresponder ao que o seu provedor emitiu.

  3. 3

    Configure ou Verifique

    Use a aba Configurar para gerar um segredo e um QR para um app autenticador, ou a aba Verificar para checar um código contra um segredo com tolerância de ±1 passo de tempo.

Erros Comuns

Algoritmo ou Dígitos Incompatíveis

Um segredo emitido para SHA-256 ou 8 dígitos produz um código completamente diferente sob os padrões de SHA-1 / 6 dígitos. Faça os parâmetros do provedor corresponderem exatamente.

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

Desvio de Relógio

Se o relógio do dispositivo estiver fora por mais de um passo de tempo, o código não será validado. Sincronize o relógio do sistema antes de comparar códigos.

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

Segredo Base32 Inválido

O Base32 usa apenas A–Z e 2–7. Espaços de uma chave impressa são aceitáveis, mas um 0, 1 ou 8 não é Base32 válido e não será decodificado.

✗ Incorreto
secret: "JBSW 0NE8"  // contains 0 and 8
✓ Correto
secret: "JBSWY3DPEHPK3PXP"  // valid Base32

Casos de Uso Comuns

Depurar um Fluxo de Login 2FA
Reproduza o código exato que o app autenticador de um usuário mostra para rastrear por que um login de dois fatores está sendo rejeitado.
Registrar uma Conta Nova
Gere um segredo Base32 e um código QR novos e então escaneie-os no Google Authenticator, no Authy ou no 1Password para configurar a 2FA.
Validar a Janela do Seu Servidor
Verifique códigos contra um segredo para confirmar que o seu backend aceita um código que acabou de rotacionar e rejeita um expirado.
Construir Fixtures de Testes de Ponta a Ponta
Calcule códigos TOTP determinísticos a partir de um segredo conhecido para impulsionar testes automatizados de um fluxo de autenticação de dois fatores.
Corresponder a Configurações Empresariais
Reproduza códigos de 8 dígitos ou SHA-256 quando um provedor se afasta dos padrões de SHA-1 / 6 dígitos, para depurar uma divergência.
Recuperar o Acesso Rapidamente
Gere o código atual a partir de um segredo guardado quando o seu celular não estiver disponível — usando uma cópia descartável do segredo.

Detalhes Técnicos

Conforme ao RFC 6238 / RFC 4226
Implementa o TOTP conforme o RFC 6238 sobre o algoritmo de truncamento dinâmico do HOTP do RFC 4226, com SHA-1, SHA-256 e SHA-512 selecionáveis.
HMAC Nativo do Web Crypto
Os códigos são derivados via HMAC do crypto.subtle sobre o contador de passos de tempo big-endian. A decodificação Base32 e o truncamento rodam inteiramente no navegador.
URIs otpauth:// Padrão, Zero Dependências
As URIs de configuração seguem o Key Uri Format (otpauth://totp) com parâmetros de emissor, algoritmo, dígitos e período. Sem bibliotecas externas, sem chamadas de rede.

Boas Práticas

Trate o Segredo Como uma Senha
Qualquer um com o segredo Base32 pode gerar todos os códigos futuros. Guarde-o em um gerenciador de segredos, nunca no controle de versão, e prefira segredos de teste aqui.
Mantenha os Relógios Sincronizados
O TOTP depende de hora precisa. Ative a sincronização de hora pela rede em servidores e dispositivos para que os códigos coincidam dentro da janela de verificação.
Fique nos Padrões a Menos que Seja Necessário
SHA-1, 6 dígitos e um período de 30 segundos maximizam a compatibilidade com os apps. Mude para 8 dígitos ou SHA-256/512 apenas quando o seu provedor exigir.

Perguntas Frequentes do Gerador TOTP / 2FA

É seguro usar um gerador de TOTP / 2FA online?
Com este, sim — e a razão é que nada nunca sai do seu navegador. O segredo Base32 que você digita, a URI otpauth:// e o código gerado são todos calculados localmente com a API nativa Web Crypto. Não há requisições de rede, nem registros, nem armazenamento, nem análises ligadas à sua entrada — você pode verificar isso desconectando-se da internet e vendo a ferramenta continuar funcionando. Isso é o oposto de um gerador duvidoso que envia o seu segredo por POST para um servidor, onde o operador poderia gerar os seus códigos para sempre. Um segredo TOTP é uma chave compartilhada de longa duração, então o hábito mais seguro continua sendo preferir segredos descartáveis ou de teste quando você só precisa experimentar.
O que é TOTP e o que é um segredo Base32?
TOTP (senha de uso único baseada em tempo, definida no RFC 6238) é o algoritmo por trás dos códigos rotativos de 6 dígitos dos apps autenticadores. Ele combina um segredo compartilhado com a hora atual, dividida em passos fixos (normalmente 30 segundos), por meio de um HMAC para produzir um código curto que tanto o seu dispositivo quanto o servidor podem calcular de forma independente. O segredo é a chave compartilhada, e quase sempre é escrito em Base32 — letras maiúsculas A–Z e dígitos 2–7 — porque esse alfabeto não diferencia maiúsculas de minúsculas e é fácil de digitar ou codificar em um código QR. A cadeia JBSWY3DPEHPK3PXP é o conhecido segredo de teste do RFC.
Por que o código gerado é diferente do app autenticador do meu celular?
Quatro coisas têm de coincidir para que dois códigos TOTP concordem. Primeiro, o relógio: o TOTP depende da hora atual, então se o relógio do seu computador ou celular estiver fora por mais de um passo, os códigos divergem — sincronize o relógio do sistema e tente de novo. Segundo, o algoritmo: esta ferramenta usa SHA-1 por padrão (o que a maioria dos apps usa), mas se o seu segredo foi emitido para SHA-256 ou SHA-512 você deve selecioná-lo aqui também. Terceiro, os dígitos e o período: 6 versus 8 dígitos, ou uma janela de 30s versus 60s, produzem códigos inteiramente diferentes. Quarto, o próprio segredo — um único caractere Base32 digitado errado muda todos os códigos. Alinhe os quatro e os códigos vão coincidir.
Qual é a diferença entre TOTP e HOTP?
Ambos vêm da mesma família de senhas de uso único baseadas em HMAC, mas diferem no que impulsiona o código. HOTP (RFC 4226) é baseado em contador: cada código é vinculado a um contador que incrementa, então um código permanece válido até ser usado e o contador avançar. TOTP (RFC 6238) é baseado em tempo: ele substitui o contador pela hora atual dividida em passos fixos, de modo que os códigos rotacionam automaticamente a cada 30 segundos. O TOTP é, na verdade, apenas o HOTP com o contador definido como o número de passos de tempo desde a época Unix. Esta ferramenta gera TOTP, que é o que o Google Authenticator, o Authy e o 1Password usam por padrão.
Posso usar códigos de 8 dígitos ou SHA-256 / SHA-512?
Sim. Abra as opções avançadas para mudar o algoritmo para SHA-256 ou SHA-512, definir os dígitos como 8 ou alterar o período para 60 segundos. Esses ajustes existem porque alguns sistemas empresariais e bancários exigem códigos mais longos ou hashes mais fortes. Dito isso, a esmagadora maioria dos serviços — e todo app autenticador de consumo convencional — usa os padrões de SHA-1, 6 dígitos e um período de 30 segundos, então deixe-os como estão a menos que as instruções de configuração do seu provedor digam o contrário. Seja o que você escolher, a URI otpauth:// que a ferramenta gera registra esses parâmetros para que o seu app registre o segredo corretamente.
Como adiciono este segredo ao Google Authenticator, ao Authy ou ao 1Password?
Mude para a aba Configurar para gerar (ou colar) um segredo e então escaneie o código QR ou copie a URI otpauth://. No Google Authenticator ou no Authy, toque no botão de adicionar e escolha Ler um código QR para apontar a câmera para o QR na tela, ou escolha Inserir uma chave de configuração e cole o segredo Base32 com o nome de conta e o algoritmo correspondentes. No 1Password, edite um item de login, adicione um campo Senha de Uso Único e cole a URI otpauth:// diretamente. Precisa de uma imagem QR independente para documentação? Use o nosso gerador de códigos QR, e para os segredos aleatórios e códigos de recuperação que o acompanham, o gerador de senhas aleatórias.

Ferramentas relacionadas

Ver todas as ferramentas →