Disseca e verifica JSON Web Tokens parte por parte.
Última atualização
Algoritmo—
CodificadoCole um JSON Web Token
header.payload.signature
Decodificado
Cabeçalho e payload aparecem aqui — os tokens nunca saem do seu navegador.
O que é um decoder de JWT?
Um decoder de JWT separa um JSON Web Token nas suas três partes — header, payload e assinatura — e faz o decode em Base64URL das duas primeiras para você lê-las como JSON. É uma ferramenta que todo dev acaba usando o tempo todo: na hora de debugar login, autorização, claims de sessão e problemas de expiração de token.
Decodificar um JWT *não* é o mesmo que confiar nele. O header e o payload são legíveis de propósito — eles estão apenas codificados em Base64URL, não criptografados. Quem garante que o token foi assinado por quem deveria e não foi adulterado é a verificação da assinatura.
Um JWT tem o formato header.payload.signature. Cada parte é codificada em Base64URL e separada por pontos. O header informa qual algoritmo de assinatura foi usado, o payload carrega as claims (quem é o usuário, quando o token expira, o que ele pode fazer) e a assinatura permite que o servidor confirme que o token não foi alterado.
O que você vai aprender decodificando JWTs
Um JWT tem três partes em Base64URL separadas por ponto: header.payload.signature.
Claims comuns como sub, role, iat, nbf e exp descrevem identidade, permissões, momento de emissão e momento de expiração.
Qualquer pessoa pode editar o payload decodificado — só a assinatura permite ao servidor detectar a adulteração.
Como decodificar um JWT passo a passo
1
Cole o token completo
Cole o JWT no campo de entrada. Ele deve ter o formato xxxx.yyyy.zzzz — três partes em Base64URL unidas por pontos.
2
Leia o header
O header informa o algoritmo de assinatura (alg) e o tipo do token. Cuidado com "alg": "none" — significa que o token não está assinado e não pode ser confiável.
3
Leia as claims do payload
O payload é o JSON com todas as claims. Procure por sub (id do usuário), exp (expiração), iat (emitido em) e por claims customizadas que sua aplicação adiciona, como role ou tenant.
4
Confira a expiração
Converta o timestamp Unix do exp para data — se estiver no passado, o token está expirado e qualquer API minimamente correta vai rejeitá-lo.
5
Verifique a assinatura (opcional)
Se você tiver o segredo ou a chave pública, cole no verificador para confirmar se a assinatura é válida. O conteúdo do token só é confiável quando a assinatura bate.
Claims padrão do JWT
Estas são as claims registradas, definidas pela especificação do JWT (RFC 7519). Qualquer aplicação pode adicionar suas próprias claims customizadas além dessas.
O header indica HS256 (algoritmo com segredo compartilhado). O payload identifica o usuário, o papel dele e quando o token expira. A assinatura é a terceira parte. (Esse é um token de demonstração — a assinatura não vai bater com nenhum segredo real.)
Verificar se um token está expirado
Claim do payload
{"exp":1710000000}
exp é um timestamp Unix em segundos. Converta para uma data — se estiver no passado, o token está expirado e um backend bem implementado vai recusá-lo.
Identificar o perigoso algoritmo "none"
Header
{"alg":"none","typ":"JWT"}
Se um servidor aceita "alg": "none", um atacante pode forjar qualquer payload sem precisar de assinatura. Sempre rejeite esse header em produção.
Erros comuns ao usar JWT
Colocar senhas, segredos ou dados pessoais sensíveis dentro do payload. JWT é legível, não criptografado.
Decodificar um token e sair confiando nele sem checar a assinatura.
Confundir a legibilidade do Base64URL com criptografia — o payload do JWT é fácil de ler de propósito.
FAQ sobre JWT
O que é JWT?
JWT é a sigla de JSON Web Token. É um formato de token compacto, assinado e seguro para uso em URL, criado para transportar claims entre duas partes — geralmente entre um servidor e um navegador, representando um usuário logado.
Como faço para decodificar um JWT?
Cole o token em um decoder de JWT, ou divida pelas posições dos pontos e faça Base64URL-decode em cada uma das duas primeiras partes. O header e o payload voltam como JSON; a terceira parte é a assinatura.
Como verifico se um JWT está expirado?
Olhe a claim exp no payload. É um timestamp Unix em segundos. Se o horário atual for maior que exp, o token está expirado.
Qualquer pessoa consegue decodificar um JWT?
Sim. O header e o payload estão codificados em Base64URL, não criptografados. A assinatura só prova que o token não foi adulterado — ela não esconde o conteúdo.
O que significa verificar um JWT?
Verificar é recalcular a assinatura usando o segredo ou a chave pública esperada e comparar com a assinatura presente no token. Se baterem, o payload é confiável e não foi modificado.
Posso guardar senhas dentro de um JWT?
Não. Quem tiver o token consegue ler o payload. Guarde apenas identificadores e claims não sensíveis, e use expirações curtas com refresh tokens para garantir a segurança.