O que este decodificador JWT faz
Um JSON Web Token (JWT) é formado por três partes separadas por ponto: header, payload e assinatura, todas codificadas em Base64URL conforme o RFC 7519. Esta versão em português do decodificador JWT faz exatamente o que o nome promete — decodifica e formata cada parte para leitura humana — sem nunca verificar a assinatura, pois isso exigiria a chave secreta ou pública, que você jamais deve colar em uma ferramenta de terceiros. O processo é 100% no navegador — seus dados nunca saem do seu computador. Sem uploads, sem rastreamento, sem logs em servidor. Ideal para depurar um access token expirado, inspecionar claims customizados do seu provedor de autenticação ou conferir se o aud e o iss batem com o esperado antes de rodar os testes de integração.
Recursos
- Decode instantâneo do JWT token. Cole o token com ou sem o prefixo 'Bearer ' — a ferramenta ignora o prefixo automaticamente e decodifica header e payload em JSON formatado.
- Destaque de claims padrão. Os campos iss, sub, aud, exp, iat, nbf e jti são identificados e exibidos com rótulos claros, incluindo datas legíveis para os campos de tempo.
- Status de expiração em tempo real. O campo exp é comparado ao horário atual (incluindo fuso America/Sao_Paulo se detectado) e exibe 'Não expirado' ou 'Expirado' com o instante exato.
- Privacidade total — zero servidor. Todo o processamento usa apenas JavaScript no seu navegador. Nenhum byte do token trafega pela rede, o que torna seguro inspecionar tokens com dados pessoais (PII).
- Suporte a algoritmos comuns. Funciona com tokens assinados com HS256, RS256, ES256 e outros — a decodificação Base64URL independe do algoritmo, pois não valida a assinatura.
- Cópia rápida de cada seção. Botão de copiar individual para header, payload e assinatura, facilitando colar o JSON diretamente no seu editor ou terminal.
Como usar o decodificador JWT
Três passos e você tem o payload legível. Sem cadastro, sem extensão de browser.
- Cole o token. Copie o JWT da resposta da sua API, do header Authorization ou do cookie de sessão e cole no campo de texto. O prefixo 'Bearer ' é removido automaticamente.
- Leia o resultado. Header, payload e assinatura aparecem formatados. Confira claims como exp, iss e aud. Se quiser fazer o mesmo no terminal:
echo $token | cut -d. -f2 | base64 -d | jq . - Verifique a expiração. O campo 'Expira em' converte o Unix timestamp de exp para data e hora local. Se o token já expirou, o status aparece em destaque.
- Copie a seção que precisar. Use o botão 'Copiar' ao lado de cada bloco para levar o JSON para o seu IDE, Postman ou para abrir um issue com o payload já formatado.
- Faça o parse programático se preferir. No JavaScript, a lógica equivalente é
JSON.parse(atob(token.split('.')[1]))— útil para entender o que esta ferramenta faz por baixo dos panos.
Casos de uso comuns
- Depurar fluxos OAuth 2.0 e OIDC. Quando uma requisição retorna 401, cole o access token aqui para confirmar se expirou ou se o campo aud não bate com o endpoint — econômiza minutos de log-hunting.
- Checar claims customizados do provedor. Provedores como Auth0, Keycloak e Cognito adicionam campos proprietários ao payload. Decodifique o token para confirmar quais roles ou escopos estão presentes antes de abrir um ticket de suporte.
- Validar formato antes de testes de integração. Times de QA em Curitiba, Salvador e qualquer cidade com acesso ao browser podem confirmar que o token gerado em staging tem a estrutura correta antes de rodar a suite automatizada.
- Inspecionar tokens com PII em segurança. Como nenhum dado sai do navegador, é seguro decodificar tokens de produção que contenham e-mail, nome ou outros dados pessoais para diagnóstico rápido.
- Entender o JWT na prática durante estudos. Quem está aprendendo sobre autenticação pode colar qualquer bearer token e ver exatamente o que iss, sub, nbf e jti significam — teoria e prática no mesmo lugar.
Perguntas frequentes
Meus dados ficam seguros ao usar esta ferramenta?
Sim. Todo o processamento acontece localmente no seu navegador com JavaScript puro. O token nunca é enviado a nenhum servidor, não há logs e não há telemetria associada ao conteúdo colado. Você pode usar com tokens de produção que contenham PII sem risco de vazamento.
Decode e decrypt de JWT são a mesma coisa?
Não. Decodificar (decode) significa converter as partes Base64URL de volta para JSON legível — não exige chave nenhuma. Descriptografar (decrypt) seria necessário apenas para JWE (JSON Web Encryption), onde o payload está criptografado. A maioria dos tokens que você encontra no dia a dia são JWTs assinados, não criptografados: o payload é legível por qualquer pessoa que tenha o token.
Por que a ferramenta não verifica a assinatura?
Verificar a assinatura exige a chave secreta (HMAC) ou a chave pública (RSA/EC). Nunca cole sua chave secreta em uma ferramenta online. A verificação deve ocorrer no seu backend ou em ambiente controlado. Esta ferramenta existe para inspecionar o conteúdo do token, não para autenticar requisições.
O que é o alg=none e por que é perigoso?
Em 2018 pesquisadores demonstraram que diversas bibliotecas JWT aceitavam tokens com 'alg': 'none' no header, ignorando completamente a verificação de assinatura. Isso significa que qualquer atacante poderia forjar um token válido. A lição: nunca confie no campo alg vindo do próprio token — sempre force o algoritmo esperado no lado do servidor, como documenta o RFC 7519.
Como faço o parse de um JWT token em JavaScript?
A forma mais direta é JSON.parse(atob(token.split('.')[1])) para extrair o payload. Note que atob não lida com Base64URL puro — pode ser necessário substituir - por + e _ por / antes de decodificar, dependendo do runtime. Esta ferramenta cuida disso automaticamente.
Por que meu token mostra 'Expirado' mesmo sendo novo?
Normalmente é um problema de clock skew — diferença de relógio entre o servidor que emitiu o token e o ambiente onde ele é validado. O campo exp usa Unix timestamp UTC. Verifique se o relógio do servidor está sincronizado via NTP e se a diferença não ultrapassa a tolerância configurada na sua biblioteca de validação. A RFC 7519 recomenda uma tolerância pequena, mas não obrigatória.