Esta ferramenta só decodifica o header e o payload de um JWT — ela não verifica a assinatura. Um token decodificado ainda pode estar expirado, adulterado ou inválido; nunca confie no conteúdo de um JWT sem verificá-lo no lado do servidor.
Processamento 100% local — o token é decodificado inteiramente no seu navegador e nunca é enviado a lugar nenhum.
Emitido em (iat)-
Expira em (exp)-
Sobre JWT (JSON Web Token)
Um JWT é um token compacto e seguro para URL, feito de três partes codificadas em base64url separadas por pontos: um header descrevendo o algoritmo de assinatura, um payload contendo claims (dados), e uma assinatura usada para verificar que o token não foi alterado. Esta ferramenta decodifica o header e o payload de volta em JSON legível.
Como o header e o payload são apenas codificados em base64url, não criptografados, qualquer pessoa pode decodificá-los e lê-los sem uma chave secreta — isso é esperado e proposital. O que a assinatura de um JWT protege é contra adulteração, não contra o conteúdo do JWT ser ilegível, por isso um decodificador sozinho nunca pode confirmar que um token é genuinamente válido.
Como decodifico um JWT e o que significam exp/iat?
Um JWT (JSON Web Token) é três partes codificadas em base64url unidas por pontos: header.payload.signature. Para lê-lo, divida a string nos pontos, decodifique em base64url as partes header e payload, e interprete cada uma como JSON — nenhuma chave secreta é necessária para decodificar, apenas para verificar a assinatura. As claims iat (emitido em) e exp (expiração) do payload são timestamps Unix (segundos desde 1970-01-01), que esta ferramenta converte para uma data legível.
Passos para decodificar um JWT
- Cole a string completa do JWT (as três partes separadas por pontos) na caixa de entrada.
- A ferramenta divide o token nos pontos e decodifica em base64url a primeira parte (header) e a segunda parte (payload).
- Cada parte decodificada é interpretada como JSON e formatada de forma legível.
- Se o payload contiver claims iat ou exp, elas são convertidas de timestamps Unix para uma data e hora local legível.
- A terceira parte (signature) é deixada como está e nunca é decodificada ou verificada, já que verificá-la exige a chave secreta ou pública do emissor, que esta ferramenta não possui.
Estrutura do JWT e conversão de timestamp
JWT = base64url(header) + "." + base64url(payload) + "." + signature · Data legível = new Date(exp_ou_iat_segundos x 1000)
- iat (issued at) = o timestamp Unix, em segundos, de quando o token foi criado
- exp (expiration) = o timestamp Unix, em segundos, após o qual o token deve ser considerado expirado
- base64url = uma variante segura para URL da codificação base64 que substitui + e / por - e _ e omite o preenchimento
Claims comuns do payload de um JWT
| Claim | Significado |
|---|
| iss | Issuer — quem criou e assinou o token |
| sub | Subject — a identidade sobre a qual o token trata, como um ID de usuário |
| aud | Audience — o destinatário pretendido do token |
| iat | Issued at — quando o token foi criado (timestamp Unix) |
| exp | Expiration — quando o token deixa de ser válido (timestamp Unix) |
Perguntas frequentes
Decodificar um JWT prova que ele é válido ou confiável?
Não. Decodificar apenas revela o que está dentro do header e do payload; isso não diz nada sobre se a assinatura é genuína, se o token foi emitido por uma fonte confiável, ou se ele foi adulterado. Só verificar a assinatura com a chave secreta ou pública correta pode confirmar que um token é autêntico.
Por que qualquer pessoa pode ler o payload do meu JWT sem senha?
O header e o payload são codificados em base64url, não criptografados, então decodificá-los é apenas uma transformação de texto reversível, não uma barreira de segurança — isso é proposital, já que JWTs são feitos para serem legíveis por qualquer parte que os receba. Por isso, dados sensíveis nunca devem ser colocados no payload de um JWT.
O que acontece se o timestamp exp de um token estiver no passado?
Um JWT com um valor de exp no passado geralmente é considerado expirado por sistemas que o verificam, e deveria ser rejeitado, mas este decodificador só exibe a data — ele não a compara com a hora atual nem rejeita nada, já que essa verificação é responsabilidade do servidor.
Por que meu token decodificado mostra um erro?
Um erro geralmente significa que o texto colado não é um JWT completo e bem formado — por exemplo, falta um segmento separado por ponto, o header ou payload não é base64url válido, ou o texto decodificado não é JSON válido. Verifique se você copiou o token inteiro sem espaços ou quebras de linha extras.
Esta ferramenta decodifica e exibe apenas o header e o payload; ela nunca verifica a assinatura, não checa a expiração contra a hora atual, nem valida nenhuma claim, então um token decodificado com sucesso não é o mesmo que um token verificado e confiável.
Sources: RFC 7519 (JSON Web Token)