Decodificador de Token JWT

Decodifique tokens JWT (JSON Web Token) diretamente no navegador. Visualize o header, payload e datas de expiração. Processamento 100% local, nenhum token é enviado para servidor.

Revisão técnica: Cesar Gargiulo (segurança da informação)
Valim, o mascote do ValorFinal, representando a categoria Tecnologia

Esta ferramenta apenas decodifica o JWT, não valida a assinatura.

Evite colar tokens reais de produção, tokens com dados sensíveis ou credenciais ativas. O processamento é local no navegador; nenhum dado é enviado para servidor.

Limite: 10.000 caracteres

Em resumo

O decodificador separa o token nos 3 trechos entre os pontos, converte o cabeçalho e o payload de Base64URL para JSON e mostra as datas exp, iat e nbf no horário de Brasília. A assinatura não é conferida, porque isso exige a chave de quem emitiu o token: o segredo, no HS256, ou a chave pública, no RS256. Pela RFC 7519, de maio de 2015, essas datas contam segundos desde 1º de janeiro de 1970, em UTC.

Quem grava a data em milissegundos, erro comum de quem usa Date.now() no JavaScript, produz datas absurdas. Por isso a página desconfia de qualquer valor a partir de 100.000.000.000, que em segundos já cairia no ano 5138, e não usa esse campo para dizer se o token venceu. No token de exemplo, o exp vem 3.600 segundos depois do iat, ou seja, 1 hora. O campo aceita até 10.000 caracteres, e o token não sai do navegador.

Outras ferramentas de segurança e identidade

  • Gerador de SenhaSorteie uma senha forte, ou uma frase-senha de palavras em português que dá para decorar, e descubra por que uma senha parece segura e não é. Nada é salvo nem enviado.
  • Gerador de hash SHAGere hash criptográfico SHA-1, SHA-256, SHA-384 ou SHA-512 de qualquer texto. Verifique integridade comparando com hash esperado. Usa Web Crypto API, 100% local, sem envio de dados.
  • Hash de arquivoCalcule o SHA-256 de um arquivo no próprio navegador e compare com o hash publicado pelo autor do download. Sem upload, sem cadastro, com o comando equivalente para Linux, macOS e Windows.
  • Gerador de UUIDGere UUIDs v4 localmente usando a Web Crypto API. Valide UUIDs informados e identifique a versão e variante. Processamento 100% local, nenhum UUID é enviado para servidor.
  • Teste de velocidadeMeça download, upload, ping, jitter e a latência com a rede cheia. Veja se a conexão aguenta chamada de vídeo, 4K e jogo online, e quanto do plano contratado chegou.
  • Cronômetro onlineCronômetro online com centésimos e voltas: parcial, total, a volta mais rápida e a mais lenta, cópia para planilha e CSV, tela cheia e atalhos de teclado. Mede pelo relógio interno do navegador e não atrasa com a aba em segundo plano.

Todas as ferramentas, por tarefa, estão em ferramentas de tecnologia online.

Gostou? Mostre pra todo mundo

Gere um card bonito com a marca do ValorFinal para postar nos Stories ou mandar no WhatsApp. Nada que você digitou aparece no card.

Coloque no seu site

O token é separado nos três trechos entre pontos. O cabeçalho e o payload são decodificados de Base64URL para JSON e exibidos como estão; os campos de tempo (exp, iat e nbf) são lidos como segundos, conforme o RFC 7519. A terceira parte, a assinatura, não é conferida: decodificar não é validar.

Como funciona este decodificador de JWT

Base64URL é codificação, não criptografia. Qualquer pessoa que tenha o token consegue ler o payload, inclusive quem o forjou. É por isso que a conclusão desta página é sempre sobre as DATAS declaradas no token, e nunca sobre autenticidade: para saber se o conteúdo é confiável, o seu servidor precisa recalcular a assinatura com a chave do emissor (segredo compartilhado em HS256, chave pública em RS256 e ES256).

As três claims de tempo do RFC 7519 são NumericDate, ou seja, um número de segundos desde 1970-01-01T00:00:00Z. exp é o instante a partir do qual o token deve ser recusado, nbf é o instante antes do qual ele ainda não vale, e iat registra quando foi emitido. Valor fora desse padrão (texto, número negativo ou um número grande demais para ser segundos, sinal de que o emissor usou milissegundos) vira aviso e fica de fora da conclusão, em vez de ser ignorado em silêncio.

O token não é guardado, não vai para servidor nenhum e não aparece em histórico: a leitura acontece na memória da aba. Ainda assim, prefira tokens de desenvolvimento. Para conferir codificações relacionadas, veja a calculadora Base64 e as ferramentas DevOps.

Método

JWT = base64url(header) + "." + base64url(payload) + "." + assinatura

expirado quando agora > exp · ainda não vale quando agora < nbf

agora e as claims de tempo em SEGUNDOS desde 1970-01-01T00:00:00Z

Base: RFC 7519 (JSON Web Token) e RFC 7515 (JSON Web Signature). Leitura local no navegador, sem envio do token.

JWT é criptografado? Não, só assinado

Não. O JWT comum é assinado, e a assinatura denuncia quem altera o conteúdo, mas não impede ninguém de ler. Qualquer pessoa com o token lê o cabeçalho e o payload sem chave nenhuma, e dá para conferir por quatro caminhos:

  1. O token de exemplo desta página abre sem chave. Ele tem 222 caracteres em 3 trechos, e o do meio vira um JSON com 5 campos legíveis, entre eles o sub usuario-de-exemplo e o exp 1700003600 (14/11/2023, 20:13:20, no horário de Brasília). A ferramenta não pede senha nem chave porque não precisa de nenhuma.
  2. Base64URL reescreve os bytes num alfabeto de 64 símbolos e não embaralha nada. A cada 3 bytes saem 4 caracteres, por isso os 27 caracteres de {"alg":"HS256","typ":"JWT"} viram os 36 do primeiro trecho. A conversão está na RFC 4648, não recebe chave e volta ao texto original em qualquer linguagem.
  3. O HS256 do exemplo é HMAC com SHA-256, definido na RFC 7518: um código de autenticação calculado com uma chave secreta sobre o cabeçalho e o payload. Mudar uma letra do payload invalida a assinatura, e mesmo assim o payload continua legível para quem tem o token.
  4. O JWT cifrado existe e tem outra forma. É o JWE, da RFC 7516, com 5 trechos separados por ponto: cabeçalho, chave cifrada, vetor de inicialização, texto cifrado e etiqueta de autenticação. O token comum tem 3, e esta página recusa o de 5, porque o conteúdo dele só se lê com a chave.
A RFC 7519 manda impedir que o JWT com informação sensível chegue a quem não deveria lê-la (seção 12). Na prática, nada de senha, CPF ou número de cartão no payload, e HTTPS no transporte. O guia o que é JWT e como ele funciona mostra o resto do fluxo de login.

Limitações

  • Não valida a assinatura. Um token adulterado, com a assinatura trocada ou com alg: none, é decodificado normalmente. Nada aqui prova autenticidade.
  • A conclusão de prazo usa o relógio do seu computador. Relógio desacertado muda o resultado, e servidores normalmente aceitam alguns segundos de tolerância que esta página não aplica.
  • Não confere emissor (iss), destinatário (aud), escopo nem revogação: um token dentro do prazo pode já ter sido invalidado no servidor.
  • Trata apenas JWS compacto (três partes). Token criptografado (JWE, com cinco partes) não é decodificado.

Guia completo

O que é JWT: header, payload, assinatura e segurança

Entenda o que é um JWT, as três partes (header, payload e assinatura), a diferença essencial entre decodificar e validar um token, os principais riscos de segurança e por que não colar tokens sensíveis em ferramentas online.

Coloque esta ferramenta no seu site, de graça

Tem site, blog ou loja virtual? Esta ferramenta tem uma versão para incorporar: você copia um código e cola no seu HTML. Sem cadastro, sem mensalidade e sem limite de acessos, e ela roda no navegador de quem visita o seu site.

Decodificador de JWT para sitever todas as ferramentas para site

Calculadoras relacionadas

Guias sobre este tema

ValorFinal VIP: Sem anúncios, até 500 cenários salvos e comparação de cenários lado a lado.

Ferramenta transparente, com o método explicado

Atualizado em . Fontes: RFC 7519 / IETF / MDN Web Docs.

Processamento local: esta ferramenta roda no seu navegador e nada é enviado a servidores automaticamente.

Como validamos

Referências técnicas

Links externos para o que foi consultado na construção desta página, com a natureza de cada fonte identificada. O conteúdo delas pode mudar sem aviso; em caso de divergência, vale sempre a fonte primária.

Incorpore esta calculadora no seu site (grátis)

Copie e cole o código no seu site. A calculadora se atualiza sozinha. O crédito ao ValorFinal vem junto do código e a gente agradece quem mantém, mas ele é opcional: pode remover sem perder o widget. O link sai com rel="nofollow", ou seja, não transfere autoridade de busca para a gente.

Perguntas frequentes

O que é um JWT (JSON Web Token)?

JWT (JSON Web Token) é um padrão aberto (RFC 7519) para transmitir informações de forma compacta e verificável entre partes como um objeto JSON. É composto por três partes separadas por pontos: Header (cabeçalho com algoritmo e tipo), Payload (dados/claims) e Signature (assinatura). É amplamente usado para autenticação e autorização em APIs.

Como decodificar um token JWT?

Cole o token inteiro no campo "Token JWT" e clique em "Decodificar JWT". A página separa os três trechos pelos pontos, converte o cabeçalho e o payload de Base64URL para JSON e mostra o algoritmo, o tipo, as datas e o payload completo. Para fazer à mão, pegue o trecho do meio, troque - por + e _ por /, complete com = até o tamanho ser múltiplo de 4 e decodifique como Base64 comum. Sai o mesmo JSON, porque nenhuma chave entra nessa conta.

Como saber se um JWT está expirado?

Olhe o campo exp do payload. Ele marca, em segundos desde 1º de janeiro de 1970 (UTC), o instante a partir do qual o token deve ser recusado; se o relógio já passou desse número, o token venceu. Esta página faz a conta com o relógio do seu computador, mostra a data no horário de Brasília e confere também o nbf, que marca quando o token começa a valer. Quem decide de verdade é o servidor: ele pode aceitar uma pequena folga para relógio desacertado (a RFC 7519 fala em poucos minutos, no máximo) e pode recusar um token revogado antes do exp.

Esta ferramenta valida a assinatura do JWT?

Não. Esta ferramenta apenas decodifica o header e o payload do JWT, não valida a assinatura. Para validar a assinatura, seria necessário ter a chave secreta (para HMAC) ou a chave pública (para RSA/ECDSA) usada pelo servidor emissor. Nunca confie em um JWT apenas porque ele pode ser decodificado, sempre valide a assinatura no servidor.

É seguro colar meu JWT nesta ferramenta?

O processamento é 100% local no navegador, nenhum token é enviado para servidores. Porém, recomendamos evitar colar tokens de produção ativos, especialmente tokens com dados sensíveis, credenciais ativas ou tokens de longa duração. Prefira testar com tokens de desenvolvimento ou tokens já expirados. Um token de acesso dentro do prazo vale como credencial até o exp: quem tiver uma cópia dele faz pedidos em nome do usuário sem saber a senha.

O que significam os campos exp, iat e nbf no JWT?

São claims de tempo padronizadas pelo RFC 7519: exp (Expiration Time) define quando o token expira e não deve mais ser aceito; iat (Issued At) indica quando o token foi emitido; nbf (Not Before) indica a partir de quando o token pode ser usado. Todos são representados como NumericDate, ou seja, segundos desde 1970-01-01T00:00:00Z. Um token com nbf no futuro ainda não vale, mesmo que o exp esteja longe: a página trata esse caso como token que ainda não entrou em vigor, e não como token dentro do prazo.

Por que meu token mostra o ano 58671 na data de expiração?

Porque o valor foi gravado em milissegundos, e o RFC 7519 exige segundos. É o erro clássico de usar Date.now() em JavaScript sem dividir por 1000. Um exp de 13/09/2026 gravado assim vira 1.789.322.083.000, e esse número lido como segundos cai no ano 58671. O defeito é de quem emitiu o token, e não da sua leitura. Quando o valor chega a 100.000.000.000, que em segundos já seria o ano 5138, esta página avisa que o campo provavelmente está em milissegundos, mostra a data na leitura correta e não conclui nada sobre o prazo com esse campo.

Decodificar o token é a mesma coisa que validar o token?

Não, e confundir as duas coisas é uma das causas mais comuns de falha de autorização. Decodificar é desfazer o Base64URL, que é codificação e não criptografia: qualquer pessoa com o token consegue ler o payload, inclusive quem inventou o conteúdo. Validar é recalcular a assinatura com a chave do emissor e conferir se bate, e isso só o servidor que tem a chave consegue fazer. Esta página só decodifica. Quando ela diz que as datas estão dentro do prazo, isso significa apenas que exp e nbf estão coerentes com o relógio, sem nenhuma afirmação sobre autenticidade.

Quais algoritmos de assinatura JWT existem?

Os principais são: HS256/HS384/HS512 (HMAC com SHA-2, chave simétrica compartilhada), RS256/RS384/RS512 (RSA com SHA-2, par de chaves pública/privada), ES256/ES384/ES512 (ECDSA, criptografia de curva elíptica) e PS256/PS384/PS512 (RSA-PSS). O algoritmo 'none' não usa assinatura e deve ser rejeitado por servidores em produção. Todos esses nomes estão registrados na RFC 7518, a especificação dos algoritmos do JWT, que também define o none.

O que são alg e typ no cabeçalho do JWT?

São os dois campos que a página mostra no quadro "Cabeçalho (Header)". O alg diz qual algoritmo assinou o token: HS256 é HMAC com SHA-256 e uma chave compartilhada, RS256 é RSA com SHA-256 e um par de chaves, ES256 usa curva elíptica. O typ costuma valer JWT e só declara o tipo do objeto. Quando o alg vem como none, o token não tem assinatura nenhuma, e um servidor bem configurado recusa esse token. Se o campo não existir, a página escreve "não informado".

O que significa "Não foi possível concluir o prazo pelas datas do token"?

É a faixa cinza que aparece quando o token traz exp ou nbf, mas o valor não serve para a conta. Acontece com data escrita como texto, com número negativo e com data em milissegundos, que aparece como um valor de 100.000.000.000 para cima. Em vez de pintar de verde um token com data no ano 58671, a página explica o defeito na caixa "Problemas nos campos de data deste token" e deixa o prazo em aberto. A correção é no serviço que emite o token, gravando o valor em segundos.

O que é Base64URL, diferente de Base64 normal?

Base64URL é uma variante do Base64 que substitui '+' por '-' e '/' por '_', e omite o padding '='. Essa variante é necessária porque '+', '/' e '=' têm significados especiais em URLs e parâmetros de query string. O JWT usa Base64URL para codificar o header e o payload, tornando o token seguro para uso em URLs.